June 3, 2009

JavaOne: Day 2

darkstar_logoI'm back for another recap, this time of day two at JavaOne. I managed to get up early again this morning and attend the morning keynote. To be honest, it was a bit of a yawn today. It was basically a marketing pitch for Sony Ericsson's platform and how they are making it easier to bring Java applications to their mobile platform. I could tell it was a marketing pitch because Christopher David, who drove the session said at least four or five times during the hour: "... and this is not just a marketing pitch". It is true that mobile apps are just going to grow, though, so it is a good market to move into. The session didn't do it for me though.

After the keynote, I sat in on Kohsuke Kawaguchi's session on bringing continuous integration in Hudson to the cloud. This seemed intriguing and relevant since I maintain a Hudson instance internally for Project Darkstar builds and am looking for ways for us to expand its usefulness. I was also interested to see what exactly he meant by using "the cloud". The term "cloud computing" is such an overloaded term these days and in fact I would suggest that a very small percentage of things that are named "cloud computing" actually qualify as such. What Kohsuke has done for this session though, is one of those things. Essentially, he's built a Hudson plugin that will automatically provision, configure and use an Amazon EC2 instance as a Hudson build slave dynamically and on demand based on load. So, if you have a Hudson build cluster, and your build machines are getting swamped with work, Hudson will spin up a new virtual build slave automatically and use it to help handle the additional demand. When the build queue dies down, after a period of time the EC2 instances will shut themselves down and disappear. Really slick.

After taking a break for lunch, as I mentioned yesterday I wanted to make sure I went to Josh Bloch's session on Effective Java. He talked about several topics including Java generics, enums, varargs, and serialization tricks. It was all really useful stuff and it turns out that I clearly have never really learned how to properly use wildcards with Java generics. In other words when to use List<? extends MyType>, List<? super MyType>, or just List<MyType>. This "PECS" rule, as Josh called it, is so simple that it's seems almost embarrassing that I didn't know it. Further incentive for me to read the rest of his book and overall a very worthwhile session.

In the late afternoon, I gave my newly tweaked Project Darkstar talk. I was actually really encouraged by this talk as we had I would say around 100 attendees in the room. Additionally, after the talk (which seemed to go pretty well), there were quite a few good honest questions and several people came by afterwards who were genuinely interested in learning more and doing more with the technology. In fact, there were more questions asked at the end of this talk then any other talk that I've attended so far at both CommunityOne and JavaOne this week. It's interesting too, that even though Project Darkstar is a technology specifically designed for games and game developers, I feel like it has had a much greater presence and interest at JavaOne, a Java developers conference, then at GDC, a game developers conference. That could also simply be because of the quantity and prominence of the sessions and events going on that are related to it though (including DarkChat).
Overall, it was a good day but also pretty busy and exhausting. I met up with Karl, Keith, Mike, and John for a good dinner and am now pretty much ready to crash.