So what is GWT?
GWT, the Google Web Toolkit, is a project with many independent parts. Here's a partial list:
- A class library providing:
- a subset of the Java SE 5 standard library (most notably java.lang and java.util)
- A programmatic UI framework (somewhat like Swing)
- Java wrappers for native browser functionality such as JSON and XML manipulation, XMLHttpRequest (AJAX and Comet), and HTML 5 features like Canvas, Local storage, Audio and Video.
- An RPC mechanism you can use if your application's backend happens to be written in Java (GWT RPC can't easily be retrofitted on an existing object model, but you can use it to build a server-side RPC layer)
- GWT Designer, a visual UI layout tool that generates code for the Swing-like UI framework
- UiBinder, a system for declarative UI (you define layout in files that are essentially XHTML interspersed with GWT widgets, with named elements automatically bound to fields in a companion Java class)
- Plugins for Eclipse, Maven, and Ant that help with creating, building, testing, and debugging GWT applications
The compiler itself is fundamental to any usage of GWT. Everything that follows is optional: you can take it or leave it, mix and match, use third-party alternatives, or invent your own replacements.
And what isn't GWT?
Now that we've listed off the highlights of what is included in GWT, it's important to address what it's not:
- GWT doesn't mandate a single, prescribed way of creating user interfaces. In particular, you don't have to create UIs in a "Swing for the browser" mindset unless you want to.
- GWT does not require any browser plugins. Your compiled app is just one or more standards-based web pages.
- GWT is not a dead project. Rumours of its demise are greatly exaggerated.