This past week has been a whirlwind, including a whole lot of learning on my part and three releases of the Colorado HomeFinder site. Just to rehash, I’ve built three versions of the software:
- A standalone javascript version. A toy which introduced me to GWT (src)
- A calculator that pulled some data from an external expresso server. (src)
- And finally, a more complicated version of the calculator, which also included a servlet so everything would run fine in hosted mode. (src)
In general, from a java developer perspective, this is my take on the strengths and weaknesses of GWT.
Strengths:
- Can use normal java dev/debug environment–in particular, being able to set breakpoints in what will be javascript was useful
- Hides javascript cross browser messiness
- Allows rich uis to be built for web using same paradigms as other windowing toolkits (event listeners, layouts, panels, etc). As some folks have said, it is Swing for the web.
- Ability to create widget libraries–using module ‘inheritance’ you can easily leverage other folk’s work. See this list for a collection of GWT widgets.
Weaknesses:
- Build integration–I really don’t understand why they haven’t wrapped in an ant task, though others have done it for them, and there is an
-ant
switch onprojectCreator.cmd
which generates a stub build.xml - Documentation–again, I’ve found the Google Groups to be tremendous, while the Google provided documentation could use some brushing up.
- Some cross browser weirdnesses–the only serious one I saw was IE not responding to click events on one page I built. This was due to a table of width 100% next to the div where the GWT widgets were dynamically creating DOM elements. But it only showed up on IE.
- Any ui built by GWT is not indexable by search engines. This necessarily limits what you can do with it–you can build web applications but not web sites.