Google Web Toolkit

GWT logo

Google Web Toolkit (GWT) is a one-of-a-kind open-sourced project with main purpose: to allow people creating a full AJAX powered web application without writing a line of JavaScript. In other words, developers just need to write their code in Java and get the full capabilities of the powerful Java IDEs out there, including auto complete, pretty format, template, refactoring, and full debugging session. The goal is obvious, if one is Swing programmer and using Eclipse or other modern java IDEs, surely he’ll love GWT.

At the beginning, many people were just skeptical of this project. How can GWT replace traditional web development. And giving the easiness of creating static page using HTML and the rise of JavaScripts libraries, many argued that the problem of JavaScript coding is already solved by using that libraries. Looking at today’s JavaScript code, the support of debugging, and the support of modern browser to the ‘almost’ standard JavaScript, I must also admit that JavaScript programming is not as scary as it were several years ago. So that time, I were pretty skeptical as well… I didn’t even try to play with GWT.

Another skeptical view to the GWT: http://jamesmckay.net/2007/12/volta-gwt-and-leaky-abstractions/ and http://ajaxian.com/archives/google-web-toolkit-the-correct-level-of-abstraction

Slowly, it’s started to change after Google decided to open-source GWT. Of course, there were still skepticism around the web regarding this step. Some may say, why Google not even use the toolkit for its own projects? This was a point where I decided to step in and try to use GWT for my projects. Being a cutting-edge technology-centric man, I even tried to mix the web application with Spring, my favorite JEE framework. And boom, it worked… hardly… I couldn’t using the Hosted Mode properly, and thus couldn’t debug the client code from the IDE. The building process was slow, the code was terrible, and the interface was buggy. Not to mention that its integration with Eclipse WTP (Web Tools Platform) is BAD. Lesson learned… I stayed away from GWT (but keep a close look).

A year after that, GWT 1.5 was released. This introduced the support of Java 5 to GWT. However, I were still not interested to get my hand dirty.

It’s by the time of GWT 1.6 introduced, I dared to look more carefully to the changes it made and based on my observation, it’s going to the correct direction. An official plugin for Eclipse was prepared. The server side servlet was now defined as standard servlet (old GWT defined servlet in another XML file, a reason why integration with Spring caused a lot of problems with hosted mode). Compile speed improvement was magnificent. The directory structure was better integrated with Eclipse WTP. You can even use it with Google AppEngine.

And now (this is important), we can’t anymore say that GWT is not used internally by Google. A newest project by Google called Google Wave (by the way, this project is super cool, see this for further info), used GWT. And I think this is the most important step Google takes for a successful GWT. Many of the problems that I find very painful are discovered and further planned to be fixed in the GWT 2. In fact, the code is already on SVN and those who are brave enough can self-compile the toolkit.

So what are the most important improvements planned for GWT 2?
- Performance boost
- Out-of-process Hosted Mode (OOPHM)
- UI Binder, declaratively write the UI. Think of writing the code like Tapestry or Wicket, if you are familiar with them.

You can dig more improvements of GWT from this talks: http://code.google.com/events/io/sessions/GwtPreviewGoogleWebToolkit2.html and this talk: http://code.google.com/events/io/sessions/GoogleWavePoweredByGWT.html

Related posts:

  1. Guice, and GWT
  2. GWT plugin for Galileo
  3. Using Eclipse WTP for developing application under Websphere Application Server Community Edition (WAS CE)
  4. GWT 1.6 is here
  5. Building Tag Cloud (3): Tag Cloud on fixed space

0 Response to “Google Web Toolkit”


  • No Comments

Leave a Reply