Posted on Jul 8th 2010

This week Genuitec and Skyway Software released the second milestone (M2) of MyEclipse for Spring 8.6, which includes scaffolding for Google Web Toolkit (GWT) applications.  With this new release, you can now generate full ready-to-run GWT applications from your domain model (i.e. DB tables, Java Beans, or JPA Entities).

The new GWT scaffolding option is available using the same scaffolding wizard that MyEclipse for Spring developers are already familiar with.  The scaffolding wizard is a one-stop shop for all of the MyEclipse for Spring scaffolding capabilities, which also includes Spring MVC, Spring Web Flow and Adobe Flex scaffolding.

Here are some of the most interesting aspects of this new capability.

GWT 2.0.4

Our GWT scaffolding is based on GWT 2.0.4, which is the latest GA version of GWT.  So you can immediately use the GWT scaffolding on production projects, as there’s no dependency on early access or non-GA libraries.

GWT Best Practices

As you’ve come to expect from MyEclipse for Spring, the scaffolded code is based on best practices.  In addition to using Spring best practices for the back-end server logic, the GWT UI code and GWT-Spring integration code follows GWT best practices, which is based on the GWT best practices from last year’s Google I/O session with Ray Ryan and the series of Large scale application development and MVP articles from Chris Ramsdale.  In these resources Ray Ryan and Chris Ramsdale recommended using:

  • The MVP pattern (Model-View-Presenter) - for structuring the application
  • Application events / Event Bus - for loosely coupling application components
  • The Command pattern RPC - for RPC calls between client and server

The GWT applications generated by MyEclipse for Spring incorporate these best practices, and others from GWT practitioners.  I’ll dive more into this in a future blog post, but here’s a high-level architecture diagram that graphically depicts the architecture and patterns used in the GWT scaffolding.

The GWT project is constantly evolving, and the most recent Google I/O session discussed some changes that are coming to GWT in the future.  As with any technology, the best practices evolve with the changes in the technology, and MyEclipse for Spring is committed to incorporating newer best practices as they evolve from the GWT community.

Application Layering

GWT scaffolding is built on the same classic application layering architecture used by the other MyEclipse for Spring scaffolding capabilities.  While the front-end may be different for GWT, the GWT application leverages the same back-end application architecture that is also used for Spring MVC, Spring Web Flow and Adobe Flex applications.

Spring 2.5/3.0 Support

Don’t be fooled into thinking that GWT applications require Spring 3.0.  While Spring 3.0 has some great new features, GWT applications integrate and run very well with Spring 2.5.x.  Some development shops have migrated to Spring 3.0, but there are still a ton of development shops using Spring 2.5.x.  GWT is mostly a UI technology for AJAX applications, and a GWT application shouldn’t have dependencies on a specific server-side framework.  MyEclipse for Spring lets you easily choose which version of the Spring framework you want to use, but the choice has zero affect on generated GWT code.  That means that you can start using GWT with existing Spring 2.5.x projects and easily migrate to Spring 3.0 when you’re ready.

Let us know what you think

As excited as we are about this new feature, we are eager to hear what the developer community thinks about our GWT scaffolding capability.  There are a few ways to get your hands on the 8.6 Milestone. Please post all feedback, questions and issues to the MyEclipse for Spring section of the MyEclipse forums.

A tutorial for GWT scaffolding can be found here, and a screencast can be found here.