Ben Alex: ‘The GWT and Roo teams continue to collaborate to make the GWT support even better.’

Following the release of Spring Roo 1.1.0. JAXenter caught up with lead
Ben Alex, to find out what’s new in this release, and how the
Spring Roo and Google Web Toolkit collaboration is shaping up.

JAXenter: What are the benefits of incremental
reverse engineering, as introduced in Spring Roo 1.1.0?

Ben Alex: Traditional JPA reverse engineering
tools are designed to introspect a database schema and produce a
Java application tier once. Spring Roo’s incremental database
reverse engineering feature differs because it has been designed to
enable developers to repeatedly re-introspect a database schema and
update their Java application. For example, consider if a column or
table has been dropped from the database (or renamed). With Roo the
re-introspection process would discover this and helpfully report
errors in the Java tier wherever the now-missing field or entity
was referenced. In simple terms, incremental database reverse
engineering ensures Java type safety and easy application
maintenance even if the database schema is constantly evolving.

Just as importantly, Roo’s incremental reverse engineering is
implemented using the same unique design philosophy as the rest of
Roo. This means very fast application delivery, clutter-free .java
source files, extensive usability features in the shell (such as
tab completion and hinting) and so on.

JAXenter: How has the Spring MVC support been
enhanced for this release?

Ben Alex: Spring MVC has been supported since
Spring Roo 1.0, and we’ve received extensive community feedback on
how to make this even more useful. One major area of improvement
related to the JSPX view files that Roo manages. In Roo 1.1, a
developer can now edit any part of a JSPX file and Roo will
automatically detect those edits and transparently merge any
required changes around them. This is useful if a developer wants
to customize the appearance of a view but would still like Roo to
assist by adding or removing fields as they change in the
underlying entity etc. We now also use developer-customizable tag
libraries to simplify application-wide view changes, plus have
dramatically reduced the size of JSPX files. For example, a Roo 1.0
JSPX file of 200 lines is now just 12 lines in Roo 1.1 thanks to
the new tag libraries.

There have also been other changes. Localization bundles can now
be delivered via third-party Roo add-ons. We now also offer
automatic JSON REST endpoints, plus can embed content from 16
social media sites (like YouTube, Flickr, Picasa, Google Maps,
Twitter etc) with a single Roo command.

JAXenter: How has the interoperability between
Spring Roo and Google Web Toolkit, been enhanced in this
release?

Ben Alex: New to Spring Roo 1.1 is GWT support.
This major new feature follows nearly a year of close collaboration
between the Roo and GWT teams. Many new features have been added to
GWT 2.1 to simplify enterprise application development, such as
cell widgets, an MVP framework, request factory and so on. The Roo
1.1 release not only supports these new features, but makes it
possible to build a new application in minutes that use a Spring
backend and a GWT front-end. The Spring backend offers the same
architecture as a normal Roo application, so the millions of
developers familiar with Spring will feel right at home. The GWT
front-end reflects the best practice recommendations of the GWT
team and incorporates requirements such as IoC, a latency and
bandwidth-optimized remoting architecture, mobile client support
and usage of the new architectural features added to GWT 2.1.

The GWT and Roo teams continue to collaborate to make the GWT
support even better. We’re also working with Google App Engine
(GAE) engineers, with GAE support also added to Roo 1.1.

JAXenter: What benefits has the transition to
OSGi, brought to this release?

Ben Alex: An internal change we made in Spring
Roo 1.1 was shifting to an OSGi foundation. This is transparent to
end users, but enabled us to address important requirements so that
third-party add-ons can be easily developed, published and
distributed to Roo installations.

With Roo 1.1 developers can now produce an add-on scaffold in
just one command. With one additional command the new add-on will
compile and publish to a Google Code-hosted project (although you
can host the add-on anywhere desired). The deployment process also
updates the all-important OSGi Bundle Repository (OBR) index file.
We also have a “RooBot” server which can optionally index add-ons
listed in public OBR files. This makes them easier to locate via
automated features built into the Roo client, such as suggesting
uninstalled add-ons in response to user commands, plus normal
search-related commands.

We’re pleased with OSGi because it has enabled us to deliver a
decentralized and secure modularity model. Roo add-ons can be
easily created, hosted anywhere, don’t need to be centrally
indexed, and will only install if a user trusts the add-on
developer. All dependency resolution and security management is
underpinned by mature technologies such as OBR and PGP, ensuring
both add-on developers and end-users enjoy a proven and scalable
approach to long-term add-on requirements.

Dr. Ben Alex is a Principal Software Engineer within the SpringSource division of VMware, and has been working professionally in software since 1995. Ben founded the Spring Security project in 2003 and led its development into a popular, open-source security framework that is used in numerous government, banking and military installations. More recently, Ben founded and serves as lead of the Spring Roo and Spring Shell projects, both of which deliver significant productivity and usability benefits to those using Spring technologies. In recent years, Ben has presented at technology conferences including JavaOne, The Server Side Java Symposium, JAOO, Øredev, SpringOne and The Spring Experience. He also authored the security chapter of the Wiley book, “Professional J2EE Development with Spring framework,” and maintains a blog at http://blog.springsource.com/main/author/bena/.