Matt RaibleMatt Raible is a Web Architecture Consultant specializing in open source frameworks.

10+ YEARS


Over 10 years ago, I wrote my first blog post. Since then, I've authored books, had kids, traveled the world, found Trish and blogged about it all.

ApacheCon EU: Comparing Java Web Frameworks Presentation

I said I'd post my presentation after my talk this morning, so here it is:

Download Comparing Java Web Frameworks Presentation (1.1 MB)

I went a bit long on the presentation, but the crowd (standing room only) seemed to enjoy it. Thanks to all who attended!

Posted in Java at May 04 2007, 02:45:55 AM MDT 23 Comments
Comments:

Half of the presentation was good - the other (first) half I missed having stayed up too late drinking.

Posted by Niall on May 04, 2007 at 04:11 AM MDT #

Excellent presentation Matt, though I wish I'd seen it last year! I've just taken the plunge with JSF and have recommended it to my boss, now I'm thinking I should have paid more attention to Struts 2. Ho hum...

Posted by Kev on May 04, 2007 at 04:30 AM MDT #

For the REST-Problem of JSF: It seems that there is a solution by the jsf-spring developers: have a look at : http://www.mindmatters.de/weblog/2007/03/02/jsf-spring-4-0-released/

Posted by kia on May 04, 2007 at 05:00 AM MDT #

Some wicket comments (I've been using it for 18 months now on 4-5 projects)

AJAX: wicket also has a builtin mechanism that let's you do some nice stuff without any additional libraries (like ajax submitting form, changing component hierarchy via an ajax call, etc)

Validation: "no client side" is true if you're not using AJAX, but it is very easy to put server side validation into action via an AJAX behaviour added to your components. This way every time you leave an input field, an ajax roundtrip call to the server can occur which can do both semantic and syntactic validation on the fly. This can be achieved in 3-4 additional lines of Java code (no javascript needed).

I18N: you say "Wicket advocate separate files for each page/action". This can be done, but wicket also uses resource bundles for messages. In html you can specify <wicket:message key="key.name"/> which is similiar to tapestry's span. You don't need to declare resource bundles - wicket first searches for a .properties file with the same name as the component, then the page and then the application. This makes it easy to create new component bundles (a .jar file with .java/.properties/.html bundled).

Page Decoration: Wicket's Border component is very good at decorating pages.

Tools: you don't really need more than a Java IDE...

Posted by Janos Cserep on May 04, 2007 at 06:13 AM MDT #

Thanks for posting the slides - looks like a pretty fair assessment of the state of things to me.

Posted by Jesse Kuhnert on May 04, 2007 at 06:36 AM MDT #

If this is the current state of things, then they really do not look that much different than 3-5 years ago. Back then we had a de Facto standard emerging (Struts/Struts2), Sun put out a half finished product (JSP/JSF), and a lot of little players were struggling to go mainstream (Tapestry/Wicket-Grails-etc...) Is the Java Community actually making progress here... Not to troll, but seeing things like this really enforces my decision to use Ruby on Rails. Excellent language, convention over configuration, and less choice... --Ryan

Posted by Ripley on May 04, 2007 at 08:47 AM MDT #

Ripley: That's not a totally invalid concern, but I don't think this presentation is focused on "bleeding edge" trends but more on current "pick a tool for your project" sort of comparisons. . For more info on more exciting next generation stuff I'd recommend looking at http://www.infoq.com/news/2007/04/java-web-reloading . (or even http://www.theserverside.com/news/thread.tss?thread_id=45000#231126 ) Not that I don't enjoy programming in dynamic languages as much as the next guy - but I wouldn't do it for a large scale enterprise app. ;)

Posted by Jesse Kuhnert on May 04, 2007 at 09:29 AM MDT #

Matt, which one would you choose?

Posted by -FoX- on May 04, 2007 at 11:58 AM MDT #

@Ryan: Why is it so important to have 'winners'? Some of the small players you mention are amongst the most active open source projects around in terms of development, support (mailing lists, IRC, etc) and users (tens to hundreds of thousands of *measurable* downloads. And... you can download the sources! Are you afraid that if you don't pick the 'winner', you won't find programmers who can learn it/ limit your career/ get stuck with a project with bugs that can't be fixed? My pet example is PNuts. Lovely little scripting language that performs extremely well, integrates nicely with Java, and has very decent source code. But it's not very popular nor very actively maintained. Still, it works very well for me/ my projects. Why on earth would I pick something I like less based on what other people sheepishly think of it? :)

Posted by Eelco Hillenius on May 04, 2007 at 02:53 PM MDT #

As the resident troll, does any of this matter? Does it register to anyone that all these java web frameworks are not actually adding value to the end user? Lets cut through the consultant BS for a minute; the vast majority of "web frameworks" are used to display and interact with db content. Are we really going to get more utility from JSF than something simple like cherrypy? Is this about how to maximize utility or how to turn an 20 hour project into a 2000 hour one? I think there are a lot of bright people tackling yesterdays intellectual challenges.

Posted by Alonso on May 04, 2007 at 09:02 PM MDT #

Alonso: I'm having a hard time swallowing the brighter / better future part of your arguments - especially since my best friend is responsible for launching one of the "poster children" web sites for your dynamic runtime. It it big neat / lots of fun? Yes - of course! Is it impossible to scale and a constant delicate headache to find new inventive ways to make otherwise slow runtimes magically speed up ? Yes! So anyways, before you get too comfortable in your smug little dyna world I'd just like to make sure everyone knows that it's not all roses on the other side. Small scale yes, large enterprise - no. ...Not yet - . ...(as dave chappelle might say)

Posted by Jesse Kuhnert on May 05, 2007 at 07:01 AM MDT #

I also enjoyed the whole presentation and found it to be fair in all comparisons, though the cons for the Wicket framework were a bit taken out of context IMO. The fact that resources (HTML, properties, javascript, css, etc) reside in the same folder as your java files is for a reason: building true reusable components. Build a jar containing all these things and presto you have a component that can be used in any project by just using '<tt>new MyComponent()</tt>' and not having to care about including the stylesheet or any javascript files. Other than that, I had a great time. I'm glad I didn't miss this presentation.

Posted by Martijn Dashorst on May 06, 2007 at 05:50 AM MDT #

I'm not sure what the "large enterprise" arguement is really getting at as far as Ruby on Rails or dynamic languages are concerned. Check out any of the 37signals applications or 43 things. Millions of users and running strong.

Posted by Ripley on May 07, 2007 at 10:19 AM MDT #

Thanks for the great slides. Anyway to get a transcript of the talk? Is there movie or notes I am not seeing? Thanks again, Rob.

Posted by robert parks on May 07, 2007 at 01:25 PM MDT #

A side note: the job numbers could be real, or just a measure of job turnover. Talking to my friends, 80% of the job offers seem to be from projects in the death march. I mean, if you have a cool technology that works, the team tend to stay; if the technology sucks, people leave and you need to fill those positions again. This could explain the disaccordance between job positions, books, and mailing lists.

Posted by Ignacio Coloma on May 08, 2007 at 09:27 AM MDT #

Would you consider putting up a presentation which includes voice over for the slides?

Posted by Antony Stubbs on May 08, 2007 at 03:18 PM MDT #

Antony - I agree that an audio/visual version of this presentation would be much better than the slides. It wouldn't be too hard to create a video-based version of this, but I think the live version (with audience interaction) is much better.

I'll be doing this presentation again at JA-SIG this summer (in Denver) and OSCON (in Portland). I also submitted it as a proposal to JavaZone and ApacheCon US. Maybe one of those shows will do some sort of recording. I've also thought about creating one that covers the supposed "kick-ass" web frameworks of 2007: Grails, Seam and GWT (are there others?).

Posted by Matt Raible on May 08, 2007 at 03:31 PM MDT #

Thanks very much Matt,

It was a great presentaties. Especially the comments about JSF not being complete without Facelets sound so familiar.

I think we made the right choice currently to go with JSF+Facelets on our current project. The XHTML pages are very clean using the composition-tags. Working with compositions instead of insertion made me very happy, its kind of odd the first time, but the reusability gain is tremendous. Using a general composition with CSS-layout and messagebundle defined for the whole project, or subgroups makes I18N easier in JSF.

And one more thing, although Spring MVC doesn't have build-in AJAX support, with the use of DWR it could be done quicker then most build-in features in other frameworks.

Posted by Roy van Rijn on May 09, 2007 at 02:49 AM MDT #

Thanks, This is one of the few sites i have seen do a thorough comparison. So which one did you choose? The slide just shows the question. I have seen you mention Struts 2 elsewhere. Is that your choice regardless of the type of project?

Posted by Steve E. on May 17, 2007 at 06:18 PM MDT #

Hi Matt, here's a late question :) Looking at all the graphs shows that Tapestry is very popular. However, the last graph (Appfuse usage) suggests exactly the opposite. Do you have any theories for this?

Posted by Andreas Andreou on June 26, 2007 at 04:43 PM MDT #

Steve E. - I think the type of project is very important when choosing a web framework. For heavy-forms, intranet types of projects, a component-based framework is probably best. I recommend Tapestry or Wicket. For high-throughput, something like Spring MVC, Struts 2 or Stripes is probably better.

Andreas - my only theories are 1) Tapestry users aren't aware of AppFuse or 2) we're not doing things the Tapestry-way (i.e. SiteMesh), so folks choose something more like Trails instead. Or it's possible that Tapestry folks like to start from scratch. ;-)

Posted by Matt Raible on June 26, 2007 at 04:49 PM MDT #

Interesting review.

[OT] Curious, how about a comparison of ORM frameworks? What are your thoughts on that topic :-)

Posted by Franz See on September 26, 2007 at 10:36 AM MDT #

Franz - I wrote a post on Hibernate vs. iBATIS a couple of years ago. In reality, I think the middle-tier dominance has been "won" by Spring and the ORM space has been "won" by Hibernate. There's not as much debate (or passion) in those two areas. Since the web hasn't been dominated by one or the other, there's still a lot of debate on the web frameworks topic.

Posted by Matt Raible on September 26, 2007 at 10:41 AM MDT #

Post a Comment:
  • HTML Syntax: Allowed