Java One Day 1

???This year, I got a genuine press pass from a kindly soul at Sun. I was excited about priority seating and unlimited free booze in the press lounge, neither of which I was able to locate. But I did get to ask hard-hitting questions in the press conference. Here is your intrepid reporter's impression of day 1.


As an intrepid Ubuntu user, I was glad to see several other intrepid folks with the telltale orange screen. Actually, i turned my screen into a tasteful blue-gray, but for solidarity's sake, I should change my theme for the duration of the conference. I do love my Linux system, but I am painfully aware of its limitation, and I don't expect it to go mainstream for some time. I was quite amazed to hear that Linux was mentioned several times as a major reason for using the GPL for the open source JDK.

Somewhat off topic, last night I met a former student of mine, Felipe Ortiz, who handed me a business card with the URL of his cool blog at It is always nice for a teacher to see former students doing well.

The Morning Keynote

I am not a fan of keynotes, particularly those at 8:30 am when I am (a) awake enough to register the theatrics and executive speak and (b) find both highly annoying.

Rich Green started out with an announcement on how Ericsson contributed an open source implementation of something called IMS to Glassfish. Apparently, this is a big deal for all of you who run wireless telco operations. Not a good way to start the day. Next came the CIO of Nasdaq who was excited how real-time Java (which is actually JSR #1!) will make trading better. No technical details were presented, so I took her word for it. Next, a fellow from Sony said that we all have to watch Spiderman 3 on a Blu-Ray disk. The Blu-Ray standard includes a version of Java, which is cool, but I don't see how that grants Sony the license to torture developers with Spiderman.

Rich went on to say how NetBeans one of the most important things about Java. I do agree that NetBeans has come a long way. He said that there is a NetBeans plugin for contributing OpenJDK fixes, which sounds nifty. I'll have to check it out.

He said OpenJDK is complete, but afterwards I heard from Elliottee Harold that it isn't quite so—some pieces are still encumbered by proprietary licenses. Another thing to check out. There is an interim governing board for OpenJDK, consisting of Doug Lea, Fabiane Nardon, Simon Phipps, Mark Reinhold, and Dalibor Topic. I know Doug, Simon, and Mark to be very reasonable people, so that's a good sign. I am sorry to say I know nothing about the other two (no offense :-)) Their first task is to draft a constitution.

Rich mentioned that they were working on giving access to the TCK (used to test whether a third party implementation is compatible with Java) to "as many people as possible". That is executive speak for "not everyone". I am afraid I never quite understood why this is an issue. Why can't everyone see the compatibility suite and use it? Assuming, of course, that it is any good. It seems a daunting task to develop a reliable set of tests for the entire Java API.

F3, erm, Java FX Script

The most interesting part of the keynote came at the end. Sun wants to re-focus on Java on the desktop. As we all know, there are lots of Flash sites, but Java applets and Web Start are rarely seen these days on consumer sites. It's easy enough to see why. (1) Producing flash-like effects with Java2D is like eating soup with a fork and (2) JVM versioning on consumer desktops is a nightmare. Sure, 85% of consumers have a JVM, but lots of them are ancient or the browser integration is misconfigured.

Sun announced a plausible solution to the first problem. A Sun programmer, Chris Oliver, had produced a Flash-like scripting language on top of Swing/Java2D called F3 (which stands for “form follows function”). The marketing folks promptly renamed it Java FX Script. Say it a few times. Doesn't that just roll off your tongue?

Certainly, having an API for flashy effects makes a huge amount of sense, and it is plausible that a scripting language is more accessible to web developers than a Java API. The demos were cool. But do I want to learn yet another scripting language?

James Gosling came up on the stage and asked "Why another scripting language?" Good question, I thought. He said something about how scripting languages need to be tightly focused on the application domain.

I don't buy that. Ruby isn't tightly bound to web programming. Instead, the metaobject protocol makes it possible to define a domain-specific language. Ditto with Groovy and the XML or Swing builder syntax.

I see all the various scripting languages (Perl, PHP, Python, Groovy, Ruby, etc. etc.) trace out the same evolutionary path, accreting features such as OO, closures, and a MOP. Now that we know that, wouldn't it make sense for the Java platform to provide a common foundation for scripting language features? Java gives me “learn once, code anything” for a strongly typed language. Similarly, I would like to learn one scripting language really well, and then learn APIs and domain-specific languages as needed, for flashy UIs, web programming, etc. Couldn't Sun provide some leadership here?

In my persona as the hard-hitting reporter, I asked just that question in the post-keynote press conference. I stated that I need a bunch of scripting languages with gratutious differences like I need a hole in my head. That apparently riled Rich Green who told me in no uncertain terms that lots of different languages, each targeted for a different application domain, are the best thing anyone could want. I know he is a smart guy, certainly smarter than I am, but I am still not convinced.

The Afternoon Keynote

Danny Coward talked about what's great about Java SE 6. I'll spare you the details. He gave a bit of a glimpse about Java SE 7, mentioning superpackages and “super JARs” that may be interoperate with OSGi. More stuff to look into.

Charles Nutter and Tor Norbye demonstrated how a third party Rails app (Mephisto) runs in JRuby and can be deployed on Glassfish.

Bob Brewin promised that a "better install experience" would come to consumer desktops next year. Not a minute too soon.

Then we got a demo about web application development in yet another fine scripting language, JavaScript, with jMaki and Phobos. I really like JavaScript and agree with Douglas Crockford that it is widely misunderstood. It was neat to see how no redeployment was necessary. Just change the code in NetBeans and hit refresh on the browser.

Jerome Dochez showed a modular Glassfish v3 with a kernel of < 100KB (not quite sure what that measures) that starts up in < 500 milliseconds (with no container, of course). The kernel loaded a Rails app in 14 seconds and a Phobos app and a classic WAR file in < 1 sec. It can also load a PHP container.

???Finally, we got some really cool eye candy: the NASA World Wind geospatial browser. It's an open source project, and it can be easily integrated into a Java desktop app. I really want to try this out. It would make a great demo of the power of Java at the beginning of my CS1 class.

More eye candy from Project Iris: a cool photo organizer that is based on applets that are seamlessly integrated into the web page, with some secret CSS sauce. Apparently, it was quite a challenge to make it work in all browsers and it took several weeks of development time. Chris Oliver recoded it in F3, erm, Java FX Script—doesn't that just roll off your tongue?—in a couple of days. Either way, it was slick. If Sun fixes the applet/Web Start delivery problem, I have high hopes for a resurgence of the Java desktop.

Session Notes

I went to Josh Bloch's and Bill Pugh's puzzler talk. It was fun as always, but I don't want to give away anything since they'll run a repeat session. Just one hint: The automatic conversion from int to float is truly evil. (Every time I revise Core Java, I end up double-checking the language spec because it seems so unlikely that they would have done it that way.)

I really like JPA, and I do just enough Java EE to leverage JPA in web applications. I went to the Java EE 6 talk and didn't learn too much that I found relevant. The best news is that the packaging nightmare should go away; a simple app can just put everything into a WAR. Hooray!