The Google Web Toolkit is a framework for creating web applications. It’s main goal is to allow you to develop/debug a Java application and then compile the client side to JavaScript upon deployment. The JavaScript produced behaves the same across browsers (IE, FireFox, Safari), and the server side can be any language used for server side web applications, not just Java.
GWT In Action does a good job of covering both introductory level and advanced GWT features. I like the code examples and the chapters themselves are not dry and boring.
My only complaint is that this book does not address some core conceptual questions that many Java developers may have with respect to GWT and the ideas behind it. Like: why use GWT over JSP/Struts or JSF? This may seem like a stupid question because JSP and JSF are server-side technologies, while GWT is a client side technology, but they are fundamentally two different paradigms. Normally GWT takes more resources on the client side because more things are being done in JavaScript than usual. Messages to and from the server should be kept to a minimum to reduce server load. The JSP/Struts and JSF models aim to bring MVC to web programming. The web page is merely a view that talks to a servlet (controller) whose job is to keep the model and view synchronized. What’s interesting is that ASP.NET does NOT attempt to turn web programming into an MVC pattern, but simply uses event handlers and callbacks. This is a much easier fit for the stateless, message based HTTP protocol and no doubt easier for someone new to web development to learn than JSP/Struts and JSF. Java developers will argue that their server side technologies are more scalable for larger applications. .NET developers will argue that JSF is unnecessarily complicated for web programming. GWT also uses event handlers and callbacks, which can make a program using the toolkit simpler to understand than it’s typical JSF counterpart.
What are the drawbacks to using GWT over other browser client side technology X? How does GWT stack up against Ajax enabled controls in ASP.NET and Ajax components for JSF? Dojo, Open Laszlo, Flex, Flash, Applets, hand coded JavaScript, which do I use for my internet application? What are the advantages/disadvantages of these technologies vs. GWT? If you’re looking for answers to these questions you won’t find them here.