Last Update: Monday, December 6, 2010

More Information: 

Developer Productivity

- 0 if no save/reload functionality, 0.5 if provided by JRebel, 1.0 if built into framework.

- Struts 2, Spring MVC, Wicket, JSF, Stripes and Lift all have JRebel plugins == 0.5.

- Tapestry, GWT, Grails, Rails, Vaadin and Play have zero turnaround built-in == 1.0.

- Flex requires Flash Builder (Eclipse IDE) to have zero turnaround == 0.


Developer Perception

- 0 if users are unhappy with the framework, 0.5 if there's some positiveness, 1.0 if they love it.

- Lot of happy Spring MVC, Wicket, Stripes, GWT, Grails, Rails, Lift and Play users == 1.0.

- Struts 2 and Tapestry not as wildly enthusiastic as they used to be == 0.5.

- JSF users are often not that happy with it == 0.


Learning Curve

- 0 if difficult to learn, 0.5 if easier, 1.0 if can learn in a day.

- Struts 2, Spring MVC and others are easy to learn (for me) == 1.0.

- Wicket, JSF, Tapestry require you know more than just Java web development knowledge == 0.5.

- Lift requires you learn a new language, not as easy as Java -> Groovy == 0.5.


Project Health

- Releases in 2010, mailing list traffic, books, tagged questions on

- Ranked where 1.0 means healthy, 0.5 means OK, but not as good as others, 0 means declining health.

- 1.0 == Spring MVC, Wicket, GWT, Grails, Rails, Vaadin, Lift and Play

- 0.5 == Struts 2, JSF, Tapestry, Stripes and Flex

Developer Availability

- Rating based on number of developers with the framework listed as a skill on their LinkedIn profile.

- 1.0 == Spring MVC, JSF, Tapestry, GWT, Rails, Flex

- 0.5 == Struts 2, Wicket, Stripes, Grails, Vaadin, Play

- 0 == Lift


Job Trends

- Rating based on number of jobs on, as well as job trends from

- 1.0 == Struts 2, Spring MVC, JSF, Tapestry, GWT, Rails, Flex

- 0.5 == Tapestry, Grails, Play

- 0 == Wicket, Stripes, Vaadin, Lift



- Rating based on the number of UI templating options are available for the framework. For example, a framework that can use JSP, FreeMarker and render in PDF and Excel is much higher than a framework that only does JSP.

- Struts 2, Spring MVC, Grails, Stripes and Rails score 1.0 because there's so many template options.

- Wicket, Tapestry score 1.0 because there's such clean separation b/w view and controller.

- JSF scores 0.5 because Facelets is only option.

- GWT scores 0.5 because only Java and 2.x UI supported.

- Flex, Vaadin, Lift and Play score 0.5 because they don’t have as many templating options.



- Rating based on how easy it is to package UI functionality into components and share them across projects. Component-based frameworks score high, request-based frameworks do not.

- 1.0 == Wicket, JSF, Tapestry, Flex and Vaadin

- 0.5 == GWT, Grails and Rails

- 0 == Struts 2, Spring MVC, Stripes, Lift and Play



- Rating based on two things: 1) if Ajax functionality is baked in and 2) how well the framework produces and consumes JSON. Hard-coding an Ajax framework reduces the rating as I don't believe this is a good thing. If Ajax framework is configurable, 1.0 is given vs. 0.5.

- Spring MVC == 1.0 because it doesn't force an Ajax framework and has excellent JSON support.

- GWT and Vaadin == 1.0 because they produce lean, mean JavaScript and have excellent JSON support.

- Lift == 1.0 because of its excellent Comet support.


Plugins or Add-Ons

- Rating based on if they framework has a plugin architecture and how many plugins are available.

- 1.0 == Wicket, JSF, GWT, Grails, Rails, Flex, Vaadin and Play all have plugin architectures and a number of plugins available.

- 0.5 == Struts 2, Tapestry and Lift don’t emphasize their plugins as much or have a wealth of add-ons.

- 0 == Spring MVC and Stripes don’t have plugin architectures.



- Rating based on how much the framework relies on session state for functionality. Frameworks that require the session by default score lower. Also, frameworks like Grails that use Groovy (which is slower than Java) received a lower rating.

- 1.0 == Struts 2, Spring MVC, Stripes, GWT, Lift and Play

- 0.5 == Wicket, JSF, Tapestry, Grails, Rails, Flex and Vaadin


- Rating based on how much support for testing the framework has built-in. Frameworks that rename elements, making it difficult to test with Selenium, score lower.
- 1.0 == Struts 2, Spring MVC, Tapestry, Stripes, Grails, Rails and Play

- 0.5 == Wicket, JSF, GWT, Vaadin and Lift (

- 0 == Flex

i18n and l10n

- Rating based on the framework’s support for internationalization and localization. This includes referencing messages in template code, as well as Java code. For example, JSF doesn’t make it very easy to get your app’s ResourceBundle in Java.

- Most frameworks receive 1.0 because they rely on Java’s standard internationalization support. Ones receiving 0.5 ratings are JSF, Rails and Vaadin.


- Rating based on the framework’s support for both client and server-side validation. Frameworks that don’t have client-side support receive a 0.5.

- Most frameworks receive 1.0 because they have client and server-side validation support. Ones receiving 0.5 are JSF, Lift and Play.

Multi-language Support

- Rating based on whether you can write core elements (e.g. Controllers, etc.) in more than one language (for example, Groovy and Scala). Frameworks that support Java, Scala and Groovy receive 1.0, ones that support only 2 receive 0.5. I determined languages supported by googling for the framework + the language.

- 1.0 == Wicket, JSF, Tapestry, Stripes, Grails and Vaadin

- 0.5 == Struts 2, Spring MVC and Play

- 0 == GWT, Rails, Flex and Lift

Quality of Documentation/Tutorials

- Rating based on how good the documentation is. Tutorial-style documentation is preferred, reference-style is essential. For the frameworks I haven’t worked with, this was based on a brief review of the documentation. For the frameworks I have worked with, the rating was based on my experience

- 1.0 == Spring MVC, Stripes, GWT, Grails, Rails, Flex, Vaadin, Lift and Play

- 0.5 == Wicket, JSF and Tapestry

Books Published

- The more books the better. Most frameworks have quite a few books written about them, so I gave a 0.5 to the books that had a low number compared to the leaders.

- 0.5 == Wicket, Tapestry, Stripes, Vaadin and Lift

REST Support (client and server)

- Does the framework have the ability to produce JSON and XML instead of simply returning HTML? Can it consume JSON and XML as well? Lastly, to get a 1.0 rating, the framework needs to have its own REST client support like Spring’s RestTemplate.

- 1.0 == Spring MVC, Grails and Rails

- 0.5 == Struts 2, Wicket, Tapestry, Stripes, GWT, Flex, Vaadin, Lift and Play

- 0 == JSF

Mobile / iPhone Support

- Rating based on whether the framework has mobile support. Flex scores 0.5 because the iPhone doesn’t support Flash.

Degree of Risk

- This rating is mostly for businesses. If the framework is new, there’s inherently some risk in choosing it for your applications. Frameworks that are newer or have few developers score low. Vaadin, Lift and Play receive a 0.5, while everything else gets 1.0.