I recently worked on an article about GWT where I showed two sides of GWT.
First, GWT defines a new way of developing Webapps. By redefining our procedure of development, providing the GWT-Compiler and the development shell and the GWT-Browser in the hosted modus, GWT allowes us to develop in Java, in our favorite IDE and use all the techniques we got used to in the last years: code completion, refactoring, debugging, code analysis, check styling, etc.
Second, GWT provides the ground framework to help us develop better web applications. There is the component model, the i18n, the browser history manipulation and many more. This is where it gets a little confusing. While other technologies get runtime dependencies exactly here to the product, GWT does not. It is a compile time dependency. We can’t switch a jar or a script file in the app and get new features at runtime. The application created with GWT is a kind of a binary, it must be recompiled. And this is good.
This was clearly pointed out in the Voices That Matter GWT conference.
There is a video called “Conference Wrap Up” on YouTube. Have a look at 25:00 timeframe.