Imagine a bacon-wrapped Ferrari. Still not better than our free technical reports.

The Ultimate Java Web Frameworks Comparison: Spring MVC, Grails, Vaadin, GWT, Wicket, Play, Struts and JSF

Part III: The Results!

Now we come to the fun part! Let’s collate all our results and make sweeping statements about which Web Framework you should all be using, mocking those who are not using what we consider to be their best option… Kind of…

The Results

First of all, lets recap all the scores in each category for all frameworks. We’ve marked the (joint) winners for each category in blue:

Rapid Application Development Framework Complexity Ease of Use Documentation & Community Framework Ecosystem Throughput/ Scalability Code Maintenance/ Updates UX/Look and Feel
Spring MVC 2.5 3.5 3 4 4 4 3 2
Grails 5 3 4.5 5 4.5 4 4.5 4
Vaadin 4.5 4 4.5 5 3 4.5 4 5
GWT 4 4 4 4.5 3 4.5 4 5
Wicket 3.5 2.5 3.5 3 3 3 4.5 3.5
Play 5 2 3.5 4 4.5 5 4 3
Struts 2 4 3 2.5 3 3 3 2.5
JSF 3 3.5 4 4.5 4 4 4 4.5

Interestingly each of the frameworks we looked at either wins, or jointly wins at least one category, apart from Spring MVC and JSF. Let’s see how this feeds into the grand totals:

Framework Overall Score
Grails 34.5
Vaadin 34.5
GWT 33
JSF 31.5
Play 31
Wicket 26.5
Spring MVC 26
Struts 23

Well, there’s certainly no runaway winner, in fact, the top 5 are only separated by 3.5 points! But then a gap separates them from Wicket, Spring MVC and Struts. Vaadin and Grails just take the top spot, which seems fair, looking at how they stood up to our tests.

Grails came out on top for 5 of the 8 categories, doing particularly well around the Rapid application development, documentation and community with top marks. The only area it  struggled a bit with was the framework complexity category, mostly because of it’s reliance with Spring, GORM, Groovy and more adding layers and layers of abstraction.

Vaadin won 3 of the categories, and also got a 3/5 in one of the categories, but was typically matching Grails blow for blow through the competition. It excelled in its documentation and community category which is excellent as well as the UX, look and feel category, which to be fair is what Vaadin is all about.

What if you no longer had to redeploy your Java code to see changes? The choice is yours. In just a few clicks you can Say Goodbye to Java Redeploys forever.

GWT wasn’t far behind, which you’d expect given how similar it is in functionality to Vaadin. In fact it matched it in all categories apart from 3, where Vaadin only pulled ahead by a half point in Rapid App Development, Ease of Use and Documentation and Community: arguably some good reasons that Vaadin was maybe created over GWT.

Interestingly, after mentioning that JSF hadn’t won any of the categories, it sits in 4th place, mostly due to it’s solid performance throughout, only dropping below a 4/5 twice, in Rapid Application Development and Framework Complexity. It’s worth mentioning that calling JSF a “web framework” is often debated due to it’s inclusion in the Java EE stack, so we’re glad to see it perform strongly considering it’s specific place in Java.

Play could have finished higher, but for the framework complexities and ease of use. It really isn’t a framework that is very easy to get up to grips with quickly. We use Play at ZeroTurnaround and this is certainly the vibe from the engineering team. Once you get used to Play you can create applications very quickly, but where it really excels is in the scalability and throughput.

Spring MVC, Wicket and Struts didn’t do particularly well up against the other frameworks. Spring did reasonably well in quite a few categories, but really fell short in the UX, Look and Feel category as well as the Rapid Application Development category. Struts was poor across the board as was Wicket, apart from one victory in the Code Maintenance/Updates category which really put it above Spring in the rankings.

In the end Grails and Vaadin are the big winners, followed reasonably closely by GWT, JSF and Play. There you have it. Now you can go home ;-)