Using the new community research tool, we at InfoQ want to get YOUR opinions on the relative importance and maturity of a variety of web frameworks that are targeted for the JVM. Please vote by dragging each practice across two dimensions – how important is the framework relative to the other frameworks, and how much is it actually used in real teams and projects.

When I first saw this article, I noticed some strange web frameworks listed. Namely, Netty, SiteMesh and Spark. I haven't heard of many folks using Netty for a web framework, but I'm sure it's possible. SiteMesh is certainly not a web framework and I've never even heard of Spark. And where is GWT and Vaadin? Regardless of the choices, I went ahead and voted.

First of all, it's interesting to see that JVM Web Frameworks is still a hot topic for developers. Whenever I do my Comparing JVM Web Frameworks talk at conferences, I always see a few jabs about "he's still doing that talk!?" Yes, it seems strange that a talk I first did in 2004 is still in high demand.

Secondly, I think InfoQ does good in showing how the frameworks ranked and showing their heatmaps. Below are their rankings from 1109 participants.

According to this research, the top 5 web frameworks for the JVM are Spring MVC, Play, Grails, JSF and Struts (I hope those surveyed meant Struts 2, not Struts 1).

In my research from last February (slide 21), I ranked them (with no particular weightings) as Grails, GWT, JRuby on Rails, Spring MVC and Vaadin. So I guess you could say I got 2 out of 5 right (Grails and Spring MVC). Not bad considering InfoQ didn't even consider GWT and Vaadin.

Another intriguing data point in this study is each frameworks' heatmap. For example, below are heatmaps for the top 4 frameworks.

Notice how Grails and Spring MVC are both hotter in the bottom right corner? It seems the community's overall opinions of these two frameworks are more aligned than JSF and Play, which a fair amount of folks rank as hyped and unimportant.

What I really like about this research is it's the community's opinions, visualized. It also confirms that some of my favorite frameworks are still on top. I don't know if JSF belongs as a top framework, however it seems a lot of folks do. I recently thought about removing it from AppFuse, but decided to keep it (at least for the next release). I hope InfoQ does more research projects like this, especially if they get their list of web frameworks right.

I watched one of presentations
this year
after reading some of your articles over the years. A
quick
"Bravo" to you. Not many technical people are able
to
"communicate" complex ideas without glory details
(time
constraints, 'mixed' audience, etc.).

Your
JVM framework
talk will remain relevant for many
years:

Sometimes non technical people
drive
architecture decisions

If a framework is
appealing, it may
still represent a corporate
risk.

John Doe
believes that JSF is better, the
problem is that there's too much
choice,specific expertise, too many
meetings (No Decision Matrix
initially), politics, etc.

I share most of
your comments about
InfoQ's article. It's got to be an undercover
job
:-).

Sitemesh doesn't belong to that
list... I'm
concerned... I would qualify it as 'some kind of
templating
infrastructure with flexibility at the
view
layer).

I also see lots of GWT nowadays
(GXT
mostly). I'm currently working with Grails. It's a bit strange that
GWT
isn't mentioned in InfoQ's article.

In
Canada
at least, I would say that Vaadin is pretty much inexistant...
I've
never used it but I read few articles here
and
there.

About JSF, I would consider it a
top
framework. Many developers are making a come-back. Instead of
playing
around with tons of frameworks here and there, they try to stick
to Core
Java/JavaEE.

I've used early VRaptor
versions
about 7/8 years ago (velocity views, sitemesh, basic
hibernate
integration at that time, simple but efficient). I'm not sure
that even
10% of Java Web developers in the world know what VRaptor is.
The
adoption rate is fake for sure :-). In terms of main Web Framework
for
an organization, I would likely consider it a risk. It was fun
using
VRaptor 1.x, but at the corporate level, I would question
the
choice.

I've seen articles about people
using
Tapestry, etc. Sadly, I've never been around developers that
use
Tapestry in production... Most people go with Wicket after looking
at
stateful component based alternatives. I played with it
"very
briefly" 3.x and 4.x.

I would
never
recommend Struts to a friend period too... I believe that you
said
something among those lines at Devoxx 2011, if I recall correctly.
It
served its purpose. Sadly some people will always stick to what
they
already know => "You tried your best and failed miserably.
The
lesson is: never try." Homer Simpson quotes.
There's too much
existing
Struts code to make it vanish...

I've also never heard
about Spark. Not sure about
where they get their data from. In the real
world, in terms of adoption
there's Struts, lots of it, and if not
Struts, it's JSF or Spring MVC.
In less conservative organizations,
people might be able to suggest and
use something else (GWT, Grails and
others).

I think you shouldn't assume honesty, or even objectivity, in an unscientific poll. You should take the spread of responses into account. Bigger spreads can mean varied experiences, or it can just as easily mean the responses have a higher degree of subjectivity. You can really see that in the case of JSF, a framework known to have a very polarizing effect on developers.

All you need to do is look at the want ads to see that JSF is a top JVM framework, and will likely be that way for as long as JVM frameworks remain relevant.

I've seen your presentations a couple of times (last time on Devoxx), and I think they are still relevant even to this day. New frameworks are popping up, other ones are dropping from the radar and some are changing drastically (like Play going from Java to Scala). It's a topic that's going to be relevant for quite some time.

There is one little thing that does bother me in those presentations, and that's your fairly obvious bias against JSF. In your talks you e.g. ask who uses JSF, and when a large number of hands show up you always ask who of those likes JSF. Some hands drop then, and you say something like: "See!".

It's a nice trick, but for some reason I've never seen you asking that followup question when it concerns one of the other frameworks. I wonder why that is.

If you are presenting yourself as, more or less, an authority on comparing web frameworks, then having a fairly obvious biased against one of them is just peculiar. I, all of my team, and various clients distrust your ranking of JSF. We do look at your data if the choice is between other frameworks, but as soon as JSF comes into the picture we just look elsewhere.

I'm not really sure where this bias comes from. Yes, JSF 1.0 sucked and 1.2 was only marginally better, but 2.0 is really cool and productive and there are SUPERB component and utility libraries now like PrimeFaces and OmniFaces. As a researcher of this topic I think you should keep up the date and not stick to some old grudge.

[Trackback] In my last post about InfoQ's Top 20 Web Frameworks for the JVM , I received a thought-provoking comment from henk53 :
There is one little thing that does bother me in those presentations, and that's your fairly obvious bias against JSF. ... ...