Interview: Real-world Experience with Google Web Toolkit (GWT)

by Tim O'Brien

Technology adoption is an unpredictable process - part theater, part academic review, part marketing. In Java it is especially confusing becuase we have so many different "channels" to watch for new anouncements, there are conferences, there are web sites like Slashdot and TheServerSide, there are a zillion personal blogs like DHH, and O'Reilly's Radar. An interesting technology might generate a huge buzz one week only to see this buzz fall off as people notice that the product wasn't ready for prime time.

For a product to make it into the mainstream, early adopters have to like a product enough to undertake the often impossible task of convincing more cautious developers that new technology X is worth adopting. Technologies such as Hibernate or the Spring Framework take years to become established products. Some products, like Maven, have a hard time becoming established because they either lack sufficient documentation or have difficulty challenging well established products like Ant. I'm interested in this blind spot in the process, the time between the buzz producing introduction and early adoption to large-scale adoption usually takes months to years, and is difficult to chart because, in many ways, it is viral. HIbernate didn't take the world by storm as much as it slowly reached a critical mass of self-sustaining adoption. A failed project like OJB certainly generated a buzz at one time, but it failed to make good on promises - in that case early adopters actively discouraged others from using it in favor of Hibernate. Turning our attention to the Google Web Toolkit (GWT)...


Where is GWT in this process?



GWT seems to be in the middle of this early-adopters stage. The initial buzz has worn off, we saw a flurry of articles and blog posts about GWT, and it appears that we're waiting for this first class of GWT adopters to report back on experiences with the GWT. We're waiting for the first public site to show us what is possible with the GWT. My more cautious colleagues are avoiding it altogether, actively disparaging it as a bad idea altogether. Risk averse developers tend to criticize most new technologies until they have been demonstrably proven to work in a real-world situation - "Maven 'Sucks' until they see that IBM is using it, etc". Those developers that have the ability to take risks are taking the framework out for a test drive. Of these early adopters one has sworn it off completely as inappropriate for his organization, "It reminded him too much of Swing". Another colleague has embraced the idea in principle, but doesn't have the time to integrate it into his existing web application. In terms of adoption where is the Google Web Toolkit? What is the experience of the early adopter crowd?

To answer this question I spoke with Michael Podrazik of Grassroots Technologies, a consulting group based in New York City. Through his work with Grassroots, Michael has been using the Google Web Toolkit (GWT) for a new web application currently under development. In the following interview I asked him to communicate his own experiences with this product in an attempt to help others currently considering the GWT. I specifically asked him for an objective opinion of GWT, and to describe, in detail, the challenges he faced when developing with the GWT framework. Hopefully, this information will help you decide whether or not GWT is the right choice for your projects.

Read on, read the interview and share some of your own real experiences with GWT in the comment thread.

11 Comments

Venkat
2006-07-12 23:25:07

What do you think about this?
http://www.cbsdf.com/ps_blog/why-other-frameworks.htm

2006-07-28 11:32:56
I'd love to know more about how he did the integration with Jetty and Maven and bypassed the hosted mode. Is there an example or short description of that build setup available?


Thanks

David Tinker
2006-08-13 12:47:05
A good review. We are using GWT on a couple of internal projects and have similar opinions. The learning curve for the GWT widget set is similar to Swing for developers not very experienced with JavaScript, DOM, CSS. For developers skilled in those it is likely to be much less. Once you get over that it is a very productive environment and it is easy to produce really awesome stuff. The cross-browser issues we have hit have all been CSS related.


You gain a lot from being able to run the same code on the client and the server. Example: We have security and validation related classes that are used for immediate feedback in the UI and bulletproof final checking server side.

Melody
2006-09-07 18:51:44
If Michael or David Tinker, or anyone who has used GWT, would be kind enough to help with this question I would appreicate. I am curious how integrate GWT front end with a Servlet or JSF based application. I want to use GWT for the client side because of its pixel precision which I badly need for my application. But I have prebuilt Servlet and Java Server Faces applications that I would like to leverage on the backend. I am prepared to pay a fee just for the integration part of the application. I know Micahel mention rerouting RPC calls using some servlet and there is also some G4FSJ framework thats out there whose future or stability we do not know. I can be contacted at melody@progeny2000.com
Michael Podrazik
2006-09-09 07:00:18
Melody,


If you're using GWT's RPC mechanism as the communication between the client and server than the simplest option is to mount your RPC service implementations in the web.xml file directly. RemoteServiceServlet inherits from HttpServlet, and this is the approach recommended by Google.


I found this approach less than desirable because I'm using Spring on the server-side and wanted to take advantage of it for wiring up dependencies in my service implementations as well. That's somewhat difficult if they are exposed directly in the web.xml.


What I did instead was to create a servlet that I called SpringGwtRpcDispatcher that all GWT RPC requests are routed through. It extends the Spring FrameworkServlet, initializes the Spring ApplicationContext as well as route RPC requests to the appropriate RPC implementation by looking up the object in the ApplicationContext.


In this way the service implementations are treated just like other managed beans in Spring, I get to take advantage of dependency-injection and other Spring services and use the servlet interface as the integration point. It also makes the web.xml much less cluttered.

Michael Podrazik
2006-09-09 07:07:11
RE: Anonymous' question above about Maven integration:


GWT compilation is integrated with normal Java compilation using a slightly adapted version of the Maven plugin code posted by shinobu in this thread on the GWT forum:


http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/7fbcb068975728af/c6d761a3a49c2ad9?q=maven&rnum=2#c6d761a3a49c2ad9


The Jetty integration is done using the maven-jetty6-plugin:


http://mvnregistry.com/search/artifact/21211

Alex
2006-12-08 10:57:45
ass perfect pussy shaved
Mickey
2007-02-28 02:17:59
Hi Michael,


It is interesting to use GWT with the Spring.I am starting the new application with Spring and Hibernate.could please add your cents on how scalable and efficient if i am going for GWT as my UI.Also please put some light on how we can integrate spring 2 and GWT.



2007-03-08 02:14:08
We have done some pretty serious stuff with GWT. The application is a consumer centric web-application, with demanded several thick client features. I choose GWT for following reasons:
- doing serious UI application development in a type-less language like JS is very error prone and not scalable. Swing paradigm, with all call-backs, event handling is great. GWT enables these key features for agile web ui development.
- Having been new to AJAX, the AsyncCallBack and RPC appealed greatly to me.
- JSNI is great and allows us to integrate libraries like scriptaculous
- While OO development is possible in JS with stuff like 'prototype', it is still type less and not as versatile as Java. For large development it matters.
- Eclipse IDE and JDT integration. Helps a lot in debugging.


So, far I have been happy with the out-come. However, we do need substantial expertise with JS/CSS/HTML - atleast a couple of folks in the project.
Weak point of GWT :
- slow hosted mode - even in 1.3. No host-mode support for FireFox.
- very rudimentary widget set. Compare this with scriptaculaous and Yahoo UI Widget Library. I had to write quite a few for my application to meet the styles and user behaviour. For example, trees did not have widgets embeddable in them. The generated HTML is strict table based layouts, which our design department haf shunned!
All in all, like any other AJAX based stuff, GWT is not for faint hearted. If you can leverage, it is a big pay-off.

Nick
2007-03-30 01:41:47
Hi Michael,


I want to use GWT to replace applets in my current application. Can you pour in some lines to how GWT can help out to get the ball rolling as my current code is plain Swing? Is there any toolkit available to accomplish this without major changes to code?

noercorelc
2007-11-22 21:15:39
olocnoc