The latest version of Spring Roo framework supports database reverse engineering, Google Web Toolkit (GWT) version 2.1 features, and application deployments on Google App Engine. It also uses Apache Felix as the OSGi runtime environment. Spring Roo 1.1.0 GA release was announced last week. Concurrent with this release, the Google Web Toolkit, SpringSource Tool Suite (STS), AspectJ and AJDT teams have also completed supporting GA releases.
Incremental Database Reverse Engineering
Roo can now be used to incrementally reverse engineer an existing relational database and automatically create Roo entities with corresponding fields. When Roo reverse engineers a database, it places all of the fields it discovers into inter-type declarations (ITDs) to deliver round-trip maintenance of the reverse engineered entity. Roo will also delete entities that no longer exist (unless it’s specified not to delete them) and automatically handles situations like composite primary keys (complete with identifier class creation and maintenance).
Spring MVC Enhancements
These enhancements include automatically round-tripping a JSPX file so the developers can now edit a scaffolded JSPX file and Roo will automatically detect the changes. And any changes that Roo needs to make to the file will be automatically merged with the manual changes. Another improvement to the JSPX round-tripping support is a better use of tag libraries to encapsulate markup creation. This means a 200 line JSPX file in Roo 1.0 is now just 12 lines in Roo 1.1.0 due to the tag library improvements. The repetition of markup has been moved into a JSPX-based tag, allowing developers to make edits that impact all pages in their applications. The Spring MVC scaffolding now also supports embedding content from different social media sites like YouTube, Google Video, Flickr, Picasa, Scribd, SlideShare, Google Maps, and Twitter.
GWT 2.1 Support
Spring Roo and Google Web Toolkit interoperability enhancements include GWT application development using version 2.1 features such as RequestFactory, MVP framework, data-binding widgets etc using Roo framework. SpringSource Tool Suite, which was recently released as 2.5.0, offers out-of-the-box support for Google Web Toolkit development using the Google Plugin for Eclipse.
Google App Engine
Roo applications can now be built for deploying on Google App Engine (GAE) environment. This cloud computing deployment solution offers a scalable approach to building applications, and includes options such as a free usage quota and Google App Engine for Business. SpringSource Tool Suite also has support for Roo-created Google App Engine projects. STS manages the lifecycle of the Data Nucleus enhancer plugin that is necessary for GAE persistence.
OSGi Runtime Environment
Roo 1.1.0 architecture includes the transition to the OSGi foundation to ensure Roo's add-on infrastructure would be based on a modular, remote dependency-resolvable classpath management model. The Roo shell now uses Apache Felix as its OSGi runtime framework together with Service Component Runtime (SCR) for component management, and OSGi Bundle Repository (OBR) for bundle resolution. The latest version also provides several OSGi commands to access the OSGi container. These commands include starting, installing and uninstalling the OSGi container and getting information on OBR bundles.
Other features in the new release of Roo include support for Apache Solr search server, JSON Support, Serializable add-on, RooBot client and PGP signature security. InfoQ caught up with Ben Alex with Spring Roo project about the latest release and the future road-map of the framework.
InfoQ: Recently at SpringOne conference, Spring Roo was mentioned as a strategic product for SpringSource, can you discuss what this means to the developers who are currently using or planning on using the Spring Roo framework in their applications?
It has been ten years since the launch of Spring led to a dramatic increase in the productivity and quality of JVM application development. Spring began by offering better design patterns, APIs and runtime implementations. Over time we saw that we could further enhance developer productivity through the introduction of tools, and as such we made significant strategic investments in SpringSource Tool Suite (STS) and Spring Roo.
As a strategic project, SpringSource makes a significant investment in Spring Roo. This is evidenced not only by the number of full-time engineers we have working on the project, but also the high level of Roo-related interoperability we've prioritised with related technologies such as SpringSource Tool Suite, AspectJ, AJDT and of course Spring itself. We also focus on delivering deep Spring Roo support through our collaborations with other organisations, such as Google, Salesforce.com, Neo Technologies etc. All of this means that a Spring Roo user can take comfort that a significant strategic investment underpins Roo and this will continue to be reflected by our frequent releases and feature evolution.
InfoQ: SpringRoo and GWT partnership was also announced at the SpringOne conference. Can you speak more about this partnership and what it means to developers?
Google and SpringSource have been closely collaborating for almost a year now to enhance the interoperability between many of our technologies. The integration between Spring Roo and GWT is one such example. The new Roo 1.1 releases supports many of the new enterprise application development features present in GWT 2.1, such as cell widgets, an MVP framework and request factory. It only takes a few minutes with Roo to build a Spring backend and an immediately-usable GWT 2.1 client. The resulting GWT applications represent the GWT team's best practice recommendations for structuring GWT clients. Some of the advantages of the recommended architecture include support for mobile clients, plus latency and bandwidth optimised remoting calls.
InfoQ: What is the future road-map of Roo project in terms of new features and enhancements?
For the next few months we're focusing on Roo 1.1.1 and Roo 1.1.2. These incremental releases will focus on improved GWT and Google App Engine support, plus complete additional documentation and our “Joey” infrastructure to assist in the development of advanced add-ons. In relation to Roo 1.2, we've prototyped a number of interesting areas including automated Android clients, Java Server Faces scaffolding, Ant/Ivy support and Maven multi-project integration. There are also several hundred other feature requests in our issue tracker and we always welcome additional suggestions and votes to help us prioritise what the community would like to see added to Roo.