RSS Feed Subscribe to RSS Feed

 

JavaOne: Comparing Java Web Frameworks

The first talk I attended at this year’s JavaOne was “Choosing Your Java Web Framework” by Richard Pack from salesforce.com

Overall, I found this a really interesting talk. It was lacking in any sales pitch, nor did it have the unquestioning devotion to one particular framework that I felt some of the Java FX talks had. Instead it seemed like an unbiased look at web frameworks in general and a handful of frameworks in more detail, based on Richard’s extensive and hands on experience and SalesForce and Hyperic.

Richard started by listing some of the web frameworks that are out there today. He managed to list over 100 and there were still many missing (e.g. I couldn’t see Lift or Play listed).

Given the abundance of choices, I think it was wise to start with a broad definition of what a web framework is. His definition included something that uses MVP or MVC and provides an event model, resource management, data binding and that is ideally stateless.

He then talked about the evolution that has taken place from server side rendering to client side rendering (where you have a stateless server, with the component model living on the client side), and had a few interesting ‘Architecture Evolution’ diagrams in his slides.

Next, Richard talked about the consequences of ‘choosing poorly’, i.e. picking a framework not best suited to your project’s needs (steep learning curves, excessive boilerplate code, unable to debug templates etc). I got the feeling Richard had learned many of these the hard way. He followed with a set of criteria to help better define your web framework requirements and selection criteria to avoid such issues, including usage scenarios, environment (intranet, mobile) and team competencies. On a side note, he pointed out that using forms for posting had become old hat (and those ‘Are you sure you wish to resend’ popups are certainly annoying).

Then, on to the main event. Richard ran through 4 of the most popular web frameworks: Grails, Tapestry, Wicket and GWT. In each case he compared them using criteria such as AJAX support, friendly URLs, open source license etc. I won’t try to recreate his findings (again, see his slides), but I did come away with a higher opinion of both Tapestry (its Form builder using POJOs sounds particularly cool) and Wicket and I am definitely keen to learn more on GWT (which Salesforce.com use extensively).

In some of the follow up questions, Richard was asked about JSF, which he didn’t have very high opinion of (and he is not alone). I was however disappointed to not hear some info (merits or otherwise) on JavaFX, especially considering its high visibility at this year’s conference, but I also understand no one can know all frameworks.

Finally, he finished with an interesting thought – that one of the main scalability issues with any web framework is people i.e. the competencies and preferences of the developers on the team.

Find Richard’s slides here.

Tags: , , , , , , ,

12 Responses to “JavaOne: Comparing Java Web Frameworks”

  1. Skyhan |

    It’s unfortunate that frameworks such as Seam, Struts 2, WebWork, AribaWEB and Spring MVC are not even mentioned here given the title is Comparing Java Web Frameworks.

    I think the subject should be taken with a wider perspective.

  2. James |

    I also attended this session; however, I was quite disappointed with his presentation. In my opinion, the list of frameworks he discussed were far to narrow, add into the fact that he didn’t even consider JSF serious or viable web framework shows his lack of effort in providing a good evaluation of the various frameworks.

    Again, this is just my opinion.

  3. Nid |

    Yeah, if you’re still thinking of Struts and Seam and WebWork and Spring MVC as “viable” competitors to the likes of GWT, Tapestry and Wicket you should just stop looking at how technology is evolving period.

  4. sabram |

    In fairness to the speaker, he did say he was not covering Spring MVC or Vaadin since they are similar to some of the frameworks he did cover (Grails and GWT respectively).

    Also, since most talks only cover a single framework, I thought it was refreshing and useful to see multiple covered. He did try to cover the basics of what all web frameworks do though and I doubt he would have had time to go into any kind of meaningful detail on more than the 4 he did cover (Grails, GWT, Wicket & Tapestry).

    Anyway, glad to see that the subject of web frameworks still elicits such debate! Personally, I have used Spring MVC in several large projects and think it a very useful, easy to use framework. Having played around with GWT, it looks good, has a lot of real world apps using it and I would like to use it more. I only have anecdotal info about the others but have heard good things about Wicket and Tapestry but have heard enough negative comments on JSF to not want to touch it.

  5. Howard M. Lewis Ship |

    Covering Tapestry 4 at this point is about as useful as covering Struts 1. The “new” Tapestry 5 code base dates back to 2006, the feature set is light years ahead of Tapestry 4, the templates and code is much, much simpler, and backwards compatibility is no longer a challenge … the upgrades from 5.0 to 5.1 to 5.2 and now 5.3 is smooth and getting smoother … and Tapestry gets faster and uses less memory with each release.

    I wish I had attended this talk, it would have been a good chance to fact check him.

  6. sabram |

    Howard,
    Thanks for jumping in (and flattered you read my blog).

    Good to know the Tapestry migration issues are a thing of the past.

    Shaun

  7. Rivers |

    I was evaluating various frameworks recently.
    My final selected frameworks for the company I worked for is JSF, GWT or vanilla servlet. JSF is not perfect, but the support is better than Wicket and its a standard. Its Ajax facility is good and simple,and I only need to use a few of its tags for all CRUD apps functionality. Wicket is restricted to server side ajax and its components too limited. For CRUD websites, I would use JSF or vanilla servlet. Spring is over-rated. Xml-based config is nonsense. While its new annotation-based config is alright, I wouldn’t go with outdated jsp. Seriously, what we need is something btw Wicket and JSF.

    For single or few pages WebApp, I simply will use GWT, or vanilla js/servlet.

    Simple as that.

  8. Rivers |

    Allow me to add, for CRUD sites, I woudn’t use JSF exclusively, but a mix of js libs and JSF ajax. U cant walk away from the extensive js libs out there and client side ajax. The only useful feature abt JSF is the simplification of ajax. Dont even talk about Spring, its way too over-rated. I must add finally that i hvanet seen the perfect framework. Perhaps some combination of Wicket, JSF and Spring (in addition to what i mentioned ealier) would be good.

    PS: I havent evaluated Tapestry and Struts though. The impression I got was that they belong to the past.

  9. Joonas |

    Reasoning for not comparing Vaadin was “it is like GWT”. This is quite far from truth: while Vaadin uses GWT and support GWT components, most of the Vaadin programming is done one abstraction level higher on the server-side. This makes programming these frameworks very different and gives different pros and cons for each.

  10. Dr. Umar |

    It sounds like nice overview of frameworks. Recently our company is planning to launch intranet portal and we are under the decision making process for choosing the right framework. i think the slides would be helpful but due to some issues with google docs, i can’t access the presentation directly. can i get it from other location? thanks

  11. sabram |

    Hey Dr Umar,
    Link seems to be working fine for me, but I have emailed you a copy of Richard Pack’s slides.

    Shaun

  12. Dr. Umar |

    Thanks Shaun. i got it. its really useful. However after refining the product requirements and everything we are thinking to consider only those frameworks that support portals like Oracle Portal, Liferay Portal etc. but i can’t find some meaningful comparison of those ~

    Anyway, thanks for prompt response :)

Leave a Reply