- Rapid Prototype tool for the Java Platform.
- Non-Invasive approach to development.
- Proper use of open source frameworks.
- Handles Infrastructure configuration
- Intelligent Code Generator (Active vs. Passive Generators)
I basically defined Roo as a tool that can help you learn (if you are new), refresh (if you are Spring savvy), or simply complement your current skills. Although Spring has made a tremendous job in keeping us away from traditional J2EE development (EJB, xDoclet, Ant, etc), managing Spring configuration is extremely easy with Roo. No need to understand a complete Transaction Strategy in the beginning. No need to understand how to setup i18n configuration, nor how to setup a JPA provider. I also took time to explain about Roo's powerful shell and how it synchronizes with changes you can make with the IDE (managed asset).
- JDK 5.0 or greater
- Maven 2.0.9 or greater
- Spring Roo Binaries
- Under the covers, Roo uses AspectJ and Java
- Changes are done at the byte-code level
- Strong use of Inter-Type Declarations (ITD)
- Leverage the power of Privileged Aspects
- Annotations are defined with Source-Only Retention Policy
I felt that this is where I spent most of my time (aside from the Demo I gave). I explained the concept of ITD as it was fairly new to some of the audience. Also, I had to explained a bit about Privileged Aspects. I had sensed (from the previous presenter) that the audience was not well versed in AspectJ (nor AOP), so I took my time here to help the audience understand that a "cross-cutting" concern does not necessarily apply to business logic. It was a good discussion. After answering some of the questions I had, I turned to build an application which some of us have been talking about building, of course this time it was a lot faster.
- No vendor Lock-In
- Zero performance/memory overhead
- Zero deployment footprint
- Consistent applications across teams
- Leverages investment in the Java Ecosystem
- Small learning curve, great to learn proper usage of Spring.
I felt I needed to present why is the "Roo" proposition a good one. As a convert to Roo, I liked the lack of vendor lock-in. I also appreciate the great "use-case" for AspectJ in the context of this tool. It makes complete sense. I also stressed the point of how to help "entry" level Engineers to learn powerful concepts which could take days to read on their own.
- Dynamic Finders
- Integration with JMS and Email
- Integration with Webflow
- Integration with Spring Security
- Custom Add-on's
- Roo Architecture Patterns
As my presentation took longer than anticipated, I didn't have the chance to discuss these, however I had purposely left it in case I would have finished early. I suggested a future discussion of this topics, particularly about "Dynamic Finders" and some of the architectural choices which Roo encourages (e.g. No DAOs, Optional Service Layers, etc).
I sensed good feedback, and once again I learned the obvious: One learns more by sharing than by reading.