So I've just got back from my first JavaOne, and I'm sorry I never attended previously. There were some great tech. sessions and BOFs (and a couple of dire ones - specifically a JSF tech session that degenerated into a marketing session ), but best of all, I got to meet a huge amount of people, and finally put faces to a lot of familiar names. Special thanks to the Geronimo, Groovy, Tangosol, Atlassian, Solarmetric and JDOGenie guys for some long nights of entertaining drinking at the local spots.
Some of the talks that I enjoyed most were the sessions on JDK 5 concurrency and memory model changes., as presented by Bill Pugh, Brian Goetz, and James Holmes. Also interesting were the AOP-related talks. There was an interesting session full of examples given by the AspectWerkz guys, and Ramnivas Laddad gave an talk on AOP and metadata. Some examples here would have been good, but I guess that AspectJ's annotation support is still in the works, so real-life examples would have been impossible. The annotation support and syntax in AspectWerkz looks great though, simple and intuitive. I got a demo of the AJDT's (AspectJ's Eclipse plugin environment) crosscutting visualizer from one of IBM's AspectJ guys, and that looks excellent. It's nice to be able to see just where your aspect is intersecting with your code. I also confirmed that the way I'm currently using AOP in my current project is a lazy and terrible hack, and I'm a very bad man :-). The AOP panel was great, if only to affirm that AOP in general can be a very useful and powerful tool, but is also very easy to misuse. The last thing you want to end up with is a bunch of long unreadable, difficult-to-maintain code being "patched" at runtime by long, unreadable, difficult-to-maintain aspects.
JSF was a hot topic this year, and so was rich client-related stuff in general. We had some discussions on the SWT RCP stuff, plus a look at the Java Desktop Network Components project, which reminded me of Macromedia's Flex, and what they are doing with MXML (though the JDNC project is now open-source). JDNC looks interesting, it will be good to see what they come up with in the future. You can take a look at JDNC at https://jdnc.dev.java.net/.
I also found my way to the JCP awards, the words "free beer" ringing in my ears. James Strachan picked up an award for Groovy. His accepting words were "let's have more open source JSRs". Hear hear.
Speaking of open source, the debate on open sourcing Java was interesting, but ultimately kind of pointless. I can't really see one compelling reason right now to open-source Java. As James Gosling said during the debate, the bugs are all there for everyone to see, the source code for J2SE is downloadable from the website, the JCP process is continually evolving - if something's broken, I can't see it. I do think, however, that open-sourcing the TCKs might be a good idea - I don't see how this would be a bad thing for Sun at all.
Oh, and as a side note, this trip to SF was the first time I ever used Mac OSX. I think I'm converted - what an experience. I can't get over how much prettier Safari is on the Mac than its sisters (Mozilla and Firefox) are on Windows. I'm thinking of getting a PC for some (very) amateur music making, and was looking at getting a Wintel box, but maybe, just maybe....