I have written a GWT Ajax front end on to the wiki that hosts this web site; the wiki pages are extracted from the wiki using XML-RPC calls. The interface shows off a number of GWT's features.
Window manager
It uses a window manager that allows you to create windows that can be resized, maximized and minimized; the windowing system has a few bugs in it, particularly when you are using Firefox.
There are 4 windows: a top window containing a menu which has the same links as the wiki's left menu, a content window which displays the content of wiki pages, an index window which contains an index of all the pages in the wiki and a site map window which draws a tree showing the structure of the links within the wiki's pages (i.e. displays the wiki's taxonomy).
GWT RPC and the data model
GWT RPC is used to transfer pages between browser and server. It is a very easy RPC system to use (as easy as Java RMI). The big benefit is that the data model you use is in the same language in both browser and server. I tend to develop a model in XSD using the castor XSD schema compiler; the generated model can be manipulated both on the server side (e.g. persist using Hibernate) and in the browser using GWT.
The alternative of using JSON or XML is much more laborious.
GWT JSNI
It is easy to integrate hand written javascript and GWT generated javascript. Before being displayed in the browser, the html is transformed so that the links are changed into calls to the GWT Wiki controller using GWT JSNI (JavaScriptNativeInterface); otherwise opening a link would replace the GWT interface.
History management
GWT gives you history management for free so that the complaint that Ajax applications break the back button does not apply.
Taming javascript
The big advantage of GWT is that it tames javascript. Writing large amounts of javascript is hard and error prone; javascript unit testing with jsunit helps but the static type checking that is part of java is so useful (sorry I liked typed languages!).
Downsides of GWT
There are downsides to GWT - the widgets (e.g. menus) are not as good looking as the YUI which is a sub project of Ext JS; it has borrowed many of its ideas and widgets from SWT; it is a pity that the GWT APIs did not borrow more from the Swing or SWT widgets and APIs.
Coding a view in GWT is very code intensive; a declarative approach to defining an interface (e.g HTML, XUL or XAML) is a must for designers and is probably easier for programmers. The GWT site indicates that Google working on a declarative markup sub project. I have been tinkering with a declarative user interface markup language; this has been used to build the GWT Wiki user interface.
Model, Controller but not View
One approach is to use GWT just for developing the Model and the Controller and write the View in plain HTML; it is easy enough to hook GWT generated javascript up with existing HTML.
Please click here to open the GWT Wiki interface in a new browser window.