Mitch Pronschinske is a Senior Content Analyst at DZone. That means he writes and searches for the finest developer content in the land so that you don't have to. He often eats peanut butter and bananas, likes to make his own ringtones, enjoys card and board games, and is married to an underwear model. Mitch is a DZone Zone Leader and has posted 2573 posts at DZone. You can read more from them at their website. View Full User Profile

Spring Roo 1.0 - a RAD tool for Java

  • submit to reddit
The holidays were very happy for SpringSource project users.  Spring 3.0, Groovy 1.7, and Grails 1.2 were all released in GA before the year's end and now as we begin 2010, another present from Spring has arrived.  Introduced back in spring 2009, Spring Roo just released its final 1.0 version.  With this release, Java developers now have a stable, extensible, text-based RAD tool that can drastically simplify the development of Spring web applications.  

Spring Roo is a hybrid model that provides a mix of passive and active code generators.   Roo's shell provides passive generation, which is used to create .xml or .java files in most cases, and active generation, which builds a detailed metadata model with @Roo* to dynamically update .aj (AspectJ), and .jsp files (never .java files).  Another useful feature of the Roo shell is the context-sensitive “hint” and “help” commands.  The tool generates and maintains all required configuration files and project fragments.  There's TAB completion for nearly everything, command hiding, and automatic contextual awareness.  Roo will rollback any changes in case you make a mistake and the scriptable UI can “replay” scripts.  The main thing, Spring says, is that Roo won't get in your way.  The generated code will not interfere with custom code and the custom or overwritten methods won't be overwritten again by Roo.  All .aj files belonging to the Java class are compiled into just one .class file.


Spring Roo gives you all of these features out of box:

  • Project management
  • General object services
  • Entity support
  • Field management
  • Persistence
  • JUnit testing
  • Dynamic finders
  • Spring MVC, Spring Web Flow, and Selenium
  • JMS, SMTP and build system integration
  • Spring Security, Logging Setup, and more

The Architecture of Spring Roo is very unique.  Roo's developer assistance is in development-time only with no runtime library weighing down its deployed applications.  AspectJ inter-type declarations (aka. introductions or mixins) automatically generate id and version fields, getters, and setters for persistent fields in domain classes.  SpringSource emphasizes that this tool has no lock-in.  In fact, they say it can be removed from a project in less than ten minutes.  Another benefit for Java developers is that they don't need to learn a new language to use Roo.  It works with the Java language and its standard libraries.  Here are the libraries Roo works with:

  • Java
  • Spring Framework
  • Hibernate
  • JSP
  • Spring Security
  • Spring Web Flow
  • Log4J, Maven, AspectJ, and Eclipse/STS

Spring Roo has over 100 pages of documentation and an active forum.  You can download the GA version 1.0 release here.


Duc Tung, Vu replied on Tue, 2010/01/05 - 5:38am

I got the feeling that Roo is somewhat as Grails, but more closer to Spring, Spring MVC and Java pure. When more speed/performance is needed, should one go Roo than Grails, right?

Thing i dont like from Grails:

Grails Plugins as Spring Security and Spring Web Flow (in Grails 1.2) wrap only  some portion of features of the original libs

But in Java Pure MVC Framework there is reload/restart problem, that impacts the productivity very much. Anytime when Java code (Controller, Service) is changed, App server must be restarted, it costs time.

Antonio Pagano replied on Wed, 2010/01/06 - 8:08am

Sounds Good!

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.