A Final Report on JavaOne 2007, Page 2
Java FX, FX Script and FX Mobile
This was, if anything, the big surprise of the keynote announcements and of JavaOne in general. After years of Java languishing on the desktop, it looks like Sun is ready to make another (perhaps it's last?) assault. With recent announcements from Adobe (Flex and Apollo - Flex is a framework to take advantage of Flash UIs in much the same capacity as Java Applets, and Apollo is more like Java Webstart, providing a way of running flash applets as desktop applications), and Microsoft's Silverlight (a flex/flash competitor based on Microsoft's .NET technology), Java FX might well be the last chance for Java to make an impression in this space.
It is easy to be confused by the initiative though. The new FX branding is being applied to a number of different pieces of the puzzle. For one, there is Java FX script - a new scripting language that favors declarative creation of slick Java based UIs, and drawn from the work Chris Oliver has done with F3. As you would probably expect by now, Java FX script is open source.
There is also Java FX Mobile. This is a next generation mobile device (particularly phone) platform that runs a full Java VM on top of a Linux base, and includes technology that Sun recently acquired from SavaJe (a company that was trying to realize the same stack, and who's phone won a Dukie award and made a big splash at last year's JavaOne). For me, this is a very exciting announcement. An open source and developer friendly next generation mobile phone platform should be enough to wake anyone up. With Apple's iPhone capturing much interest right now, but reportedly with a fairly developer hostile stance, having something that I can write really useful and powerful Java applications for will win my vote and dollars. Not only that, but the prototype demonstrations looked beautiful, and the Java FX devices should be available in a number of configurations with different features (and price tags) so you can choose the entry level that you are happy with.
From the keynote announcements, you could be forgiven for thinking that these were the only pieces to Java FX, but as we found out in subsequent interviews and conversations, there is much more. For one thing, in order to compete against Flash in the web space, there are issues with the Java applet experience that must first be addressed. A large download size, slow startup of applets and a less than ideal JRE download and install experience must all be improved upon to give Java FX a fighting chance. Sun is well aware of these issues and is working hard to sort out the problems - in fact there are already reports that the next update of the JRE will have a greatly reduced download size (between 3 and 4 megabytes) and will seamlessly download extra modules as required and a better user download experience as well.
It is worth remembering that Java doesn't necessarily have a late start on all of these fronts. There is work to do for sure, but also remember that Java has a number of advantages in many areas. For one, the Java VM has better raw performance and a wealth of libraries (including third parties) that give it an advantage over its competition. For example, at present it is not really sensible to try and create a real-time, powerful audio processing filter in, say, flash while it is eminently possible in Java. For another, Java has a strong foothold in the mobile and embedded space which Flash and Silverlight do not enjoy (although the foothold is largely based on a very limited form of Java right now).
Will Java FX be a success? I believe Sun's commitment to it is strong - this will not be something abandoned lightly because if they do, any credibility Java may have on the desktop will evaporate. I hope it will be enough, Java still offers a lot on the desktop that is not possible with flash (yet) and has a much better cross platform story than Silverlight/.NET (someone should tell Microsoft that Windows and Mac OS X is not a full cross platform story - what about Linux, Symbian, and so on?)
Java Real Time 2.0
The Java Real Time System version 2.0 was also announced. This is the historic JSR 1 (the first new feature to go through the Java Community Process (JCP) and was announced in the version 1.0 reference implementation at last year's JavaOne. This version brings real-time garbage collection (previously using the real time system required extreme discipline with memory usage, most memory had to be declared up-front and there could be almost no heap activity during the run time). Also, the NASDAQ usage of Java Real Time was showcased (150,000 transactions per second).
Not really about the Java, but more about the conference, the aim was to make JavaOne 2007 a carbon neutral conference. During the course of this, some discoveries were made that led John Gage to question the cost for offsetting carbon (is it enough - it almost certainly isn't yet). Anyway, it is heartening to see this kind of effort being made - I wonder how many people traveling to the event also offset their emissions?
Curriki and Engineers Without Borders
Continuing the feel good message, Sun talked about two new initiatives. The first - Curriki - is aimed at being wikipedia for education, providing international resources for K-12 learning (although not all countries use the K-12 curriculum so it will be interesting to see how this is incorporated). Also Sun announced that, along with the UN, it would be setting up an Engineers Without Borders program similar to the Doctors without Borders.
Day one after lunch also brought the Sun technical keynote that delivered a bit more meat for us developers who like to see code. There were several standout demonstrations in this keynote including JRuby in Netbeans running a real Ruby application (a popular blogging application that was run unaltered).
Also, NASA demonstrated World Wind - a Google Earth like application written (now) in Java. The original was written in .NET and ran only on windows. The new version is impressive - very fast performance, cross platform execution, and fully open source. In fact the viewer is a swing component and can be embedded in other applications very easily - there was a demo of this using a simple Java flight simulator with the real world data from World Wind - this makes for a pretty realistic world to fly though.
The other standout, not just of the technical keynote, but also of the conference (in my opinion) was the SunSpots. These are small devices, about the size of a compact cell phone, that have sensors and servo controllers on board, and run Java. They also have wireless networking and the ability to set up mesh networks, and a whole host of other neat features like built in accelerometers. They are a robot enthusiast's best friend and quite a bit more capable than the popular Lego Mindstorms. The price is perhaps a little high right now ($550 for a pack consisting of the sunspot and two extra sensor units) but I must say the price seemed less outrageous after I saw them first hand (they are really, really nice). Perhaps in time a more commodity priced package will be available.