A Look Back at JavaOne
The JavaOne 2003 developers conference shows that Java has weathered
the initial ravages of growth and is ready to mature.
Can you believe it? JavaOne 2003 was the eighth JavaOne
conference thrown by Sun Microsystems to proselytize Java. I've attended
all eight, and it's been fascinating to witness the various cycles of
technology, buzz, fear, depression, hype, and people over the years.
Smaller But Less Desperate
Last year's JavaOne
title="JavaOne2K2: Electric Boogaloo">attendance was much
smaller than the approximately 20,000 in 2001, and, well, less than half the size of the Y2K JavaOne. The feel of last year's show was definitely the worst, because so many people were in
the grip of panic or despair and the rest were, ahem, a bit unsettled.
In contrast, this year's show attendance was about the same size as last year, with about 12,000 attendees, but the mood was upbeat. People are moving forward to make things happen. Barring some new huge
shock to the system, I'm taking this as a leading indicator that we've
reached the bottom and can (slowly) start heading back up.
Apple PowerBooks are now definitively the developer's choice for laptops. At
this JavaOne, the ratio was about 50% PowerBooks and 50% everything else.
More specifically, most were the older Titanium PowerBooks, but
there was a nice showing of the new Aluminum PowerBooks. I toted
my new 17" PowerBook (the "aircraft carrier") for the entire week -- it
wasn't as painful as I expected. :-) In terms of Java, Apple's machines
support hardware-accelerated Swing, which makes for a much nicer Java GUI
WiFi wireless has become pretty huge amongst developers. Unfortunately,
there wasn't much open-access coverage at the show. I've been told that this deficiency was due to over-saturation induced by all of the
wireless users, but that's a bit lame, considering that JavaOne is supposed
to be a leading-edge developers conference and "Java Everywhere" was a
marketing mantra throughout the show.
"Tiger", the Java v1.5 release expected by next year's JavaOne, is bringing
a number of changes to the core of the Java programming platform. The push
for "generics" (AKA parameterized types, AKA "templates") has been the principle driving force behind the language
Auto-boxing is one of the most fundamental new
features. Basically, auto-boxing means that Java compilers
will automatically "box" primitive types such as
their equivalent first-class object types, such as
java.lang.Integer. "Unboxing" is the inverse conversion, but
it's unclear whether or not auto-unboxing can be added cleanly.
Now, while auto-boxing may not sound all that useful by itself, it enables
such cool things as variable-length argument lists (AKA "varargs"). The
most popular showcase for this is the upcoming support for
printf in the "Tiger" I/O library improvements. The varargs
support is built on top of the auto-boxing features, and that means that the
varags support works and retains type safety.
Another popular addition is the support for true title="Enums in 'Tiger'">enumerated types (AKA "enums"). This means that enumerated types can be used in switch statements and are completely typesafe.
A relatively controversial addition is the support for static member imports. The
basic idea is to allow the direct, safe inclusion of static methods and
fields into the current compilation unit. Personally, I don't see a
compelling reason to support this.
The language change that will likely be used the most is the extension of
for loops with a
"foreach" style construct. This is a nice clean up of the syntax and
semantics of iteration over collections and arrays. It's also Josh Bloch's
A couple of Java library projects that interested me are XAWT and Synth.
XAWT is a serious reworking of the X11 version of the AWT. Basically, the
underpinnings of the AWT were rewritten so as to get rid of the
dependencies upon the Motif and Xt native libraries. This has all sorts of
correctness and performance benefits. Synth is a new look-and-feel
framework, if you will, for creating skinnable Swing-based GUIs. While
neither of these is earth shattering, they are both part of what looks to
be a serious effort by Sun to make the desktop experience of Java-based
programs significantly nicer and faster.
I think the most important change to the Java core libraries is the
upcoming addition of the new concurrency
library via JSR 166. The effort is being lead by Doug Lea.. Doug contributed his excellent title="util.concurrent">
util.concurrent library to help seed
this effort. As one developer to another, let me beg everybody to use
these new concurrency constructs. The high-leverage, mostly easy to use,
and correct concurrency constructs can make for much more understandable
and better-performing Java applications.
Being a hard-core scripting guy for so many years, I was quite excited by
the initial blather about better scripting language
support in Java. Alas, all of that blah blah blah is way
overblown -- the support is currently only addressing working better with
scripting languages on web content, and only in some areas. That's a start,
but certainly not worth the chest-thumping hype.
Mobility is fun and it is going to be a large
market. However, handset devices are an area that's completely controlled
by and for the big players. Us small fry can carve out some niches, but
all of the real money goes to the carriers because they own the customers.
Of course, mobility and Java Everywhere! do mean more than just
phones. I suggest that people think outside the phone when it
comes to Java mobility.
All of the general and technical sessions are available as video streams via JavaOnline. Personally, I think
it's obnoxious that Sun is charging show attendees $40 for one year's worth
of access. It might just be me, but doesn't the $2000 show fee seem like it
should cover this? For those who didn't attend the show, the regular price
of $100 per year is a great price. It is nice to note that the slides from all of the regular sessions are available for free.
I'm definitely a space geek, and I even have friends at JPL, but the hoopla
surrounding Java and the Mars Rover is a bit silly. Heck,
Java is not even on any of the active mission rovers or
delivery systems! Yes, Java is currently being used for some of the ground
systems for current missions, but that's nowhere near the same thing! Java
is on Rocky 7, the earthbound test-bed rover.
Rocky 7 is running the TimeSys JTime real-time Java virtual machine implementation on top of a TimeSys real-time Linux platform. The
rover code seems to be using regular Java threads for basic processing,
RealTimeThreads for soft-real-time tasks, and
NoHeapRealTimeThreads for critical tasks, along with a
combination of memory managed in a regular Java heap and in the special,
immortal memory areas. Alas, the
Rocky 7 demo was just a video rather than actually running it around the
The Java Research License (JRL) from Sun was a bit of a letdown (and that's saying something, given how skeptical I was to
begin with). The only real benefit of the JRL to researchers is that all
of the terms have been put into this separate, relatively easy-to-read
license agreement. Be very clear that there's been no substantive
improvements in the actual license terms. Here's an article with a bunch of java.net people talking about the license.
Lastly, the JCP [] (Java Community Process) continues to be contentious. There was an interesting session at the show where a bunch of the insiders talked about
the goods and bads of the JCP. The biggest takeaway should be that the
leader of each JSR specification fundamentally has irrevocable,
dictatorial powers over that JSR. Of course, whether or not the
spec leads abuse that power is a separate issue. One of the things that
this means is that Sun has dictatorial powers over the definition of "Java,"
since they control the core Java JSRs and have extra veto rights over the
entire process. That can only lead to the simple and clear conclusion that
the JCP cannot legitimately be called an "open" process.
You know what? While I and many others (including James Gosling) would really like Java to become truly open, the fact is
that Sun created Java, so it's their intellectual property and they can do
whatever they want with it. However, they can't have it both ways. If
they are going to retain such control over Java, then Sun needs to stop
lying in calling the JCP an "open" process. Just be honest and talk openly
about the pros and cons of the JCP vs. the various other kinds of
To me, the single biggest overall announcement at this year's JavaOne was
that both Dell and HP will be bundling JREs onto all of their computers.
This is a huge end-run around Microsoft's attempts at balkanizing and
marginalizing Java on the desktop. Over time, this sort of bundling can
dramatically change the network effects of becoming much more ubiquitous
for normal users. From this perspective, the creation of the java.com portal for consumers is good support,
and a clear indication that Sun is finally starting to do something about
the needs of the end users of Java technology.
IMHO, the biggest announcement for developers is the creation of
java.net. Well, yes, I'm a bit biased, since
I was invited to help kickstart the java.net community, but I still
think that people should check it out and participate. Java Today is a portal to news,
articles, Java projects via dev.java.net, the JavaPedia via wiki.java.net, and blogs via weblogs.java.net. Don't mind the current mess, it's all in the process of being gussied up and
should just get better over the next few months.
Best, Brightest, and Lamest
Herewith are some of my selections for the weirdest and wackiest people and
stuff at the show. You can see more in my earlier blog, title="Quotes: The Good, the Bad, and the Over-hyped">The Good, the Bad, and the Over-hyped.
Silliest In-Bag Giveaway
Sun put a Sun-logo'd hockey puck in this year's conference attendee bags.
At the alumni-only fireside chat, Sun handed out a card that had
"Co-evolve" on one side and one of those cheesy, plastic-coated 3-D
pictures of a couple of cartoon characters dancing on the other.
Now, I'm not one who cares much for all of the blatant, self-serving
pap that the various keynote guest speakers prattle on about
incessantly (especially when they take away valuable time from
important and interesting people like John Gage and James Gosling).
To be clear, I love it when they convince fun wackos like Larry
Ellison to talk.
However, at this year's show, I went through the full gamut of
laughing hysterically, cringing, and stifling myself from projectile
vomiting at Saleforce.com's CEO, Marc Benioff. I'm not even going to
make a feeble attempt at describing the experience, other than to say that that
dude is just plain icky. Judging from the reaction
of other attendees, I don't think my reaction was all that extreme.
The folks at Compuware must be having some sort of acid flashback.
They had some people all decked out in tie-dyed clothes, wigs, and
"protest" signs to drone on about something that Compuware is pitching,
but I can't seem to find anybody who actually heard or listened
Biggest Development-Tool Development
Yeah, there were lots of big, flashy development tools being shown
around the show. Yes, some of them are actually useful and some of
those are actually worth the cost. However, the work on using href="http://today.java.net/pub/a/today/2003/06/10/jython.html">Jython
scripting for Ant wins in my book, for the simple reason that Ant
is being used by such a huge percentage of Java developers and
"scripting" Ant via XML is href="http://www-106.ibm.com/developerworks/xml/library/x-sbxml.html?dwzone=xml">
just plain stupid.
Most Blatantly Obvious No-Show
Where's IBM? Curiously absent from both the show and the OEM bundling
announcement was IBM. What's up with that? It's kind of hard to take
IBM seriously when they talk about their commitment to Java, when they
don't show up at the single biggest Java event of the year and don't
bundle Java on all of their machines. Hmm ... Can this all just be
due to the corporate-level combat that's going on between Sun and IBM?
Beats me, but it's definitely not helping Sun, IBM, or the Java
In a big upset, the winner this year was not James
Gosling's keynote t-shirt toss with the href="http://today.java.net/jag/" title="James' and Dale's Trebuchet">
trebuchet. Don't get me wrong, trebuchets rock as an
old-school siege bombardment device, but it's just too slow to be a
killer t-shirt launcher.
The winner was James and the rest of the fireside chat folks tossing
out, by hand, stuffed tigers representing the upcoming "Tiger" release
of Java. I had to run off to another get-together, so I didn't get a
chance to mug a geek for one. :-)
Looking Forward to JavaNine
If you're a JavaOne alumnus, be sure to schedule your arrival early enough
that you can attend the Fireside Chat. It's a great way to start the show,
and you get to ask questions directly to a bunch of the Java bigwigs. Be
sure to write down your list of questions ahead of time so you don't
Definitely use the online show calendar maker to make your own
personalized show schedule. Just be sure to print out a hard copy and carry
that with you. Getting access to a computer or WiFi connection is always
toughest when you need it most.
The trebuchet is tres chic but not very effective in terms
of fire rate and, alas, slingshots have been outlawed in California. So
James Gosling is going to be running a contest for next year's t-shirt
throwing device. They are still working out the rules and what not, so stay
tuned for more details.
If you really want to actually attend a particular session, make sure that
you get there plenty early. A large number of the most popular sessions
were put into rooms that were way too small and the
result was a lot of angry attendees. Yes, a few of them were given again,
or you can pay for and watch the video of the session but, for me, it's
just not the same.
My best advice for developers attending the show is to go ahead and skip
the keynotes in the mornings and stay up late for the Birds-of-a-Feather (BoF) sessions and things like
the Late Night extravaganza and the Urban Adventure challenge. The regular
sessions are, as a rule, mostly marketing and legal-department-controlled
junk, so are mostly good for checking out the hype and learning the
party line. The BoFs are, as a rule, where all
of the good technical discussions happen.
The best discussions are those spontaneous ones that erupt all over the
place when good people just start talking with one another. I heartily
recommend following John Gage's lead: At JavaOne, everyone is a
Brazilian! So, don't be shy, get out there and have fun! I'll see you