I've just arrived back in Australia after spending a week in San Francisco at Sun's JavaOne conference. While I was there, I attended plenty of technical sessions and chatted with an enormous number of Java developers, but was surprised by some of the companies showcasing their ideas and products.
Sure, the usual suspects were there - including Google, Sybase and Motorola - but I was impressed by the appearance of other developers using Java to accomplish a diverse range of tasks.
Developers are doing some pretty cool things with Java, ranging from coding impressive games to relying on embedded systems for controlling sensors in robotic applications and even driving model railways.
A self-driving car called Tommy was a highlight, where myriad sensors feed a collection of embedded and real time Java systems that adjust speed and direction based on the information collected while driving. The designers, Perrone Robotics, claim that they had a budget of US$60,000 to build the machine, which took around 10 months to complete. Tommy is built around a custom dune buggy chassis with a Subaru Liberty engine and managed to achieve a top speed of 80mph (129kph) during testing. Very cool.
By far one of the most interesting - and popular - activities during the event was the JavaOne Slot Car Challenge, where competitors were encouraged to use NetBeans 5, Real-Time Java and a collection of sensors to guide a slot car around a track. The organisers provided access to a few functions that allowed the competitors to write applications that took data from the sensors and adjusted the voltage to the track, and therefore slot car speed.
The premise was reasonably simple: take positional data from the sensors and vary the voltage to slow or accelerate the car around the track. The developer (or team) with the quickest result at the end of the qualifying would have a chance to compete in the finals on Friday.
While teams spent hours optimising code and coming up with all sorts of clever ways to interact with the track, the fastest qualifier - an Aussie as it turned out - was able to achieve his result purely by relying on the provided functions and tweaking the voltage on the track. He said it was a good lesson in optimising RTSJ code while not straying from the old engineer's adage: "keep it simple".
While such intellectual exercises are entertaining - and challenging in their own right - it got me thinking about how far Java has come since its inception and made me realise why the software development industry is so unique. While most other engineering disciplines are focused around building physical machines that are for the most part inflexible, software development allows those interested to apply their techniques to construct applications that can do anything they want to. It inspires passion because it's so personal and doesn't require more than access to a PC, an IDE (many of which are now free), and some development tools. I, for one, can't wait until next year.