Think Different!

Paradigm Shift

When you start to develop in GWT as a traditional web application developper you have to think differently.

In a 3 tier application architecture, the server is playing a central role from Data Access to Business logic and even Presentation. In fact, most of the work is done by the server. The approach could be called "server-centric".

On the contrary, GWT is a "client-centric" tool. Usually, all the presentation layer resides on the client side. This is what we've done.

Furthermore, in a traditional web application, the Backing Beans are available when you define a new JSP view.

Page view concept does not really exist in a full RIA approach: you may use GWT Composite class as view instead.

In a GWT application you have to access to the server side data by using asynchronous callbacks.

Design Guidelines

GWT is a Toolkit not a FrameWork that means that GWT does not prescribe a way to build an application
Here is some design guidelines we've imposed ourselves during the development:

MVC

Model View Controller allows decoupling the code.

You can find the model part, the POJO, able to notify events to views

You have the views for the display and we use GWT Composite for each views

The Controller part makes the relationship between models and views.

Component reusability

GWT Composite classes are reusable components.
They can aggregate widget but also other Composite.

POJO, POJO, POJO...

Think POJO (Plain Old Java Object) as much as possible, stay above the data level, modelize your XML or JSON raw data with POJOs.

Why? With GWT you code in pure JAVA so use JAVA as much as possible.