First, the good news. Java on mobile phones has been a palpable success. Installed on eleven billion mobile phones worldwide, Java ME is one of the most widely available software development platforms - ever.
Its APIs are powerful and a pleasure to program with (as long as you're targeting a single device, of course). Also, the Sun Microsystems team did a sterling job of integrating NetBeans with connected profiles, making it easy to create MIDP apps - MIDP, or Mobile Information Device Profile, being the most common Java ME profile for phones.
At this week's OpenWorld in San Francisco, California, Oracle chief executive Larry Ellison's hucksters will be pushing MIDP hard. In theory, MIDP has a compelling story: as a single layer in the phone stack, it can go places Google's Android - the subject of law suit launched by Oracle - can't. Pretty much any modern phone can have a MIDP implementation, and most do.
Victim of history
And yet, developers don't seem to like MIDP. Corporations aren't interested in creating products for it, and it's just never enjoyed the same "fanboi-ism" as Apple's iPhone or Android. Despite its short history, Android already has over 80,000 apps available. By comparison, considering the number of MIDP devices out there, the rolling tumbleweed state of Java ME development suggests that something has gone horribly wrong.
Java ME is a victim of history. As a first-mover in the mobile phone market, it's the product of an era when phones were far more limited. In those days it was necessary to provide a hobbled language with certain packages and API functions missing.
But times change. Increasingly, bemused developers have asked why they couldn't now have the full Java SE on their phone. After all, OSX can be squeezed into an iPhone, and Linux plus the awesome Dalvik virtual machine fit neatly into a growing army of Android devices, while scaling seamlessly up to tablet size. Android runs a subset of Apache Software Foundation's (ASF's) Project Harmony, and implementation of Java SE, with the Dalvik VM.
Java ME was also a victim of circumstance. Instead of being a phone's software stack, it slots neatly into a manufacturer's own stack and operating system. Its reliance on differing implementations of phone and operating system services provided by different manufacturers has resulted in fragmentation sending developers ducking from the shrapnel.
Research in Motion kept the signing process in-house... no third party demanding your money for essentially nothing, on the basis that they exist and that they've deemed themselves to be "trusted".
Developing a MIDP app doesn't just mean creating one application, it means creating and testing on every single different device that you want your app to be available for, and hacking your app to cope with the differences. Frankly it's a nightmare.
The Java Verified program shoulders much of the burden for the decline of MIDP. Awkward for developers, expensive for their employers, impossible for open source or "bedroom coder" hobbyists, it seems designed to make MIDlet deployment a misery.
Those of us who questioned why Sun never managed to capitalize on Java should look at the signing issue. When Sun upgraded to MIDP2/CLDC1.1, they contracted out the certification and testing to third-parties, who could then charge whatever they wanted to sign and test your application.
Research in Motion, by contrast, kept the signing process in-house: pay them the princely sum of $100 per year, and that's that. No third party demanding your money for essentially nothing, on the basis that they exist and that they've deemed themselves to be "trusted".
But above all, Java ME is in desperate need of an official, central app store targeted at non-technical phone users. The Java store currently only caters to desktop Java apps and isn't even available outside the US. Without this essential component, Java ME development will never, ever come alive.
Despite the saddening story of Java on phones, and Oracle's attempt to keep it that way, it is now possible to write Java applications for a growing range of smart phones.
Frothy-mouthed developers can't seem to stop writing Android apps. It helps that Android has its own mascot, the grinning green robot that looks like it's about to start 'dissing mashed potato and selling you its powdered variety. But more practically, the platform fragmentation that has so beset Java ME doesn't seem to have affected Android quite so much. That's because Android controls the entire software stack and Google seems prepared to stand up to the nakedly self-serving phone manufacturers.
Meanwhile, another great Java ME barrier is nimbly avoided: app signing is simple and costs the developer nothing. You can use self-signed certificates to sign your applications. No certificate authority is needed.
Where's the jobs?
The only issue so far, is that the Android developer frenzy hasn't translated into an active job market. Aside from the occasional company employing someone to maintain a mobile version of their software, the majority of Android developers appear to be uploading weekend-coded apps to the marketplace in the hope of cashing in on their hobby.
The unstoppable marching Android paints a brutally different picture from the unhappy Java ME mouse. Java 2 ME - before it became just Java ME - was strong in 2004 compared with the ghost town it is now.
Of course, Java ME profiles will continue to hold a key position in low to mid-range phones - in other words, phones that are not Android or the iPhone. It'll likely be strong, too, on RIM's Blackberry. But for a product's market to be defined in terms of territory that its competitors have deigned to leave untouched, speaks ill of its future.
And if Java ME is to gain any meaningful developer mind and marketshare, Larry will need an extra-special announcement or three up his sleeve at OpenWorld. Namely: a full, uncompromising Java SE implementation, a unified MarketPlace/AppStore so users can browse and download apps over the air, and a single, powerful device configuration for smart phones.
With these three developments, and the backing of all the major phone manufacturers and carriers, Java ME could quickly become a serious contender. Without them, it'll remain a victim of history. ®