With the upcoming release of Tapestry 5 I’ve decided to take the plunge and try out GWT. I’ve long been a Tapestry fan (I can’t stand the goto development style of Struts), but this latest version has left me a little wanting. In short:
- It’s changing dramatically again.
- The framework now magically invokes methods if they follow particular conventions.
- I hate method conventions. Intellij IDEA is really good at telling me all kinds of useful things. Method conventions bugger that up completely.
- Tapestry documentation has always been lacking, this magnifies the previous gripe by a factor of 100.
Once I realised the depth of my grumpiness I decided to re-evaluate the webapp landscape. Since I’m not interested in ruby/rails I decided to give GWT a whirl.
Some of the good points are:
- The documentation is great. Well thought out and well written.
- The shell environment is wonderful. The best out of the box web development experience I’ve had yet.
- The client aspects of the application are written using standard client techniques. Observable models, reusable widgets, similar development approaches.
- My server is stateless.
Things that could be better:
- There’s no binding API. Life without binding sucks. There are apparently plans for one, but in the mean time it took me a week to migrate my Swing binding framework over to GWT.
- It would be nice if there was an easier way to add servlet context listeners and context parameters to the shell environment.
- Better documentation on writing compiler plugins would be nice.
Other than that, the combination of GWT in the browser and simple servlets using Guice on the backend has been a delight.