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, h ype, and people over the years.
Smaller But Less Desperate
Last year's JavaOne 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 olderTitanium 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 experience.
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 changes.
Auto-boxing is one of the most fundamental new features. Basically, auto-boxing means that Java compilers will automatically "box" primitive types such as
ints into 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 worksand retains type safety.
Another popular addition is the support for true 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 personal favorite.
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
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 slidesfrom 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 onRocky 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 show.
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 standardizations.
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 ofjava.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,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 plainicky. 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 to them.
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 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 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 community.
In a big upset, the winner this year was notJames Gosling's keynote t-shirt toss with the 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 forget them.
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 there!