Spring Roo
I attended the session entitled "Extreme Java Productivity: Enterprise Applications in Just Minutes", which is just a fancy session name for the presentation of Spring Roo. What is Roo? In short, Roo is a Rapid Application Development tool that allows you to start a typical webapp project from scratch, add things like database, entities, etc. and end up with web user interface to manipulate that info. There are two main ways to use Roo: through a shell interface, or through the SpringSource Tool Suite. Either way, all is done through shell commands that lets you generate code. It is said to be easy to use and extensible, and the code is only affected at development time. There’s no runtime changes or anything like that.
It supports many of the Java APIs, like Java Bean Validation, JDBC, Transactional APIs, several JPA implementations like Hibernate, Apache OpenJPA, Google App Engine, etc. Roo is a "hybrid" code generation, which means that does passive generation at the start to automatically create source code from commands, but it also maintains the code in sync through active generation. The code itself tries to be as much non-attached to Roo as it can be, and there are ways to strip out all the Roo-specific parts from your final code once you’re ready to go to production.
I saw the demo for Roo and I must say it looks pretty cool. He created a new project, assigned the database and persistence framework, added some entities and properties and deployed to an embedded web server. It all went pretty smoothly, except for a small IDE crash at the middle of the demo, but that’s how demos are supposed to go, isn’t it?