Java on the other hand has all the necessary OO toys (classes, interfaces, inheritance, polymorphism). These are the building blocks that make any large software project much easier to handle. Of course, with the language being compiled, it is much easier to catch errors before you even get anywhere near deploying.
So what drove me to try GWT?
That is fine, as with most frameworks, once you've gone so far, you are locked into that framework for that project. It is generally very hard to switch out a framework at the 11th hour, particurly if its a UI based framework. So, going down the ExtJS route, you are pretty much pinning your colours on their flag pole.
The biggest problem with ExtJS is that they didn't respect backward compatiability at all well, which is a little frustrating considering they released relatively often. Moving from 0.4 to 1.0 required a rewrite. Moving from 1.0 to 1.1 required replumbing. Moving 1.1 to 2.0 required major rewrite, and again from 2.0 to 2.1 it wasn't a case of dropping in the new JS files.
Now with ExtJS 3 looming we couldn't face having to go back to the drawing board. We know there are bugs that were going to be fixed, but the hassle of continually porting for each release was costing us real money. Also it was getting difficult to tell clients why they had to spend money on porting to a new version that wasn't buying them anything.
After talking with someone who had seen the GWT dream he took me through the reasons why I should really give it a chance. Within one day, I was hooked.
Andy and I have begun to integrate the GWT stack within Open BlueDragon to provide some of the handling of the new client side tags that have been introduced. By utilising Google we can be sure we won't have to keep recoding this area and it should be easier for people to contribute to if they want, especially, with some of the community GWT projects popping up. <cfcanvas> anyone?
I am also looking at making CFML objects available to the GWT frontend by transparently marshalling it in and out as it moves from GWT to your CFC/CFML request. That way you don't need to mess around with JSON and try to work around some of the limitations that imposes (dates anyone?)