At the JavaOne 2011 conference, the biggest news of the Tuesday came during the Java Strategy keynote, at the Hilton hotel San Francisco. Nandani Ramani had another of those JavaFX demos, which demonstrated JavaFX 2.0 running on a Apple iPad 2.0, a Samsung Galaxy Tab 10.1 running Android 3.1 and, get this, a Acer Windows 7 tablet.
So people, if you really want JavaFX 2.0 running embedded on iPad, or on Android then you need to support Nandani, in order to her to convince her bosses. Oracle will listen to community as they eventually did by announcing they were going to open source JavaFX, first the component and then followed by the platform also at the keynote, and most importantly publicly. In short, shout, holler and scream at me, any other JavaFX advocate (Stephen Chin, Jim Weaver), and at Nandini her self and in order to get Oracle get JavaFX on iOS and Android on the official roadmap.
JavaFX 2.0 Fish app running on Apple iPad
JavaFX 2.0 running on a Galaxy Tab 10
JavaFX 2.0 Fossil Game running on a Acer Windows Tab
JavaFX 2.0 Ports
Much later in the day, I attended Richard Bair, JavaFX architecture, I dug a little deeper into JavaFX 2.0 running on the iOS devices and the other tablets. Michael Heinrich also helped answer some of my questions.
In order to run JavaFX 2.0 on iPad, the JavaFX team, used a special Java ME virtual machine CDC (Connected Device Configuration) internally. It was non-optimised and not performance tuned [as these research just-in-time software projects tend to go] and not ready for production. JavaFX 2.0 code including Java classes therefore executed on a virtual machine, which was distributed with the iOS app. In fact, Michael Heinrich said that they only managed get the demo on the iPad working one week before JavaOne 2011 and had a month or two to figure out how to do it and then make it happen. How big this app and the CDC in terms of megabytes? The answer was not clear. However, Oracle have a great European team who are used to porting, cross-compiling Java ME and CDC implementations to many strange embedded devices. The great thing about JavaFX 2.0 architecture, meant they only had to hook into Apple’s OpenGL implementation, which everyone knows is OpenGL ES 2.0 or better etc. Nandini Ramini also pointed out in the Tuesday keynote that Adobe has been at least one year doing this for a year with its own products.
On Android 3.1 based Samsung Galaxy Tab 10.1 there JavaFX team silly whipped out the Prism and Glass tiers in the JavaFX architecture, and replaced it with implementations that talked to the native Android graphics layer. For Android developers like myself, now, this made sense, because has Android has a rather decent array of Graphics primitives and also OpenGL graphics API support. It also already has Java 5 compilation and byte code transformer and virtual machine interpreter of its own, Dalvik Virtual Machine. In other words, this was already technically doable to the knowledgeable.
Not surprisingly, the Windows tablet demo required no changes, as the JavaFX 2.0 runtime and JVM already runs perfectly on Windows 32/64 devices.
For all of these devices, the only stumbling block is the non standardisation of any sensors or multi-touch screen API (see later on)
Myself on Progressive JavaFX 2.0 Custom Components on Monday 5:30PM (taken by Eric Smith)
A memorable quote from Hasan Rizvin: “Oracle people have starting dressing down and Sun people have started dressing up.”
The OpenJDK is the only place to find a preview build of Java 7 (JDK 7) for Mac. According to Richard Bair, chief JavaFX architect and Oracle employee, said that the preview compiled and installed flawlessly on his Lion based MacBook Pro. JDK7 previewer for Mac OS X is available to download today.
Regarding OpenJDK governance, Simon Phipps aka Webmink had this assessment published on February this year. These differences in transparency and organisation have not prevented new companies joining the initiative, because at this year’s JavaOne 2011, Azul and Twitter both announced they were joining OpenJDK. Read the official Twitter blog entry by Chris Aniszczyk of engineering.
Twitter have a business that is depends severely on Java being tuned for performance, as you can see yourself in this job position for Senior Java Virtual Machine Engineer in San Francisco. The requirements for this full time position included MSc or PhD degree, hands-on JVM development experience, debugging, Java,C, and C++, and performance tuning skills. So it is not surprising that Twitter want to get further involvement with the future of Java, by joining the OpenJDK project, as well make modification themselves to the garbage collector (G1). Indeed, Rob Benson of Twitter said “it is important to have a runtime for multiple languages [Java, Scala and Clojure]”.
Azul have been building pause-less garbage collector JVM implementations since the announcement at QCon London 2011 or beforehand. It was no surprise that they wanted to join the OpenJDK project.
The keynote also featured the British chipmaker, ARM, which was definitely interesting. They are looking into JVM development and helping their customers with improved support and services.
Jim Weaver talked on Monday about "The Return of the Rich Client”
Openness and Standardisation
Less welcomed was the news that Java 8 had slipped the release schedule for another year until 2013. Adam Messinger announced JDK 8 will have full platform modularisation, libraries, fully retrofitted for continuations, and giving the JavaFX 2.0 demonstrations at the keynotes. Mark Reinhold and Adam Messinger both said JDK 8 will have more time to cook, which may be enough time to a device APIs to JDK 8, e.g. GPS array sensors, accelerometer and magnetometer; and multi-touch screen. Oracle may surprise with Near Field Communication API. (Again this is where the community have to shout they want this)
The JavaFX 2.0 Roadmap has been updated to included strategies for Mac OS X and Linux. (Hopefully we will get Solaris in there too) It is clear that Oracle want JavaFX to be open sourced, it will be under a GPL 2 and Classpath restricted license. This news was really well received by the developers.
Demo of a couple of games, Fish and the Fossil puzzle game, running with no modification on iOS and Android devices turned head. Developers are too long in the tooth to know that the devil is in the detail, and Oracle themselves have said, that this is not in the official roadmap.
Oracle’s strategy is to get Java ME, Java for embedded and Java SE to converge, because want to reduce the number of Java virtual machine Hotspot implementation to at least three codebases. With the modularisation piece in Jigsaw, and a modular HotSpot engine they can swap in and out the necessary adaptation for target devices. Seen or heard something like this before? I think some of you already have, if not then go and listen to Software Engineering Radio podcast, I suggest the episodes on Feature Oriented Software Development (Episode 172 and 173 of SE Radio with Sven Apel) and Product Lines (Episdoe 153 Jan Bosch on Product Lines Software Development) and I also think Software Archaeology (Episode 148 Dave Thomas) may be appropriate.
JavaFX Architecture talk Richard Bair
Sessions of the Day
JavaFX Architecture with Richard Bair, which explained the underpinning construction the SDK and the Prism runtime. JavaFX application sit on a runtime that includes the scene graph implementation. Did you know there are two scene graph trees (or forests)? There is one for the applications and one dedicated privately to the rendering. Keeping the two in sync, is what the runtime does, and it means two different threads can be running in parallel. One is the rendering “Pulse” thread and the other is the synchronisation of data between the two trees (or forests). As I alluded to a above, the JavaFX architecture, under-layers, the PRISM and GLASS tiers can be swapped out. Indeed, there is a PRISM module for Direct 3D (Microsoft Direct X) , another one for Open GL and finally get-out-of-jail software rendering implementation.
Jasper Potts and Jonathan Giles presented JavaFX UI Custom Controls, which explained the latter explained how to write stylised components and use the JavaFX cascading style sheet. This session provided insight into write styled component myself. I shall be passing on the knowledge.
Kevin Rushford with Chen presented on JavaFX Mixing 2D / 3D Made Easy. This session was great for 3D demonstrations including the new DEPTH_TEST parameter flag. JavaFX supports 3D now in the scene graph with the painter algorithm, which implemented through hardware. The depth test feature always programmer to disabled, enabled or inherit for each node. Automatic support of back culling surface elimination and Z ordering of shapes is not ready in JavaFX 2.0.
Meet The Java Posse was another fun and amusing podcast live episode. It started out confused, because the audience did not get the logic about how many years have you been at JavaOne? It should have been “how many years have you been attending JavaOne? If you have been here at least one year then clap make some noise. Two years? Three years?” The funny thing was here, a lady who was part of the GP Johnson staff, the conference organisers raised her hand for 15 years. That is a long time to be attending Java conferences and she was not a techie!
Meet The JavaPosse
JavaPosse after party at the Underground Urban Tavern in the Hilton
Java Champions Party at Sens restaurant
PS: Bloody Microsoft Live Writer! Thank goodness for Igor Ostrovsky, Microsoft Parallel Computing Team for posting, How to recover a lost post in Windows Live Writer!
PS PS: I would have loved to have gone Sven Reimers’ session on JavaFX and Scala 2.9.x presentation. However I am going to get the low-down from Stephen Chin who created with Sven the ScalaFX domain specific language implementation around FX project later on. I will definitely join Sven and Stephen as a committer on that project very soon. ;-o