Robert LeBlanc, General Manager of IBM's WebSphere division, is giving a keynote at JavaOne today (starting just about now) focused on the importance on open source and open standards development with Java. I regret I'm missing it myself (stuck on the East Coast this week); fortunately, thanks to Rawn Shah and Andy Dean, I got the scoop on what he's presenting today: A demonstration of how aspect-oriented programming can be applied to existing code to add open source software components.
The demo, created by Matthew Webster in IBM's Hursley Lab in the UK, highlights the concept of remixing existing projects with new features and add-ons to introduce creative variations on a project that's close to our hearts here at dW: Robocode.
Robocode originated on our alphaWorks site, and has since become a popular open source project on SourceForge.net. It's a battle-bots type of game where you can program your robots to compete in an arena against those of created by your peers.
The trick here is the use of the Eclipse Foundation's AspectJ project applied to RoboCode to add new features to robots without needing to change each robot's source code. The demo took a basic IBM robot and created three different versions using new features that are each encapsulated as an aspect. The audience got to see the source code and watch Matthew navigate between aspects and affected classes using the views provided by the AJDT plug-in, which provides full AspectJ support within Eclipse.
The project has been enhanced, with sound effects for a kids' version and more aggressive battling tactics to build a version for teens. Finally, the project added enterprise JMX management capabilities to allow budding executives to monitor and direct their robots using a Web interface: they like to be in control!
The idea of using AspectJ to add new enterprise capabilities to an open source component to allow better integration is very interesting. As more solutions are built from open source components, the ability to apply a smart integration glue across different components will become increasingly important. This is Lawrence Lessig's Remix Culture come alive in a new way within software.
Aside from all the important details, RoboCode is just plain fun. It has been aptly described as "a fun and challenging way to learn object-oriented programming," and as "particularly effective for grabbing the attention of teenage boys." I encourage boys -- and girls -- of all ages to check it out.