Apple's JavaOne BoF
Apple offered two surprise BoF's at JavaOne - a "surprise" because they hadn't previously been announced or expected and just appeared in the addendum and corrections to the JavaOne show schedule. Still, about a hundred developers managed to find their way over to the Marriott to see the show.
I got there too late to see the formal introductions on the first presentation, which was well into describing the affects of the Intel transition when I arrived. Also, if there was an NDA warning, I missed it, though the second BoF wasn't NDA and it would be impossible to enforce an NDA at these offsite BoFs anyways, so I don't seriously think Apple would say anything they didn't want to share.
The message about the Intel transition is, by and large, it just works. Of course, as a Java programmer, you'd expect this -- your code only sees the JVM, not the architecture underneath. The gotcha, of course, is that JNI native code needs to be recompiled, and you could have Java-side endianness hassles, depending on how you interact with JNI.
A little more interesting was the discussion of the various virtual machines for Mac OS X. Buried in this was the implicit announcement that 1.3.1 on OS X is end-of-life'd, as it won't be available on Intel-based Macs. If you depend on this Carbon-based JVM, it's time to work out any issues you have with 1.4.2 (or the nascent 5.0). The speakers also presented some performance comparisons of two Hotspot compilers: the "C1" that's currently available, and "C2" which apparently will only be available on MacIntel, not PowerPC. C2 is more aggressive in compiling Java bytecode into native code so it can run faster than C1, but depending on the choices it makes about what to compile and when, it may be slower than C1.
Personally, I'm still adjusting to the thought that the register-challenged x86 can so soundly trounce PowerPC to make the transition necessary, but I guess PowerPC really does have feet of clay.
They noted that the current game-plan gives them six VM's to support (and they didn't seem happy about that prospect):
|PowerPC JVM's||Intel JVM's|
|1.4.2||5.0 Hotspot C1|
|5.0 Hotspot C1||5.0 Hotspot C2|
At the end of this BoF, they also showed how to set up XCode to work with the recently-released J2SE 5.0 instead of the default 1.4.2
In the Q&A, several attendees questioned... berated, actually... Apple's decision not to back-port J2SE 5.0 to Panther or earlier versions of Mac OS X. The Apple guys replied that they're always "forward looking" and that using the newest version of the OS lets them use the latest native SDK's to deliver a better JVM. Not mentioned was the fact that this has long been Apple's Java policy: Java 1.2 was never made available on the "classic" Mac OS, 1.4.2 was Panther-or-better, etc. So IMHO, you may not like it, but at least don't be surprised.
Part 2 was a show and tell. The demo I remember best was the CocoaComponent demo, which allows you to put native graphics into your Mac Java application in a reasonably straightforward manner. The demo showed various Quartz Composer compositions running in a Swing GUI. Surely the most amusing of these was the "Aha Video", which grabbed video from an iSight, dropped the frame rate, and used an effect to convert the video to white with black outlines, effectively aping the classic "Take On Me" music video with a live source (playing the song as an MP3 helped the effect too). The demo is available on ADC, as is another CocoaComponent demo which grabs from your capture device into an AWT window... something that the QuickTime for Java community has been begging to have back after it was removed from QTJ in the 2003 deprecatastrophe.
Surely I've forgotten stuff. Hopefully someone else who attended can point out other items of interest in the talkbacks below...