JavaFX preview highlights critical weaknesses
Potential riches uncertain
Review Sun Microsystems recently released  the JavaFX Preview SDK. I decided to revisit  what is Sun's last, best hope to recapture both the desktop and the browser in the face of stiff competition.
The big question with Java FX is why anyone would want to adopt it when they've already got Adobe Systems' Flex and Microsoft's Silverlight, which is doing rather well in presenting the Beijing Olympics .
On paper, the most compelling feature could be the most difficult one for Sun to pull off: the ability to run the same JavaFX app unaltered on both Java Standard Edition (Java SE) and Java Micro Edition (Java ME) runtimes.
The Laszlo factor
Whether this pseudo-multi-platform approach turns out to be practical in the long run is another matter. Any program of a significant size is bound to step outside the rosy JavaFX garden and make use of the "core" Swing and Java APIs, shackling it to your desktop. We won't find out to what extent Sun can achieve their lofty ambition until Java ME support appears, which at the last estimate is Spring 2009.
As far as this preview release goes, tools remain both JavaFX's strength and weakness. NetBeans 6.1 with its JavaFX plugin and Java 6 Update 10 (currently in beta) together offer a compelling development and deployment platform for rich client applications.
The NetBeans plugin has a nice live preview feature in which any change to the code causes a recompile and re-view of the applet. Nice to see, but I could imagine most developers switching this off soon after the initial "ooh aah" reaction - and after their code size goes beyond, say, 10 lines.
The lack of a GUI editor until at least Spring 2009 could well be the clincher for developers weighing up between Flex and JavaFX.
Sun claims to be working closely with third parties to provide rapid application development (RAD) tools in addition to the NetBeans visual editor and - apparently - we can also expect an Eclipse add-in, although I couldn't get a clear answer from Sun on a release date when I asked. Providing vague hints about the cloudy future is not a good way to win developers' hearts and minds.
No match for Adobe: a JavaFX demo app
New in the preview release is a sample weather application: at last, JavaFX is starting to look the part. Unfortunately, "the part" in this case is some disappointingly jagged text and some animated clouds, which slow to a crawl if you leave the app running for more than a few minutes. The Today/Tomorrow switch is a little odd, too. Click on Today, and the display switches back to Tomorrow after less than a second - in time with the cloud animation, in fact.
The demos available online are similarly underwhelming. Find your way through the bizarre javafx.com  website (which obeys no usability guidelines) and you may eventually stumble upon their demos page. Hint: the link is hidden at the bottom right, in grey text on a grey background.
Your perseverance will be rewarded with a grand total of two extremely minimal demos. The poster-child demo involves some underwhelming squares being drawn - the sort of thing that could be done in Flash years ago. The second demo, stock quotes, seems more promising but turns out to be a hardwired table with some static graphs and a nasty white background. You'd expect it to be possible for the table to be sorted or to have a column that can be dragged, to demonstrate the near-effortless ease of use of the table component.
Compare this with Adobe's Flex 3 Dashboard  (Flash required) and - well, oh dear. While you're there, compare Sun's rotating squares and Static Quotes demo-ettes with these Flex samples , and you'll quickly see that Sun is in danger of failing to live up to Sun's promises over the long term.
Flex is also currently leading the race with browser integration. One of the main criticisms of Java applets from the early days was that they didn't mix well with the page they're sitting in. A web designer changing the visual style - typeface, line thicknesses, colors and so on - would modify the stylesheet, but the applet would still look the same as before, requiring re-coding, recompiling and redeploying.
The obvious answer would be to add support for external stylesheets to Swing: and this is the approach that Flex takes. The result is sublime, putting control of the application's look and feel in the hands of the web developers.
I asked Sun's JavaFX senior product line manager Jacob Lehrbaum if stylesheet support will be available in JavaFX anytime soon. He sounded as if he really wanted to say "yes", but couldn't make an announcement just yet. Unfortunately, this sums up Sun's effort with JavaFX so far: lots of potential and lots just over the horizon, just out of reach and threatening never to actually come into view.
OK, let's be charitable. This is only a beta and the demos are just that - demos. The real thing should be much better - we hope. JavaFX could, and really should, do well because it offers the chance to have applications run on the desktop and mobile, unaltered. Who can argue with that?
From what I've seen so far, though, JavaFX isn't a viable option when set against the competition, and it has a long way to go. And JavaFX won't be viable until it has its GUI editor - next year. Let's hope there's still a race for Sun and JavaFX to run in by then. ®
Matt Stephens  is co-author of Use Case Driven Object Modeling with UML: Theory and Practice , which illustrates how to get from use cases to source code and tests, using Spring Framework, JUnit and Enterprise Architect.