GWT can handle all of the client-server communications for you, whether you use JSON, XML, or GWT‘s optimized Remote Procedure Call (RPC) system. You don’t need to know the lower level details and frustrations of XHR calls.
You don't have to run Java on your server to use GWT to build your client. Because GWT works with many standard communication protocols, you can easily communicate back and forth.
GWT creates a separate compiled version of your application that is optimized for a particular user‘s environment. This means that a Firefox browser displaying an application in French doesn’t need to download extra code for other browsers or languages.
Create reusable Widgets by compositing other Widgets, then easily lay them out automatically in Panels. Want to reuse your Widget in another project? Simple package it up for others to use in a JAR file.
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.
If your application is successful, you'll want to support the world. Making good architecture decisions up front helps. With GWT you can easily create efficient internationalized applications and libraries, including bi-directionality.
Because GWT uses Java, you‘ll be catching errors like typos and type mismatches as you write the code, not at runtime. Harness the productivity gains of an IDE’s automated Java refactoring and code prompting/completion. Now you can use all of your favorite Java development tools (Eclipse, IntelliJ, JProfiler) for your AJAX development.
GWT's direct integration with JUnit lets you unit test both in a debugger and in a browser...and you can even unit test asynchronous RPCs.
GWT is free, and all of the code is available under the Apache 2.0 license.
Download the SDK and get a simple web application up and running.