Announcing the Final Release of GWT 2.1

Posted by David Chandler - Thursday, October 28, 2010 at 11:25:00 AM

For several months now, we’ve been hard at work adding the features and functionality that was first demoed at this year’s Google I/O. The goal of this release has been to make it easy to build business oriented web apps that can take full advantage of the cloud --  zero deployment, instant scaling, cost savings, and portability that allows you to run your app in a variety of cloud environments, such as Google’s hosted service, App Engine, and VMware’s on-premise solution, vFabric. A few weeks ago we mentioned that we were close to wrapping up this project, and today we’re happy to announce the general availability of these tools.

Download the Google Plugin for Eclipse or SpringSource Tool Suite to get started now!


Developer Tools for Business Apps

Google Web Toolkit SDK

  • The GWT SDK makes it possible to build just about any application you can imagine. For the 2.1 release though, we aimed to provide a set of building blocks that will scale to support your entire user base, but at the same time are easy to piece together to get a web app up and running. We’ve wrapped these building blocks up in an application framework that offers the following:
    • Data bound views - An app that doesn’t allow end users to view or edit data isn’t terribly useful, now, is it? With GWT 2.1’s Data Editors, developers can create views that are generated from their app’s data model. These views are completely customizable, and handle all of the nasty work of syncing change sets between the client and server.
    • Highly optimized communication layer - One of the key ways to improve both developer and application efficiency is to get Remote Procedure Calls (RPCs) right. The new communication layer, RequestFactory, does just this. We’ve worked to minimize the payloads being sent between client and server in order to make RPCs as fast as possible, while adding new code generators that build this communication layer based on your app’s data model and the backend services it exposes. For many apps, the developer simply needs to provide server-side find and persist methods in order to get things rolling.
    • MVP support - For a while now, GWT developers have been using and advocating the MVP design pattern, and the Activities and Place support within GWT 2.1 are a set of components that formalize this pattern and the associated best practices, enabling efficient app navigation, history management, and view creation.
  • Cell widgets - A new set of widgets that are optimized for displaying data sets that contain millions of rows. They achieve this efficiency by having one container widget that is responsible for creating views based on chunks of HTML, and delegating events to these children rather than relying on a large number of heavy weight widgets.
  • Spring Roo integration - Developers can now harness the power of Spring Roo 1.1 to create and maintain the large amounts of boilerplate code necessary to construct modern enterprise apps. To enable this, we’ve created a GWT add-on within Spring Roo that, via several new Roo commands, will create an app that targets the new app framework and widgets in GWT 2.1.
Google Plugin for Eclipse
  • Better support for Maven projects - Google Plugin for Eclipse 1.4 has streamlined support for GWT and App Engine applications that use Maven for dependency management, and will now configure the proper classpath and project settings based on the project's pom.xml. No more having to import a Maven project, only to turn around and add the GWT/App Engine dependencies by hand.
  • Speed Tracer integration - Finding the performance bottle-necks in your application has never been easier.  Developers can now kick off a speed trace of their app directly from Eclipse and jump back into the Java source from trouble points that are identified by Speed Tracer. Wondering why hovering over a cell is causing your data table to flicker? No problem, click on the problem areas within Speed Tracer to jump to the line your Java source that is triggering this action.
  • UI enhancements - Developers can now set up browser profiles that allow them to specify different browsers to use when running and debugging their application.
Google Speed Tracer
  • Server side speed traces - We were excited when we initially launched Speed Tracer with the GWT 2.0 release because it allows developers to track down performance issues in the browser. But that was only one half of the story. With this release of Speed Tracer it's now possible to view performance characteristics on the server as well.
  • Cloud-specific integration - With the above functionality in place we set off to start gathering server-side data and, in the spirit of cloud portability, targeted two initial services:
    • App Engine - Using the App Stats capability within Google App Engine, Speed Tracer now has the ability to trace server-side operations such as Memcache hits, and Datastore reads and writes.
    • Spring Insight - Building on top of the services offered by Spring Insight, Speed Tracer 1.0 not only allows developers to drill down in to what was happening within the portion of the app running on tc Server, but it also gives them the ability to jump from Speed Tracer directly into Spring Insight to pinpoint the exact piece of code that may be problematic.


Getting Started

If you’re looking to start building apps using the Spring Roo and SpringSource Tool Suite integration, the quickest way to start is by downloading SpringSource Tool Suite and installing the Google Plugin for Eclipse from the main Dashboard component.

Once downloaded, simply start up Roo’s command line interpreter, and run the “script expenses.roo” command.

Select import source

This will run a series of Roo commands that produce the following starter web app:

Run as Web application

Now that we’ve created our app and launched it from the command line, we can import it into STS to start customizing it. To do this switch back to STS and click the menu item File->Import, and then select “Existing Maven Projects”.

Starter app

Once imported you can now run your app directly from STS by right clicking on the project and selecting the “Run As->Web Application”

Roo command line

From there you can start customizing it using our GWT Developer Guides and Roo documentation to help you along the way.

For a complete “Getting Started” guide, be sure to checkout Getting Started with GWT, Spring Roo, and SpringSource Tool Suite.


A Big Thanks

As you may be able to tell by the list of available product updates, this release has been the culmination of work of several teams. Thanks to the VMware and Spring engineers (Ben Alex, Christian Dupuis, and teams) for working with us to create a seamless and integrated developer experience. And to the developers that have been riding tip of trunk for the past few milestones, submitting questions, issues, and patches, thanks. It wouldn’t be a success without you.

Want to get started? Please download the Google Plugin for Eclipse now! You can jump right in with the Getting Started with GWT 2.1. docs. GWT 2.1 is also available in Maven Central as version 2.1.0.

If you’re interested in receiving updates about existing Google Developer Tools as well as those that are about to be launched, sign up here!

16 comments:

olamy said...

Great !!!
Could it be possible to have gwt-soyc-vis 2.1.0 artfifacts in maven central repo ?

Blogger said...

A glorious day, this is.

Thanks & great work!

waddle said...

Aren't you afraid of conflicts between m2eclipse and your GWT plugin ?

I don't think it's your role to handle maven specifics. Just let Maven plugins handle the maven stuff, and let your plugins handle de Google stuff. Don't you think ?

Because if you say you can handle maven's pom, then I'll have to disable my m2eclipse and then you'll have to handle the WTP bridge yourself, etc.

George Moschovitis said...

Great release! Lot's of interesting stuff. I really hope Google/Springsource will continue working together to better support Spring on GAE.

I had to import expenses-gae.roo and manually add GPE 1.4 to make this work though...

Geoffrey De Smet said...

Does the GWT compiler now make a distinction between the compiler's classpath and the compilation classpath?
The absence of this distinction is a problem in the maven-gwt-plugin, the eclipse plugin and the intellij plugin.

Without that distinction it's impossible to compile anything that depends on a different version of one of the libraries of the GWT compiler, such as JDT, ...

See:
http://code.google.com/p/google-web-toolkit/issues/detail?id=5290

wytten said...
This comment has been removed by the author.
wytten said...

I'm excited about the long-term potential of Spring Roo, etc. but for those of us who are too far along with our GWT 2.0 projects to benefit from these new code generation features, is there much benefit in upgrading to 2.1? For instance I'm more interested in how it plays with the GWT maven plugin.

Chris said...

@wytten, there's a long list of bug fixes that your 2.0-based app could benefit from: http://bit.ly/b1BqZh

Your 2.0 code will work with the gwt-maven-plugin. I would suggest using the pom.xml that we ship with the new Expenses sample (in 2.1) as a recipe.

arshad said...

Hi its really very nice blog,very useful information..Mobiles

Mike said...

I am just trying out the new release, but cannot find the new 'browser profiles' mentioned. Anyone already found them?

thanks,
Den

Le Phénix du désert said...

I'm so happy that gwt2.1 is out. Good work guys.

F Bogdan said...

To rephrase Olamy's question: Do you intend to release *ALL* GWT 2.1.0 related artifacts to a well known repo(maven, sonatype)?
Or be kind enough to add a repo URL for maven users too!

Just wanted to experiment some of the new features, but I couldn't because the missing gwt-soyc jar... :(

KOMA said...

Do we *really* need to have spring/maven/roo and all the other dependencies ??
GWT 2.0.x and before was so clean with just one jar in my lib folder to get started.
Running into dependency hell doing a 'perform eclipse' after 20mins of maven traffic. Next running into runtime errors due to new dependency and namespace problems.
The new features are great, but the tooling SUCKS!

mkelley said...

Nice blog posts i like you way of blogging keep it up.

Academic Writing | classification essay | compare and contrast essay

dopo said...

I agree with KOMA - pure dependency hell. Why does GWT team not take ownership of Maven integration? In the corporate world it is all Maven now a days.

I took the POM in Expenses and commented out the appEngine and Data Nucleus stuff. I added the Gilead dependencies and I started having slf4j "classnotfound org/slf4j/LoggerFactory" errors. Spent two day on it and I still have no idea how to solve it.

My 2 cents on some of the new features:

- Cell widgets and Editors: Great. We need bean binding like that with every widget.

- MVP: So so (too many new classes. Why can't we leave it at the same level as Swing folks did) why over engineer?

- RequestFactory: Sucks ( I am happy with simple GWT RPC using Gilead LightEntity) What is the problem these guys are trying to solve? Someone commented on another forum - they have to grow new brain cells to understand this stuff (can't agree more).

- Roo: I am perfectly happy with the way I can generate my JPA entity beans from a schema in Eclipse - using graphical tools. Why go back to command line? What is the problem we are trying to solve?

Thanks,

Vinay Soni

SpeedTracerTutorial said...

Also check out www.speedtracer.org for an in-depth tutorial on this chrome extension.