Skip to main content

Java One Day 1

Posted by cayhorstmann on May 9, 2007 at 12:41 AM PDT

??? src=""
style="float: right; margin-left: 1em;" />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 limitations, 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 href=""> 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 is 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 Elliotte
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 href="">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

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 href="">superpackages
and “super JARs” that may be interoperate with href="">OSGi. More stuff to look

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 href="">jMaki and href="">Phobos. I really like JavaScript
and agree with Douglas Crockford that it is href="">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.

??? src=""
style="margin-right: 1em; float-left;" />Finally, we got some really cool
eye candy: the NASA World
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

More eye candy from href="">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 that section in 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 href="">packaging
nightmare should go away; a simple app can just put everything into a
WAR. Hooray!