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 II: Going Ninja

It’s time to Go Ninja and look more at the results of what your Web Framework will leave you with in your runtime.

This section includes what you now need to deploy into your runtime to run your web application, how it would perform under the pressure of heavy load and multiple users, as well as how it looks and how rich the UX experience is.

We’ll now focus on the remaining four categories:

  1. Framework Ecosystem

  2. Throughput/Scalability

  3. Code Maintenance/Updates

  4. UX, Look and feel

Keep reading, we’ll soon be able to tell you which framework, on paper, we think is the most awesome!

5. Framework Ecosystem

The framework ecosystem covers how extensive the framework is in itself, it’s functionality, it’s build infrastructure and it’s integration with others. Very often, an large ecosystem can mean increased complexity, but not always. This section also depends heavily on user needs, which we will discuss further in the next report.

Spring MVC

Spring MVC’s ecosystem is well-developed. As it is based and dependant on the Spring Framework itself, it can benefit from tools like Spring Roo and Spring Tool Suite IDE. There are no problems with Maven dependencies as everything is available in a public Maven repository and also from SpringSource’s own Maven repository. There are 3rd-party solutions like MyEclipse for Spring, which includes scaffolding capability for Spring MVC.

Score: 4/5 — Still some very useful parts of the ecosystem are commercially available and this makes it not available for everyone.


Grails

Grails is a full-stack web framework, not just MVC. It contains a lot of stuff out of the box, but luckily, it doesn’t enforce it. Don’t like the built-in build tool? No problem, you can integrate with Maven or Ant. You’ve started using some NoSQL solution like MongoDB or Neo4j? You can remove Hibernate from underneath the GORM and exchange it with MongoDB/Neo4j.  You want to add caching or security capabilities? There is a plugin for that! Actually a lot of them (OVER 900: http://grails.org/plugins/) that provide a Groovy API for a lot of well-known Java libraries. And they are super easy to install – just add compile ":lib_name:lib_version" to your build script.

Score: 4.5/5 — Grails is a full-stack framework, but many provided parts can be replaced, and there is a big library of plugins


Vaadin

Vaadin doesn’t really provide an ecosystem as such. But does allow for it within the Vaadin Directory. For example, let’s say you wanted to use Hibernate with Vaadin, you’d need to download the plugin, and you’re ready to go. There is integration advice and documentation around how you can integrate with Spring, Flex, Liferay, Maven, but not much else. Ultimately, because the ecosystem doesn’t exist out the box, when you need to expand your application your complexity will grow as you support the different technologies and their integration.

Score: 3/5 — Can only go so far with integration, but is not an ecosystem out-of-the-box by any means.


GWT

GWT allows you to quickly build and maintain complex and highly-performant JavaScript front-end apps in Java. The GWT SDK allows you to write your AJAX apps in Java and then cross-compiles the code into JavaScript that works across all major browsers. The SDK supplies a core set of Java APIs, libraries, app server and the compiler, and you can also mix in your own JS code and existing JS libraries.

Score: 3/5 — GWT SDK with a core set of Java APIs, libraries, app server and compiler. Works well alone but better with others, and is not an ecosystem out-of-the-box.  

Wicket

Wicket is a full-featured framework that allows you to create reusable components and build up from those components in your projects to come. It is a server-side framework that has great AJAX support built into it and makes building pages with AJAX components a breeze. If you are a JavaScript fan, you can use your favorite client-side JS library to do things and then have Wicket server the data in any required format.

Score: 3/5 — Wickets gives you a full MVC with AJAX support, but plays well with others rather than standing alone.


Play

Play really shines in this category, as it is bundled with SBT (Simple Build Tool) for building, Netty for a non-blocking networking I/O, Scala is used as a templating engine, and Akka is included for asynchronous operations. Play, unlike many Java web frameworks, includes a binary that is used for scaffolding of your applications. The Play framework is an all-encompassing ecosystem solely developed to increase developer productivity while minimizing the dumbing down of capabilities or shortening of feature lists.

Score: 4.5/5 — Play provides everything you need to develop, run, and test your applications. The only real downside is Play’s reliance on Scala for templating and SBT.


Struts

Struts doesn’t enforce anything else than just itself. You may choose from a variety of template engines, build tools, ORM implementations, dependency injection frameworks. There are some plugins (https://cwiki.apache.org/confluence/display/S2PLUGINS/Home) that can help you with integrating Struts with other technologies. If there is no plugin, then most likely there is a user-written tutorial out there somewhere.

Score: 3/5 — Another pure MVC that is ready to be integrated with other technologies.


JSF

JSF’s ecosystem includes component libraries such as Richfaces, OmniFaces, Primefaces, IceFaces, ADF Faces as well as the extension points, including PrettyFaces, GMaps4JSF and Mashups4JSF. The real value however is being part of the Java EE specification. JSF can be easily added to your existing Java EE environments and immediately receives all of the benefits inherent in the Java EE ecosystem. JSF can be leveraged on non-EE containers as well, with open source support from the Apache Foundation with their MyFaces implementation of the JSF specification.

Score: 4/5 — Because it is part of the Java EE specification, JSF receives all of the benefits and tooling of Java EE. That includes great IDE support and a lot of functionality built into the application servers.

web-frameworks-framework-ecosystem

Framework Score

Grails

4.5

Play

4.5

Spring MVC

4

JSF

4

Vaadin

3

GWT

3

Wicket

3

Struts

3



DOWNLOAD THE PDF