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

Your time is too valuable to sit around waiting for your code to redeploy. Seriously, imagine how much more you could accomplish if you choose to Eliminate Redeploys from your daily routine!

Summary of Findings and a Goodbye Comic

Wow, you made it to the end! Or maybe you skipped to the end ;) Either way here’s the report summary in manageable byte-sized pieces.

For those of you pulling a TL;DR (too long, didn’t read), here is a sum up of each category we measured.

  • Rapid application prototyping

    • Here we see quite a range of scores, with Grails and Play coming out on top, due to the mostly to the scaffolding support. Vaadin was close behind and the Vaadin Directory of plugins is worth a mention. Spring and Struts really struggled here, with few out of the box components.

  • Framework Complexity

    • Vaadin, GWT and Struts prove to be the simplest of frameworks with fewest dependencies, while Play struggles, particularly with its reliance on Scala knowledge and SBT.

  • Ease of Use

    • Grails and Vaadin did well when it came down to the ease of use, particularly due to the configuration, and design mode. Spring and Struts again suffered, due to the amount of knowledge required to use and the amount of configuration required.

  • Documentation & Community

    • Grails and Vaadin again took top spot with their vibrant communities and extensive docs. Struts and Wicket have problems with their official documentation, so fared badly again.

  • Framework Ecosystem

    • Grails and Play both have good ecosystems, including build support all the way to tools and plugins. Spring MVC also has a good ecosystem, although some of which is commercial. Other frameworks are quite specific to their task, but do have integrations with other projects.

  • Throughput/Scalability

    • Play was easily the winner here as it’s features are so suited to scaling and throughput, supporting async applications with Akka actors. GWT and Vaadin also did well as their model is based around client side execution.

  • Code Maintenance/Updates

    • Grails and Wicket did particularly well with most config relying on default convention. Wicket also has a nice HTML/Java split which makes changes much easier.

  • UX, Look and Feel

    • Vaadin and GWT excelled here, with neat usage of customizable themes and the ability to inherit from existing themes. Presentation wise, they are both very easy on the eye. Spring MVC and Struts both suffered here, clearly not one of the goals of the framework.

So what does this all mean?

As with our Great Java App Server debate, not all frameworks are created equal. In the same way that comparing WebLogic with Jetty doesn’t exactly make sense to some readers, some of you will surely find issue with comparing Spring MVC, which is part of a much larger framework ecosystem, to Vaadin or Struts. Also, in reality you might choose a combination of frameworks, rather than just one, making use of the best aspects of each framework. This is why we are preparing a second part to this report, where will measure these same frameworks from the use-case perspective, thereby slightly muting the straight numbers seen in this report. After all, a large team of developers creating big enterprise apps might be prepared to spend more time getting set up with a more heavyweight framework rather than a hobbyist developer.

We’re hoping to hear from product or team leads from each other frameworks, so we’ll be able to hear some commentary from the horse’s mouth. So stay tuned for that, and be sure to reach out to us in the comments section below, or ping @ZeroTurnaround.

Seriously, download the PDF version already! ;-)

Read next: