Surreal appeal of Sun's JavaFX for mobile
Java ME a safer bet?
True, Java ME improves matters by integrating Connected Device Configuration (CDC) and Connected Limited Device Configuration (CLDC) configurations in one SDK. But the primary goal for JavaFX Mobile, one would think, should be to flatten the playing field: provide some level of guarantee that a scripted app will run unaltered across a broad range of certified compatible phones, without resorting to pre-processor directives and the like. As these are limited-resource devices, it seems that a Fail Gracefully API should be a central part of the platform. Ease the number one pain point for Java ME developers worldwide. Unfortunately there's no such API or capability in sight.
In fact there's currently very little information to be had regarding even the differences between targeting a mobile device and a desktop using JavaFX. Aside from concerns such as screen dimensions and image file sizes, the same JavaFXScript desktop code should run unaltered on your smartphone. At least, that's what we're being promised.
However, some notes casually buried away in the 1.1 release notes suggest otherwise: the javafx.ext.Swing package isn't available in the common profile so won't work in mobile applications - this means no standard desktop UI components such as buttons, trees and listboxes.
You do get one component, javafx.scene.control.TextBox. But the richness of the desktop component set just isn't there in the mobile configuration. When you look at the existing mobile demos, you'll quickly realize the colorful, motion-blurred, willy waving - such as a custom image masquerading as a button - divert attention from the lack of GUI components.
In the meantime, Veriana Networks senior vice president of technology and JavaFX blogger and writer Jim Weaver, has written that we should start seeing "lots of UI controls" in the Common profile, anticipated "before" JavaOne 2009. Which in the meantime leaves the cupboard looking rather bare.
In theory you could integrate a proper mobile GUI toolkit such as the Light-Weight User Interface Toolkit (LWUIT), but details are currently thin on the ground. This all makes me wonder how Sun can release JavaFX Mobile to the world and call it "1.0" with a straight face. A clear case of marketing racing ahead of reality.
Window of opportunity
Sun has had a massive window of opportunity to establish JavaFX Mobile, but the current stunted release dressed up in pretty colors strikes me as a little underwhelming given the time Sun's had to work on this. Twelve months ago it could have shipped something less compelling and still had the rapt attention of the major mobile vendors and carriers.
Luckily for Sun, Microsoft has yet to show Silverlight for mobile, due for release "sometime" in 2009 and even then on a limited range of devices. Adobe has Flash Lite, which has yet to make waves, and more denials than announcements concerning a possible Flex for mobile.
How long it'll take for Microsoft and Adobe to move beyond this limbo and into real products and adoption, it's hard to tell. Unfortunately, once they do, they'll both have the tools, resources, runtimes and developer buy in that's currently not evident from Sun.
While there are many cool new things in JavaFX 1.1, developers are advised to ignore Sun's frantic hand-waving in front of a half-baked platform and avoid being an early adopter. Java ME with LWUIT is actually far more appealing - and proven - right now. ®
Matt Stephens co-authored Use Case Driven Object Modeling with UML: Theory and Practice, which illustrates how to create the ideal software design with Enterprise Architect, Spring Framework and JUnit.