How Google Web Toolkit works
Cross-compilation affords you the maintainable abstractions and modularity you need for development without incurring a runtime performance penalty.
Edit Java code, then view changes immediately without re-compiling
Step through live AJAX code with your Java debugger
Communicate with your server through really simple RPC
GWT supports an open-ended set of transfer protocols such as JSON and XML, but GWT RPC makes all-Java communications particularly easy and efficient. Similarly to traditional Java RMI, you simply create an interface that specifies remote methods you'd like to be able to call. When you call a remote method from the browser, GWT RPC will automatically serialize the arguments, invoke the proper method on the server, then deserialize the return value for your client code. GWT RPC is quite sophisticated, too. It can handle polymorphic class hierarchies, object graph cycles, and you can even throw exceptions across the wire.
Reuse UI components across projects
Create reusable Widgets by compositing other Widgets, then easily lay them out automatically in Panels. The GWT Showcase application provides an overview of the various UI features in GWT. Want to reuse your Widget in another project? Simple package it up for others to use in a JAR file.
Easily support the browser's back button and history
No, AJAX applications don't need to break the browser's back button. GWT lets you make your site more usable by easily adding state to the browser's back button history.
Localize applications efficiently
Easily create efficient internationalized applications and libraries using GWT's powerful deferred binding techniques. In addition, as of 1.5 the standard GWT widgets support bi-directionality.
Be productive with your choice of development tools