It’s already Thursday and JavaOne 2010 starts it’s last day. By tradition, the last day of the conference starts with a keynote mostly dedicated to cool Java technology demos and Oracle continued with this tradition. The keynote intro was presented by Ray Kurzweil, who is an author, inventor and futurist. Among others, he made major contributions in OCR and text-to-speech synthesis. His talk focused on exponential growth in information technology, which he illustrated with numerous examples. He claimed that everytime exponential growth reaches its limits a paradigm shift will open the ground for new exponential growth. For example, in the early days of computing vacuum tubes were shrunk exponentially. When this was not possible anymore the shift to the transistor opened the opportunity for exponential growth for quite many years.
From the demos only one was really remarkable and worth mentioning: Livescribe, a Java-powered pen which records what you are writing and saying. I saw the first demo of Livescribe two years ago at JavaOne and still it impressed me again. Imagine that the pen application tells you how to draw the “user interface” on paper which then allows you to use the application.
Nevertheless, I missed the enthusiasm of the previous Java technology demo keynotes (not to mention the T-Shirt hurling contest). And I have never seen such a small keynote audience at a JavaOne.
“The Merging Point of Android and Swing” was my first technical session. It was given by the David Qiao, lead developer of JIDE, a company well known for its Java and Swing components. He had a look at what Android provides for user interface construction and how some of these ideas can be applied to Swing. The talk focused on the areas of resources and themeing. In both cases he demonstrated libraries he has been developing to make life easier for Swing developers. For resources the Android approach cannot really be ported to Swing without changing the API and his solution therefore looked a bit awkward. On the other hand, he showed a nice solution how a theme can be declaratively adapted. Last but not least I learned that colors have to be localized as well, e.g. in Western cultures rising stock prices are emphasized in green, falling stock prices in red; in China it is the other way round!
The “DSL vs. Library API Shootout” featured Rich Unger (the DSL guy) vs. Jaroslav Tulach (the library API guy). The result of the shootout which luckily both survived was: use an external DSL when your users are more domain experts and less Java developers, otherwise go for a library (or internal DSL) approach. Jaroslav also gave a nice demo how you can use the annotation processor together with IDE facilities to provide much nicer internal DSL support in Java. Both speakers also emphasized that evolution is challenging regardless whether for a DSL or an API.
The topic of “What’s Happening with My Application?: Java Virtual Machine Monitoring Tool” was the project “Palantir”, a JVM monitoring tool being developed at Oracle. Very impressive stuff: it is based on DTrace which is a non-immersive technique for tracing on the kernel level. It is available on Solaris, Mac OS X and some Linux derivatives. Since Java 6 DTrace can also be used for the JVM. Palantir comprises a set of DTrace scripts tailored to the needs of investigating Java performance problems and a powerful tool for visualizing the trace log. The tracing is accurate since it is not sampling based as with typical profilers and not only shows JVM events but also events of the hosting operating system. They demonstrated a show case where Oracle had a massive performance problem which engineers had been trying to fix for quite some time. With Palantir the problem was identified in about 30 min without any access to the source code. The engineers guessed that it would have taken them at least another month to pinpoint the culprit.
My last JavaOne session was “Developing Rich Modular Clients with Java, JavaFX, and OSGI Technology”. The speaker is working for Oracle where he and his team developed a bridge between JavaFX and OSGi to create modular JavaFX clients. They used Felix as the OSGi container, defined the OSGi service interface in Java and the service implementation is developed in JavaFX script. Nice but with JavaFX Script on the way out this is kind of pointless. The poor guy learned about JavaFX Script’s demise only on Monday when it was officially announced by Oracle.