Thursday, June 10, 2010

Rapid Application Development with Spring Roo

A few months back I bumped into Spring Roo project and since then I have been closely following its progress. Spring Roo is different from what we have seen so far in the rapid application development arena for enterprise application.

Spring Roo is a text-driven, intuitive tool which is meant for rapidly developing Java enterprise applications, which make use of standard technologies/frameworks like Spring Web Flow, Hibernate, Spring Security, GWT, and so on. All you need to do is to run Spring Roo tool and provide it with the instructions for creating a project, developing persistence layer objects (and its fields), controllers for the web layer, unit/integration test scripts, and so on. The rest is taken care by the Spring Roo to create a standard maven project, provide glue code between your web and persistence layer and create necessary configuration files for interacting with the database, unit/integration testing scripts, and so on.

You can think of Spring Roo as a code generator, but it is lot more than just a code generator.

Spring Roo is different because:
- Your application code is independent of Spring Roo, that is, your application code is not coupled with tool-specific libraries or classes ---- something which has been at the center of any Spring project, which makes Spring Roo a non-intrusive tool.
- You don't need to learn anything but you shouldn't forget anything about enterprise application development. You still need to code when using Spring Roo for developing applications. This is because Spring Roo only generates code that can be conveniently passed as set of instructions to the Spring Roo tool, the rest you need to write.
- No runtime dependency of application code on Spring Roo specific libraries. Your application code is like any other enterprise application code developed without Spring Roo.
- Your enterprise application project is mavenized, by default
- You choose the technology/framework that you want to use for developing enterprise applications. Spring Roo supports Spring Web Flow, Hibernte, OpenJPA, GWT, Spring MVC, and so on. You can use any of these technologies or framework based on your requirement.
- Unit/integration tests can be automatically generated by Spring Roo
- Best practices are followed in the application architecture and code. Spring Roo makes use of best practices in developing application architecture and application code, therefore, the quality of enterprise application is guaranteed by Spring Roo tool

In the background Spring Roo makes use of AspectJ's ITD (Inter-type declarations) to generate the source code for the application. In the next blog entry I'll discuss ITDs in detail and how Spring Roo makes use of it.