Thursday, July 24, 2008

The Next Ubiquitous Platform

** I had written this post on 07/10/2007, but never published it. Scarily, it still seems valid a year later... **

It's clear that the next ubiquitous computing platform is going to be a mobile one. It's also clear that it won't be Apple's iPhone since it is a proprietary closed platform, and historically, only open platforms like the Apple II and the IBM PC have attained ubiquity. The last pretender to the throne was Palm, but delays in incorporating modern features like multi-tasking and multimedia support, have relegated it to an also-ran. It also seems likely that the next ubiquitous computing platform will incorporate the two heavy weights of the Open Systems world - Linux and Java. So, could the next ubiquitous computing platform be JavaFX Mobile?

It's been two months since Sun announced this confusingly named JavaFX Mobile product at JavaOne 2007. Based on technology aquired from SavaJe Technologies, JavaFX Mobile is a "Java Phone" product from Sun that consists of a proprietary application layer, a CDC Personal Basis Profile and a small Linux kernel. Contrary to what you might believe, JavaFX Mobile is not part of the JavaME family of specifications. Unfortunately, Sun did little to clear up this confusion at JavaOne, often equating JavaME to JavaFX Mobile. In reality, JavaFX Mobile is actually an implementation of a JavaME + Linux stack, with proprietary extensions. (Besides equating JavaME to JavaFX Mobile, Sun also equated JavaSE with Netbeans and JavaEE with Glassfish. Very Annoying!)

JavaFX Mobile is so named, because it will be able to run applications written in JavaFX Script (formerly known as F3). This aspect of JavaFX Mobile was hyped no end at JavaOne, even though the support for JavaFX script was actually hacked together only a couple of weeks before. It showed, when the demos failed spectacularly on stage. Hopefully in the future we will be able to see a working implementation to judge if it lives to the hype.

Sun intends to license JavaFX Mobile as a binary product to phone manufacturers. Sun claims that this will decrease fragmentation, as phone manufacturers will now have a "standard" JavaME implementation to use in their phones. But Tier-1 phone manufacturers like Motorola and Nokia have already decided their Linux + JavaME stacks. At the most, second tier phone manufacturers looking to clone the iPhone may license JavaFX Mobile. So if anything, JavaFX Mobile will increase fragmentation by adding another JavaME implementation into the mix.

SavaJe Technologies had been working on this Linux + JavaME stack since 1999, but was unable to get any device manufacturers to adopt it. What makes Sun think that they will do any better? Do they really think that by simply adding support for JavaFX Script device manufacturers would be lining up to license it? And how do they intend to compete against mobile Linux distributions like OpenMoko, Access Linux Platform, UbuntuMobile, Greensuite, WindRiver and Mobilinux? Or against mobile application frameworks like Qtopia, Hiker and Maemo? Or even against IBM's J9 CDC implementation?

JavaFX Mobile is not all bad. The technology behind it is certainly impressive - it even implements telephony services in Java! And it looks visually stunning. Who knows? Maybe Sun will even deliver on the support for JavaFX Script and other multimedia technologies. But the question remains: How is Sun going to get JavaFX widely adopted?

I think it's possible, but not in it's current incarnation. IMO, Sun needs to target mobile Linux distributors instead of device manufacturers. For that, they need to break JavaFX Mobile into it's component parts: Linux kernel + CDC implementation + application layer, and license them individually. That way, mobile linux distributors can choose the parts they're interested in and integrate them into their distribution. Having just the JavaFX Mobile CDC implementation be the standard JavaME implementation for all mobile Linux distributions would go a longer way towards solving the problem of fragmentation than Sun's current approach. Finally, Sun needs to start acting like a responsible member of the mobile Linux community and join the standards organizations like LiPS, LiMo, MLI, and CELF. When you're too late in the Mobile Linux game to compete, you must collaborate!

In conclusion, I don't think JavaFX Mobile will be the next ubiquitous computing platform. But if it is broken up, I'm sure that the next ubiquitous computing platform will incorporate parts of this cool technology.

What do you think will be the next ubiquitous platform?


Anonymous said...

looked promising, but the reality is that Java ME is here to stay and is strongly entrenched. If they think JavaFX Mobile will replace Java ME, they are strongly mistaken. What they should do instead is keep the Java ME marketing moniker and simply extend Java ME to high end phones via JavaFX Mobile.

enaiel said...

I don't know how I missed this article. Apparently they decided last October to port JavaFX Mobile from JavaME CDC to JavaSE! No idea if it's going to be a full blown JavaSE or a stripped down version. Talk about a confusing product!

Wendong Li said...

I do not think Sun indicated Java FX Mobile is part of Java ME family. In contrary to the JCP driven Java ME, Java FX Mobile clearly is Sun's proprietary solution. It sounded exciting when it was first announced in JavaOne 2007. But with Android from Google, which is another Java stack on top of Linux (although it can not be called Java officially), Java FX Mobile is less attractive now. Plus I think Java FX Mobile did not move quickly enough in the past year.

enaiel said...

I watched the Javaone 2007 talks online, and they did equate JavaME with JavaFX Mobile.

You're right that JavaFX Mobile is proprietary, moving slowly, and has lost it's initial buzz.

Android is another beast altogether, and cannot be called a Java stack as it doesn't actually run Java...

Wendong Li said...

It does not run Java bytecode, but Dalvik. Dalvik virtual machine is based on Apache Harmony, the open source Java SE from Apache. And the source code a developer will write is exactly the same as Java and with .java extension. I do not care about the official name and underneath bytecode. As long as I write Java code, I will call it Java. ;)

And the great part is that with Android I can use Java 5 features. With Java ME CDC, the latest version is still stuck on 1.4. With Java ME CLDC/MIDP, it probably never make to Java 5. MIDP3 is likely to the last version.

That being said, I am not saying Java ME is bad. It is the most ubiquitous mobile platform out there. With MSA and a rich collection of JSRs, it will stay as a leading mobile programming platform for a while. But I would like to see new competitors emerging in the market, like Android.

enaiel said...

The biggest problem I have, is that I don't want to write code for multiple platforms. Unfortunately, code I write for Android cannot be run on any other mobile platform. It maybe Java, but it might as well be C++ on Symbian. That's the main reason why I will be sticking with J2ME for the foreseeable future, while of course, keeping an eye open for the next ubiquitous platform ;)