I'll add some points to the ones already mentioned:
- Databinding/validation. GWT doesn't have a databinding/validation support out of the box, although there are some projects on this area starting to emerge. You'll find yourself writing alot of this:
TextField fname, faddress;
...
fname.setText(person.getName());
faddress.setText(person.getAddress());
...
- Lazy loading. Since gwt is on the client side, lazy loading is really not an option. You'll have to design your RPCs and Domain Objects carefully in order to
- send all your object data that is needed
- avoid eager fetching all of your data
- You'll have also to make sure that you will not send proxies/non serializable objects. hibernate4gwt can help you with these points.
- UI design. It is harder to visualize an UI in java (Panels, Buttons, etc) than in html.
- History support. GWT does not ship with a History subsystem, nor does it ship with any subsystem for nice urls or statefull bookmarking. You'll have to roll your own (although it has support for History tokens, which is a start). This happens with all AJAX toolkits AFAIK.
IMHO, GWT is missing a framework that has out of the box support for all of the issues mentioned on this 'thread'.