The Spring Roo team is delighted to announce the availability of our first 1.2.0 milestone. The Roo 1.2.0.M1 release continues the Roo vision of making it fast and easy to build Spring-based enterprise Java applications. We’ve listened to the community and included in this release some of the most highly-requested features:
- Ten times faster (!). We know many people are using Roo for very large projects, so we’ve continued our attention to Roo internals to ensure it operates smoothly and quickly despite this. Through attention to profiling, file monitoring, disk I/O, XML models and round-tripping, we’ve increased Roo’s performance for large benchmark projects by a factor of 10.
- Now Apache licensed. With Roo 1.0/1.1, we used the GPL license to encourage any improvements made in Roo to be shared with the community. In response to feedback, we’ve shifted to the Apache Software License 2 (ROO-2253) so you have complete flexibility on how you use Roo in commercial and non-commercial projects. This also makes Roo consistent with most of the other Spring projects.
- Moved to GitHub. Social coding is on the rise, and GitHub has become the de facto site for open source source code management. We’re pleased to have moved Roo’s code base to GitHub so that you can easily fork it, make changes, and submit pull requests. This will greatly simplify the receipt of new contributions from the community. Take a look at ROO-2708 or visit https://github.com/SpringSource/spring-roo for more info.
- Repository layer flexibility. It’s now possible to define your own repository layer approach, with full awareness of your choices in the Roo-managed web tiers, integration tests and data-on-demand mechanisms. This is a significant step forward for those preferring a more traditional layering approach than the Roo 1.0/1.1 “Active Record”-like model. Of course the philosophy that favoured the earlier approach remains, so Roo still fully supports embedding convenient Active Record-style methods in entities. You can learn more about this new feature in the Pizza-Shop sample (see the /samples directory of the distribution) and ROO-301.
- Services layers. We also decided to tackle another highly-requested community feature: services layer support. You can now easily add a services layer (via a Roo "service" command) and have this used by the Roo-managed web tiers, integration tests and data-on-demand features. The custom services layers can also be used at the same time as custom repositories, giving you complete flexibility to build whichever application layering you prefer. You can read more in ROO-340 and Stefan Schmidt is publishing a blog shortly giving more details.
- Flexible GWT support. Now you can skip the UI and just let Roo manage syncing your RequestFactory classes (EntityProxy, RequestContext, and Locator) with your domain model and service layers. Previously the GWT UI scaffolding was mandatory, but with 1.2.0.M1 you can be more selective on how Roo integrates with your project.
- MongoDB support. Whether you’re a Cloud Foundry user, or just a Mongo fan, we’ve now added support for storing your entities in MongoDB. Mongo is a fast, shard-aware, schema-less document database that supports map-reduce and is a good fit for those wanting to use noSQL with Roo. Learn more in ROO-2693.
- Database Reverse Engineering (DBRE) Multi-Schema Support. One of the most popular features in Roo is DBRE support, which allows you to not only scaffold an entity model from your relational schema, but also automatically maintain that entity layer as the schema changes. This takes a schema-first approach to development and we know of users employing DBRE in projects with many hundreds of tables. As part of ROO-1408 we’ve added support for DBRE sourcing its structure from multiple schemas at the same time, and indeed you can even have different schemas manage entities in different Java packages.
- Shell improvements. Lots of people enjoy Roo's usability and indeed the shell has found its way to many other VMware products. We’re pleased that a number of minor fixes have made its way into JLine 1.0 (ROO-2608) and in turn the Roo shell (such as backspace to a previous line will finally work!). You can also run operating system commands directly from the Roo shell via the “!” operator (ROO-2457) and shell on start up now displays the latest community tweets (ROO-2677).
As you can see, we’ve made a lot of enhancements to Roo 1.2 and look forward to your feedback. We’ve got many exciting new features still coming in the next Roo 1.2 milestone, including JSF/PrimeFaces (ROO-516) support and multi-module Maven (ROO-120) project support. These two are also highly-requested community features.
Please remember this is a milestone release, so you should keep using Roo 1.1.5 for production projects. However, you might like exploring these new features in Roo 1.2.0.M1 by experimenting with the included sample projects.
Alan Stewart, Project Lead - Spring Roo