Back from the Java Posse Roundup
Now that I've had a week to recuperate, and heal from my poor attempts at snowboarding, I can tell you about where I was the week before last. From the 5th of March to the 9th I was in Crested Butte Colorado for the Java Posse Roundup.
A quick bit of background. The Java Posse is a podcast (an internet downloadable radio show, essentially) devoted to Java. It is run by Joe Nuxoll and Carl Quinn (formerly of Sun, now of Apple and Google respectively), Dick Wall of Google, and Tor Norbye of Sun. They have steadily built their readership over the last year and now have enough listeners to support their very own conference. Rock! The Java Posse Roundup is a small conference they organized in Crested Butte, Colorado (a very small town in the mountains, think South Park. We just need Tom's Rhinoplasty :), with planning and assistance from Bruce Eckel, author of Thinking in Java. The Roundup was an un-conference following after the Open Spaces concept. This means it was not structured like a traditional conference and had no pre-planned sessions. Sessions are proposed and decided on the first day and can change over time. Most sessions were very open ended, starting on a particular topic but usually finishing on something else. The week was chaotic but very very fun. With only 30 people in attendance I was able to spend a lot of time with the other attendees and learn a lot about how people are using Java (and will use Java) in the future.
Also in attendance were Brian Ehman, the Java Posse intern; Robert Cooper, a friend of mine from way back when in Atlanta and author of the soon to be released GWT in Practice; and our illustrious Java.net editor (and another longtime friend from Atlanta), Chris Adamson.
Our days were structured but flexible. From 8am until noon-ish we have three session slots with an average of 3 sessions per slot to choose from. After noon we break up into groups for lunch and then have free time. Some days we would do something active like skiiing, hiking, or going to the store to purchase food. Other days we would have geek time for emails, fixing bugs, and helping others out with their code. I did a lot of the latter, of course. We would all meet again around 6 for a big dinner and discussion, followed by lighting talks in the evening where we would give five minute demos on cool things that find our interest; Java or not.
Overall I had a great time and feel that I got a lot out of the conference. This was an opportunity to connect with a lot of great people. I made quite a few additions to my address book and now have a lot of followup to do. I stayed in a rented house along with the Java Posse guys and two others. Not only was the house huge and a great place for people to come in the evening, it was significantly cheaper per person than a hotel, saving my gracious employer quite a bit of money. :)
Here is a brief overview of the sessions I attended along with my notes. All sessions were recorded by the Posse and will be up on the web soon. I'm sure I missed a couple and can fill in once the recorded sessions jog my brain.
We all learned about how an un-conference works and got settled in.
Robert Cooper and I announced AB5k, our all Java widget system project, and got some feedback. It was a small session (everyone else was inthralled in the Dynamic Languages on the JVM talk in another room) but I got a lot of great feedback. The biggest thing I took out of it is that I must focus on Java's strengths. Because AB5k is written in Java it has some great advantages over the other widget systems. Cross operating system and cross operating system version support, I18N, 3d/2d integration, multi-language support, and a robust security system are all advantages we need to leverage.
JNI: what's up with that?!
JNI is too hard to use, too slow, not well supported. Many specific issues were mentioned, including Dick Wall's problem with the JVM not using hardware accelerated trig functions but JNI is too slow to implement it yourself. This is something the JVM must do but multiple JSRs to add support for it have been shot down. Perhaps now that Java is open source someone could do it.
Flex and rich webapps / what's wrong with applets:
This went all over the place but the general consensus is that the Java plugin itself is the problem with applets and must be fixed. Flash's VM beats the Java plugin in pretty much every metric. Some interesting and crazy ideas were proposed like:
- Get the open source community to write a new Java plugin
- letting the Flash plugin talk to the Java plugin to take advantage of Java features
- write a JVM in Flash so we can run applets in Flash's vm.
In sort: Flex does some very powerful things very easily, and Apollo will let you write Flex/Flash apps that run on your desktop. Adobe has some serious people working on this and it looks great. This is something the Java community needs to take seriously, either by competing or working with it. Flex and Apollo are going to change the way people write desktop apps over the next five years.
Media support on the JVM
This was Chris' talk about the state of media on the JVM, the failure of JMF and Java sound, how Quicktime is going away, and what to do about it. The general consensus was that media, especially content creation, is very important and we must address is soon. Some ideas include wrapping some of the cross platform open source tools in Java. Things like VLC and GStreamer were mentioned.
This is Joe's Nuxoll's proposal for Java properties (originally proposed to JavaSE several years ago when Joe worked for Sun). It seems like a very clean and simple way to add properties and events to the Java language with as little breakage and non-intuitive syntax as possible. If we decide to add properties to Java we really need to look at this proposal. This was a well attended session and most people agreed that we should add properties to the language. (I'm a huge fan.) Other suggested this should be left to other languages that run on the JVM like Groovy and Scala.
Java.net vs Google code vs Source forge vs others:
I kicked off this session to discuss the relative strengths of the various project hosting sites. None of them came out on top, though I learned a lot. Google code is doing a great job at providing tools but not at providing a community. I plan to take a lot of this information back to the Java.net planning meetings during Java One. Google's issue tracker in particular is much, much better than Java.net's.
The evening lighting sessions were a ton of fun. I showed off several demos I've been working on over the last year including:
- NetBeans JSR 295 & 296 support.: I explained what the two JSRs are and how NetBeans is supporting them. Everyone really liked it.
- NetBeans menu support: I showed off the menu designer work I've been doing.
- JavaDocs from the year 2020, a mockup of what totally redesigned Javadocs would look like.
- JOGL utils: utility classes to let you quickly make 3d animations. I showed off a 3d photoviewer that shows a Flickr photostream. It only took me about 4 hours to build.
- JXVideoKit: a set of utility classes for SwingX that will let you use JMF to play H.263 (YouTube quality) video, complete with overlays, hackable drawing code, frame capture, and the ability to drop a video into a 3d scene.
- SMS support: I showed how to use a JNI library to hook into the Sudden Motion Sensor in my laptop and use it to scroll through a 3d list of photos. I must confess this was done on a dare by the aussies from Cenqua. They 'threw down the gauntlet' which means I simply had to do it. Thanks guys. You rock.
Code for the above demos will be forth coming if people are interested.
Other sessions of note include:
- Scala, a very interesting and unusual language that runs on the JVM. It makes pattern programming very easy.
- Yahoo Pipes: Ido from Yahoo showed how to use Yahoo Pipes to combine and mix RSS feeds with other datasources. Some really cool stuff. My only complaint is that they really should have called it Yahoo Tubes!
- Flex demos: James Ward, a former Java guy now working for Adobe, showed off some amazing Flex demos including a 3d album cover viewer ala. iTunes, and a 3d book with translucent pages you can flip using your mouse. Flex is very powerful and their development tools let you do a lot of cool things that look great with very little effort. And Apollo is going to do some amazing things. We desktop Java guys need to keep an eye on Flash.
- Cenqua: The Cenqua guys have some amazing tools for working with your code: clover for testing, fisheye for giving you a dashboard view of your code, and crucible for doing team code reviews. I urge you all to check them out.