Thursday, June 07, 2007

GWT a Year Later

One year ago there was a post on the Ajaxian site that reviewed GWT, and the author was pretty harsh. I remember that it really bothered me and a few others, as you can see in the comments on that article.

Recently I was speaking with offered Adam Tacy an I an opportunity to answer some of the questions raised by the original article as review of GWT one year later after its launch.

GWT a Year Later: Was it the correct level of abstraction?


Ray Cromwell said...

I think you did a good job answering the questions, but I think often far too little is said about the types of optimizations that the GWT compiler can do vs what's possible for a JS obfuscator.

As a language, JS is great. So are Ruby and Python. But Ruby and Python are deployed to the server where code size is irrelevent.

The critical aspect of Rich Internet Applications is deployment size and startup time. It's why applets failed and JS/Flash won.

However, when it comes to non-trivial JS projects with large heterogenous codebases, Javascript loses its deployment size advantage vs GWT, and GWT has a much easier task doing *static* optimizations of the code prior to deployment.

Javascript, like Smalltalk, Self, and other dynamic languages, *can* be optimized very well (see Self's type-feedback system), but it has to happen at run-time, and unfortunately, that's too late, because the user isn't going to wait around for your uber-JS-JIT when he's downloading 500kb of Javascript.

GWT has tremendous advantages in the area of size and latency for medium-to-big applications (where debugging with a real Java debugger also has big advantages over something like Firebug), but far too few people are aware of this.

Ray Cromwell said...

I forgot to add, check out my GWT Demystified articles at for a more indepth discussion.

Real world numbers: our GWT Charting application (at is 15KLOC Java source, 1.5M source code, and ends up at only 137kb compiled to JS (~50kb gzip -9). Startup time is ~600ms on GWT 1.4.

Robert Hanson said...

Ray, well said. I haven't read your postings yet, but I'll take some time to do so. The 600ms startup time is seriously impressive.

Anonymous said...
This comment has been removed by a blog administrator.