JavaFX Goes Mobile
Today sees the release of JavaFX 1.1, allowing developers to put their JavaFX RIA applications on mobile phones, as well as the desktop. I talked with a few of the folks at Sun, including Param Singh, Senior Director of JavaFX at Sun, John Burkey, JavaFX Architect and Mandini Romani, who runs the JavaFX platform.
In this article I'll go through what's included in this release, as well as ask find out a little more about the things in JavaFX that I've wondered about - mostly the integration between Swing, or SWT, and JavaFX.
Ever since the release back in December, targetted at web and Ajax developers, as well as Java developers, has been well received. With around 100,000 downloads of the SDK and over 80 million downloads of he JavaFX runtime distribution, it seems that the community has accepted the first version.
What's New In This Release
Mobile developers, who traditionally created their applications with Java Micro Edition are now catered for with the 1.1 release of JavaFX. There will be a revision to the SDK, with some new things on the desktop side, but the emphasis is on mobile. The important thing to note here is that it's one SDK for both desktop and mobile. So this is really an opportunity for Java everywhere, and you can single source your RIA application with this single development model. This is a major differentiation between JavaFX and Flex, where the Flex community has Flex Lite for mobile devices.
There's a mobile emulator included to allow testing before deploying. A mobile-specific section of the JavaFX API is also provided to allow optimization and customization of your application for the mobile environment, if you wish.
Getting Partners On Board
The JavaFX runtime will be delivered to some target partners, who will be demoing JavaFX on mobile devices at Mobile World Congress in Barcelona, Spain from February 16-19, 2009. On the OEM side, the partners include Sony Ericsson and LG Electronics. Sprint and Orange are also involved, as well as two ISVs - Cynergy and MobiTV, who will be demoing JavaFX applications on mobile platforms at Mobile World Congress.
"Sony Ericsson is committed to delivering innovative and energized user experiences to our consumers, working closely with partners who share the creativeness and vision.” says Rikko Sakaguchi, corporate vice president and head of creation and development at Sony Ericsson Mobile Communications. “We see JavaFX as a natural fit to our mobile software platform strategy to enable developers, both in-house and in our ecosystem, to create superior, innovative, expressive mobile applications and services. Sony Ericsson expects that JavaFX will have a great impact on the mobile content ecosystem and plan to bring JavaFX to a significant part of our product portfolio.”
Deploy To Your Device Of Choice
There are two JavaFX deployment options available for mobile devices. One, is to have the runtime embedded on the device. The other option is to deliver "over the air". This means you would have your JavaFX application with the runtime bundles into it. Because JavaFX runs over JavaME, it can run on MSA (Mobile Service Architecture) class ME devices. Because of being built on JavaME, companies will be able to leverage their current investment in JavaME.
Of course it will also be possible for you to compile up your JavaFX application into byte code and download onto your mobile device. All those services on the ME stack and your device will be available to your JavaFX application, so you can take advantage of Bluetooth, GPS and any other services on your device. This is another key differentiator between JavaFX and other toolkits - you have as much functionality as you would expect from Java.
Building an Eco-System
It sounds to me that Sun is putting a big effort behind creating an effective eco-system for the JavaFX community. More examples will be available along the way - perhaps we'll see some developer competitions in the future, and it would be nice to have an applications store, equivalent to the iPhone store. There will be more release of the JavaFX Runtime and SDK between now and the end of the year. While JavaFX TV is expected in later 2009/early 2010, we can still expect more releases before that.
Integrating JavaFX To Existing Applications
One of the things that I've been trying to do is integrate JavaFX into existing applications written in Swing and SWT. I've seen how nice JavaFX applications can look, and I want that for my (now clunky!) desktop applications. While there's inofficial workarounds available for getting you JavaFX application onto your Swing JPanel, there still isn't an approved way of doing this. And I haven't found a way to do this for SWT at all. Hopefully this functionality will make a future release (I'd like in in 1.2!).
After talking to the folks at Sun, it is something they are considering, but it seems that the focus was on the RIA customer base (Web and Ajax developers) rather than the traditional Java developer. John Burkley assured me that these things will be possible later. He agrees it's would be great to script up a UI in JavaFX and have the same backend available without the need to completely re-work the UI to JavaFX in one go. I'm looking forward to when I can start making that transition in my Java applications.
It's going to be really interesting to see how JavaFX is received in the mobile community. It's another tough arena to crack, with Android and iPhone applications quite popular. But JavaME has been out there for quite some time. Will it provide the right base for JavaFX to find it's home in mobile devices?