For the impatient: impressive Seam and JRuby/NetBeans demos; JavaFX doesn’t look that crazy after all; performance improvements show promise; quality of the talks were consistently high and better than I recall from previous years; need to look at Groovy and Grails more.
I don’t like to make too much fuss about these events, but when I go into the first keynote on the first day of JavaOne, look around and see the size of the place (space for just 15,000 attendees this year), look at the huge screens on stage, with DJ Anon doing her thing, and then the big numbers come out: 6 million developers, 2 billion mobile devices, 11 million TVs, Java on 91% of desktops. I have to admit to being somewhat awed by the event. They do a good show. It’s not Steve Jobs, but it’s pretty good.
The big announcement this year was JavaFX. This is a blanket term covering authoring tools for “content professionals”, an environment for mobile and a scripting language. The authoring tools don’t exist yet. JavaFX Script does, and used to be called F3—a technology I’ve previously described as “nuts”. We first heard about F3 at the London Sun Tech Days, and we couldn’t understand why it existed when SVG looked to do the same thing in a similar way.
This time, we had Chris Oliver, the author of the language, on hand to explain it. His talk kicked off by asking why Java applications looked so different to Flash applications. Java has the capability to produce all the effects you see in Flash, but they’re harder to get at. Step in JavaFX Script which is component scripting of Java 2D and Swing.
And why not SVG? Well, there are lots of similarities between SVG and JavaFX Script (indeed, there’s a converter), but the dynamic stuff in SVG is a pain. That’s something I can confirm from experience.
In JavaFX Script you can do the dynamic stuff with Java (naturally), but the language also has a data binding feature (functional reactive programming, apparently). As I understood it, elements of the view are bound to elements of the model. This means there’s no listening code to write: the model changes, the view updates. There are demos, downloads and documentation over at openjfx.org.
So maybe not so nuts after all. To get that into the browser, though, needs some work. Right now you need to add about 700k to an applet download. The Java Plugin needs some work to make this better (but see the demos over at swinglabs.org; I must get round to trying out Iris). Chris Oliver wasn’t taking questions on this area. In fact, we had the impression that he had perhaps been under a bit of pressure recently: after all, the technology had a different name a month or so ago, was a side demo at London Tech Days, and now was pushed way up the conference agenda.
In related news, there is going to be a consumer JVM, presumably targeting RIA, scheduled for early 2008. The focus is on performance, both runtime and download time. There’s also work going on to modularize Java (super packages in development terms; super JARs in deployment terms).
The JavaFX Mobile announcement is that Sun have a complete mobile stack which is being offered to OEMs: it’s the SavaJe technology on top of Linux. We saw a demo running on a Neo1973, the SavaJe device, and a Nokia N800. Meh… we’ll see what comes of it.
While on the subject of mobile, just two notes: I was disappointed to see only one prototype MSA device (SE Z50i), given that MSA has been talked about for a long time; but I had a look at the Nokia 6110 Navigator, and that has a great deal of promise as a phone for location, although no WLAN and only a single processor.
Anyway, JavaFX Mobile is being placed on the cusp between ME and SE:
Probably the other headline news was the support for Ruby and Rails via the JRuby implementation. If you’re developing in Ruby (and/or using Rails), you’ll want to check out the Toy Show Part 2 from the Friday keynote or take a look at one of the online demos. Either way, you should try out NetBeans 6.
Going into the conference I was wondering which scripting language I should be putting effort into: Ruby or Groovy. Both look to be very capable. After attending the Groovy/Grails One Meet-up, and gaining some confidence from hearing the people behind the language, I think that Groovy might be more useful to me. It has the edge on integration with Java right now. What I didn’t get was an intro to Grails. Something I’ll have to try out.
Another thing that demands attention is GWT. It has a reasonable widget set, fast client development, they’ve worked on cross-browser and performance issues and browser memory leak issues. Paul blazed the trail, and we managed to hack on a GWT app for a while, getting it all working, including client-to-server serialization. I’ve not seen anything that puts me off it yet. (Interesting to hear from Google that they think a page load time of 300ms is the threshold for users to be happy. That’s the start up time they target.)
Gavin King’s Seam demo was just perfect for getting a feel for what Seam is about. The demo nicely contrasted the assumption that EJB is heavy by having a container that starts up in the IDE in less than a second. He then continued by developing a Seam web application without the need to restart the container once. Another technology worth checking out.
From other sessions…
- The Hibernate integration with Lucene looks like a no-brainer if you need to add text search to an application.
- The API for restful web services looks good. I’ll take another look when they finish the spec.
- I was at a session on deploying and scaling massive digital archive repositories. It turned out to be a vendor pitch to go buy a StorageTek 5800, but it was interesting to learn about the APIs they are building into the disk storage, with hints about this becoming an open standard. Forget files. (This could be related to Project Honeycomb.)
- NASDAQ do 100k transactions/second on the Java platform. They’re looking to use Java Real Time. Presumably for predictability.
- Mark Harriman of Ericsson said they’re basing their IMS products on Glassfish. Possibly to be called the Sun Java System Communication Application Server.
- I understand that JChav was mentioned in one session. Fantastic.
- The only session I was disappointed with was a Jini one. While the language has been changing and going forward, Jini seems (to an outsider like me) relatively unchanged since the first version. Right now to use Jini, you really need to want to use Jini.
- The Neal Gafter presentation on closures for the languages was great to sit through. Each time I hear about the proposal I understand a little bit more about it.
- The Effective Java Reloaded session (Josh Bloch again) was superb. Note to self: need to understand wildcard capture in generics, and remember that arrays and generics don’t play so well together.
So: quite an emphasis on scripting, language changes and richer UIs.