Friday, July 30, 2010

The increasing importance of GWT

Google Web Toolkit is a fantastic piece of kit.  As a developer, or as anybody really, when you do a repetitive task for any period of time you become fully aware of the problems associated with it and how to improve them.  Microsoft’s take on this problem is to make applications prettier, and more complex, whereas Google and Apple, try to increase complexity utilizing simplicity.  My personal opinion is that GWT addresses this by making web application development a lot simpler at every stage of the software lifecycle.

It is clear to any academically minded individual that open source is the best route forward because it takes in the ideas of the people you are trying to encourage to adopt.  There is an instant connection and contribution between you and your client base.  As the web develops in complexity it is increasingly important that a robust top to bottom professional framework exists to develop complex and layered applications.  Developers are increasing excited and frustrated with the multitude of decisions required for any web product.  GWT helps with this problem by providing a toolset that addresses many layers in the stack.  The proof is also in the proverbial pudding.  If you think Google Wave is a good product, then wouldn’t you like to use the same toolset that was used to produce that?  Take a look at the popular websites on the web, very few, I am aware are developed using Microsoft technologies, and the ones that are, feel like they have been developed by Microsoft technologies.

The success of the iPhone, iOs and Android platforms is clear.  The business model clearly works.  At Google IO 2010 the Chrome Applications store was announced which will provide another one stop shop for people to try and buy web applications.   With  HTML5 on the horizon it is clear these applications are becoming feature rich and their complexity and adoption is likely to increase exponentially.  As a result it is essential that the developer be allowed, to use a professional programming language, top to bottom in the software stack.  It makes life easier, more robust, and fulfills the need to program professionally.  As we move towards the cloud, frameworks such as GWT, will increase in importance as the de-facto choice for cloud based web application programming.

19 comments:

  1. Will have to try Wave again, but when I first encountered it it certainly didn't make me want to use the same toolkit that resulted in slow and buggy product.

    ReplyDelete
  2. I also tried to use GWT for my project. But my experience is little bit different. I need to write more piece on my own. For example, there is no default support for authentication and authorization.

    Server and the Client should have different set of bean object in one stage. There is no default binding support for GWT widgets...

    Could you please comment on this?

    - Thamizharasu S

    ReplyDelete
  3. You should take a look at vaadim framework. It is built on top of gwt with an amazing set of components that are both easy to use and looking fine.

    ReplyDelete
  4. ** On Wave
    I agree, Wave was a buggy product but we all know we were getting alpha invites to the project. The Wave and GWT teams worked together to make both products better. I would give Wave a second look it is a lot more usable now.

    ** Authentication and Authorization
    I will take a look at this and suggest some solutions. Could you please expand on what you mean by no default binding support for GWT widgets and elaborate on the problem you are trying to solve.

    ** Vaadim
    I intend on reviewing that product soon. It is listed on our demos page, but I haven't got around to testing it yet.

    ReplyDelete
  5. Came here via DZone. A few sincere observations, I hope you take this in the spirit of constructive criticism.

    I notice on the "contributors" page you mention that you are a "major fanboy of GWT". Which is fine, but I suspect this could lead you to gloss over or even ignore the trade-offs you make when choosing GWT. I personally feel you should be aware of the strengths and weaknesses of technologies you like and extreme fanboyism may cause one to be blind to alternatives that may exist.

    For example it would be nice if you point out exactly *why* you think GWT is a "fantastic piece of kit" and exactly *how* you think GWT makes "web application development a lot simpler at every stage of the software life-cycle".

    >> GWT helps with this problem by providing a toolset
    >> that addresses many layers in the stack.

    Can you explain more on what you mean by "layers" and "stack" here?

    >> As we move towards the cloud, frameworks such as
    >> GWT, will increase in importance as the de-facto
    >> choice for cloud based web application programming.

    I really don't get this last sentence at all and this was what really prompted me to comment here. What has GWT got to do with the "cloud"?

    ReplyDelete
  6. I am currently doing an evaluation of Vaadin, and i already like it.
    The api, the community and the documentation are very good.

    ReplyDelete
  7. GWT is wonderfull if you need to bring a good intuitive and interractive GUI for your web app. If you don't like page refresh, and want to use a lot of javascript, then GWT is the route to go.

    It is optimised for performance and productivity for the javascript part of your application. If this part is tiny, or does not exist, or you don't need to do advanced javascript, you do not need GWT.

    Key point for GWT are :
    - making app with lot of javascript : You do it in java that is far better for productivity, maintenance and debugging. Basically it brings you powerfull IDE support (like Eclipse) for your client code.
    - Many optimisations for spliting code (and download only what's needed), using browser cache, making image sprites... Code optimised for each browser specific features. But you have only one code on your side.
    - If your server side is in JAVA, code can be shared by client of server (but be sure, to check you don't expose to much to the client). and calls to server can be as simple as to a function call with a callback.

    ReplyDelete
  8. * ptrthomas

    First thanks for the feedback I welcome it all.

    ** ..strengths and weaknesses...
    Agree I should be aware of all the strengths and weaknesses of any framework. I am a scientist at heart, so objectivity is at my core. I will try and address this at some future point.

    ** Layers and stack
    Layers: Data Layer, Business Layer, GUI Layer
    Stack: The combination of these layers.

    ** What has GWT got to do with the "cloud"?
    We are seeing convergence on mobile devices with a few several platforms becoming an industry standard. As more and more of our traditional applications move to the web, a standard and professional approach to web development is going to emerge. Because GWT addresses many problems for the developer, it is more likely to be adopted and used as the default package for building web applications.

    ReplyDelete
  9. One good point for GWT is that is can be embedded into any existing application and can be used whaever the programming stack you use.

    But I do not see it at the standard for web sites.

    You know GWT is not really for web site that just display some information, because here you don't need a lot of javascript. Theses web sites are not so interractive, but performance and scallability is typically really good.

    GWT is not for small webapp where developpers want complex GUI component bundled into they app... Something like Zk or JSF + RichFace provide. Theses framework are not good for high performance ans scallability. They are not good to fit with a design/brand too. But you can make a small web app that behave a little like a desktop app very fast...

    GWT shines where you do a custom solution. The solution will be made of HTML/CSS and a few GWT widgets. Because you take care youself of requests to the server and GWT is really optimised, you can expect the same scalability as a classic web site composed of pages. (You don't have the chatty exchanges for side event Zk or RichFace can have). GWT can nicely integrate with any web design has needed wheras components provided by ZK/RichFace have a look that is somewhat difficult to change.

    Because you have a real control of client part, you have the best usability and best performance. You have the best of both words, but it come to a price : more developpement time.

    It's far better than plain javascript with some JS library through.

    ReplyDelete
  10. Are u saying that richfaces is high performance? I have found it a bloated buggy p.o.s. Whatever u do don't use richfaces and seam

    ReplyDelete
  11. From my previous post :

    "Something like Zk or JSF + RichFace provide. Theses framework are not good for high performance and scallability."

    RichFace has poor performance. It can work on an Intranet but not for an application that could be used by millions of users on the web.

    ReplyDelete
  12. This article has generated a lot of interest. I am compiling a version 2 for this week. Thanks everyone.

    ReplyDelete
  13. @prthomas
    I would think that the cloud statement means that you can develop in the style of a desktop application but have it be cloud deployable (ie a web app).
    @Anonymous:"One good point for GWT is that is can be embedded into any existing application and can be used whaever the programming stack you use..."
    I would say that you are correct that GWT isn't really usable for the "standard" web page, that's probably because GWT really is meant to develop applications. As in I would develop a single application or widget and then embed that into my webpage. GWT is great in that you can see it as an alternative to Flex/Flash as far as controlling the client side.

    ReplyDelete
  14. @jhutton okay, but you can do so with a few other Java web-application frameworks. I think that is what concerns me with this article: that it is written by someone who quite clearly (and admits that he) has not explored all the alternatives - but nevertheless, freely uses words like "fantastic" and "simpler" to describe GWT.

    That said, I see a new blog post just posted by the author - looking at Vaadin. which is indeed useful, looking forward to more comparisons of that sort.

    ReplyDelete
  15. @ptrthomas. I don't know all possibles UI framework that does exist. I use struts/JSP on a daily basis at work.

    I tryed JSF 1 and seen is just a standardised Struts... Just more complex to use and far less used in pratice. I don't like it because i belive it's just another framework based on template, page concept and that it's offer poor AJAX integration... I tryed Richface and it's not usable for any real web site. For a small intranet it could work but it tends to be slow.

    JSF design for me is over complicated and broken. It seem JSF 2.0 should help but i just read some blog about it.

    We have wicket or any other templating framework available... Nice but they are just another templating framework. If you don't know any templating framework, learn JSF or struts 1. Avoid others simply because yet many are great nobody use them.

    With Flash, SylverLight, JavaFX, GWT, simply pure javascript (maybe with some javascript library), you enter a new era where you can really control the dynamics of the UI and can avoid page refreshs.

    From an UI design point of view, you can do anything you can do on a desktop app. And that what theses technologies brings to you.

    The real question is do you need them. And if so what technologies to choose ?

    IF you want to be standard, HTML/javascript seems better. But it can be a pain to develop the whole thing by yourself... Just because managing 10K ou 100K line of code written in javascript is just an huge pain. That why i'd choose GWT here. You can embbed in any existing application. You can manage a real code base without problem (because it's just java...). It does support crawlers. It's fast and optimised. It work on mobiles, on all browsers. It provide a good user experience, and adapt to any design you might want to use.

    Use javascript with libraries if you just want to add a few effects on a

    You can choose the flash/sylverlight/JavaFX route, crawler will fail to parse your application. Some devices or OS does not support theses kind of plugins, or user might have to install something to use your application.

    Out of the 3, choose Flash and avoid JavaFx. Most people know flash and it works great. Most of them have the flash plugin installed and it work on linux too. Avoid JavaFx. Because your customer must download a JVM before using your app.

    ReplyDelete
  16. As a Java application developer, I'm just starting to explore the wonderful (read confusing) world of web technologies. I'm still tasked with creating applications, but those applications are intended to be accessed via a web browser.

    Most of the web related frameworks I see are Web 1.0 focused; they are page oriented and provide infrastructure and glue to create navigable/crawlable websites. For the most part, they don't really provide much to support Web 2.0/AJAX type development. If you need to build a web application (rather than a web site) your decision space becomes somewhat smaller i.e. Javascript or, a plugin based platform (Flash, Silverlight, JavaFX etc.)

    With Flash, you're taking the risk of missing out on the Apple side of the universe. With Silverlight, you're in Microsoft land - great for some, but I, frankly, want to stay as far away from MS as possible. JavaFX - might be okay, but haven't really looked closely.

    So that leaves Javascript, and again, quite frankly, I wouldn't want to try to write and maintain a significant application in a non-typed language (I'm sure there are people who can do this, but ain't one of them ;-).

    So that leaves us with GWT. Which, so far, has made me believe that I can actually write complex, testable, maintainable web applications. It's still early days for GWT, but it's the approach that I'm pitching for my company's browser based network management system, so I certainly hope I'm making the right choice. So far, I haven't seen anything else that even comes close...

    ReplyDelete
  17. I couldn't agree more. GWT delivers the web using open source web components that are optimized for each available browser. By providing what is essentially a layer of abstraction it takes care of all the headaches developing for the web currently has. This abstraction allows professional programmers to develop professional software.

    ReplyDelete
  18. @Gene:
    But I think GWT helps lame programmers trashy softwares!

    ReplyDelete
  19. I have built a more complex UI than MS Outlook Web for my company within 20 days, using GWT. Only, the app I built had browser History integrated (MS Outlook Web doesn't). I also split the code up - so it is downloaded on demand. It is unbelievable. Totally thrilled. Don't think there is anything like it available IMHO.

    ReplyDelete