Wednesday, July 12, 2006

Java ME gets pumped
I was an Economics grad student at George Mason University twenty years ago when Brad Cox was there making the idea of software components famous. He called them Software ICs and envisioned vibrant markets for pluggable software components that would enable vastly more complex and less costly systems to be designed, much as IC chips did for digital circuitry. Object oriented design got us part of the way there, but only today are we really beginning to see this vision come to life. Web 2.0 service platforms from Google, Amazon and Yahoo are fostering a new market for "mashups." The Eclipse platform, with its many hundreds of plugins, is one of the best examples today of what Cox envisioned, although developers are only beginning to catch on to the possibilities of using the Eclipse RCP framework as a service architecture for general application development. These open, service-oriented architectures support truly reusable, network deployable software components that enable applications to be assembled at Internet speed.

But what about mobile software development? When a mobile platform standard is announced it can takes years before the devices implementing the standard are released, then months more for the channel to fill and volume to build. And with a multiplicity of standards and incompatible implementations (MIDP anyone?) writing applications against all these static yet changing APIs (S60 anyone?) is sometimes scarcely worth the effort. The platforms can't evolve faster because their applications are tightly coupled to them. And even when API changes don't break them (Palm OS anyone?) most mobile platforms today don't commend themselves to the loosely coupled, multi-tier designs that are easiest to maintain and evolve. We live with it, but it's a world of pain for the platform architect and application developer alike.

It looks like this is about to change. I wrote last week about how Eclipse eRCP will bring live, on-the-fly software component updates and a loosely coupled component model to mobile devices. JSR 232 (Mobile Operational Management) will take this a step further, creating Java environments on mobile phones that can update components of the system as well as push new, discoverable services over the air for developers to take advantage of--immediately. Many of these services--HTTP, user authorization, permissions, logging, XML parsing, network I/O, to name a few--are ones that can eliminate days of repetitive coding by developers. Others can be 3rd party bundles (plugins) that provide higher levels features like messaging, network presence, mapping or PIM and expose these as reusable services that other plugins can weave into themselves. Once JSR 232 handsets hit the market, an era of mobile mash-ups will begin, combining Web 2.0 services on the network with pluggable component services on the device.

Java ME has been too tightly sandboxed for too long, allowing applications little clue as to whether they were running on a two-way pager or a Treo 650. But the work that Nokia, OSGi, IBM, and Motorola are doing right now on mobile Java is starting to make it look like a platform that could rival the power of native application frameworks--and maybe exceed them in ease of application deployment, manageability and security. Like eRCP, JSR 232 requires a CDC/Foundation Profile Java environment, more full-fledged than the MIDP VMs found on most phones today--a significant rub, to be sure. But MIDP 3 will be JSR 232 compliant. And there are new OSGi-compliant platforms like ProSyst that run on existing MIDP phones and deliver many of the same advantages I've described.

The next couple of years are going to be exciting times to be a mobile Java developer!

Comments

What I find missing is a marketplace for class/component libraries for existing CLDC/MIDP, delivered as obfuscated linkable JARs. That would have solved many development cost/time issues today, rather than in some unknown time in the future.

In this industry we tend to always favor the new, which causes e.g. the WAP Push issues spotted by MobHappy. Solving the WAP Push issues is way simpler than establishing e.g. Mobile TV, and would probably be much more profitable too. Future profit is a good way to sway investors, but not so good for today's bottom line.

Technological evolution is a good thing and inevitable, but with ~1 billion CLDC/MIDP phones on the market I simply don't want to wait for CDC and JSR 232, and neither should the rest of the industry. There's absolutely no reason to.

Posted by redsmurph at Sunday, July 16, 2006 15:52:31

Thanks for the good comment.

I know what you mean and I don't want to wait either. (And I'm *not* waiting!) But the MIDP spec doesn't support shared libraries at this time so the fact that there are a billion MIDP phones out there doesn't create much of an opening for a component market. Static linking (a la J2ME Polish) is possible, of course, but it doesn't capture the service-oriented Web 2.0 dynamic that enables applications and libraries to be updated on the fly or dynamically extend each other. Rich client mobile apps need to be as easy to deploy, evolve and interoperate as web apps. (I can dream can't I?)

One thing that's fortunate about JSR 232 is that we won't have to wait for CDC to be widely deployed: it will be supported under MIDP 3.0. Ok, we still have to wait for *that*, but at least we can expect it to become standard issue just as MIDP 1 and 2 have. And hopefully more standardized.

As for solving the WAP push problem, I suspect that Blake Engel nailed it [http://mobhappy.com/blog1/2...]. It's the UI that's the problem. It's at the root of a lot of the mobile data malaise, I'm afraid.

Posted by cervezas at Sunday, July 16, 2006 17:08:49

Hi.

More than JSR 232, JSR 248 is what I believe will make the env. better for mobile developers and consumers, assuming politics don't get in the way.

JSR 232 is a very important JSR, yes, but it will make it better for net operators, who will be able to better manage the handset (lifecycle).

ceo

Posted by eortiz at Wednesday, August 09, 2006 16:36:28

Add Comment

Comments must be approved before being published. Thank you!