I just read an interesting blog articles about “is GWT the future of web development or not“. I find the titles quite funny, because I really don’t believe that it was no ones intention to forecast the future, so the real question is – is GWT a good approach for present web development?
There is actually too much fuss about static or dynamic language. The best language is still the language I know best. I feel quite at home with Java and Eclipse – I won’t be any more productive in any other language so soon. If you are telling me that one can do things faster with Grails & Co. you might have a point (I really don’t know), but then we are talking about (web) frameworks and not about the language. I have my roots in Perl programming and I know exactly why I like type safety, but this again is a very personal statement.
Personally speaking, leveraging Java Programmers means really a lot to me. It is not only Eclipse and Java. It is checkstyle, findbugs, unit testing, build infrastructure. I have appreciated reading the GOF patterns, I loved Effective Java and I still have to chuckle when I think of the bad smells in Refactoring (which I somehow know all by personal history). When I do code in Java I mostly do it by consciousness and not by copy and paste from some sites like in my early days in development. Is a matter of fact, I do have something to leverage and it really means something to me.
If you are looking for eye candy in web development, don’t wast your time with GWT. And if you start doing SmartClient or GXT just know that you are not really leveraging GWT, thats just using GWTs infrastructure but nothing more.
If you are looking for software engineering in web development, take a closer look at GWT.
And yes, the GWT compilation is brutal. That’s why we have the developer modus (formerly known as hosted modus) – it starts fast and I keep it running. Simply refreshing the browser gives me the refreshed code, refreshing the jetty server gives me the changes in the backend. With OOPHM (out of process hosted modus) GWT looses the tight coupling to the only one browser on each OS by doing hosted modus inside-out. Google for it or try it out on your machine, works very good here. And, btw, I do have good monitor, a good chair and a fast computer. I mean, this is my day-to-day job.
Maturity? GWT is rock stable. It is more a compiler and does not really give me much runtime dependencies. We now have AdWords and Google Wave to showcase how far we can come if we have the knowledge and the resources.
And no, there is no eye candy.
If you are going down the GWT road, please have a look at the GWT Architectural best practices. If you like Spring (as I do), please have a look on how to use your Spring backend with GWT-dispatch (command pattern based RPC approach for GWT).
It’s unfortunate to see another long rant based on the same misunderstandings that we’ve seen from the day we released GWT. Very briefly, here are the major issues I see:
1. I don’t like Java, because Java programmers write reams of unnecessary abstraction.
We largely agree on this point (speaking for myself, at least, not everyone at Google). J2EE is a monstrosity, as is whatever library led to RequestBuilderFactoryFactory. This has precisely squat to do with Java the language.
3. Compilation times take too long.
4. The widgets suck.
Fair enough. Hell, I wrote half of them, and don’t entirely disagree. Go write some that don’t. Oh, and when you run off to talk about how much Ext sucks, realize that you’re saying that Ext-JS sucks as well. Neither is the fastest library in the world, but they are very complete and cover a huge variety of use-cases. They made a very different set of tradeoffs than we did, but they’re a legitimate set of tradeoffs, and appeal greatly to enterprise developers that need to get a lot of UI built quickly.
5. Not all applications are Gmail.
No kidding. If I were a real pedant, I would point out that this is a tautology. But yes — if you’re building a simple “page at a time” app and need to add a little script to it, by all means use JQuery or whatever you feel like. That’s appropriate. Use the right tool for the job.
GWT was built to solve a specific set of problems, and we took what we believe are the right set of decisions to do so. Plenty remains to be done, and we continue to work on it. I wrote up a clarification on several of these points some time ago:
I hope this proves helpful to some.