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

Top 4 Java Web Frameworks Revealed: Real Life Usage Data of Spring MVC, Vaadin, GWT and JSF

NB! We’ve released a 2016 version of the Java Tools and Technologies Landscape, which is similar to the one this blog post was based upon.

See the newer report

So if you’re looking for the top Java web frameworks you should really check the report that contains newer data:


GET ME TO THE 2016 REPORT


Report page, brought for comparison

Back in May, we launched what proved to be our most popular investigation into Java developers tools and technologies: The Java Tools and Technologies Landscape for 2014. Propelled by a rush of charitable feelings, precisely 2164 JVM developers responded to the survey–each response donated 0.50 USD to Child’s Play, a charity that gives sick children game consoles to pass the time while sick.

One of the most popular subjects that we regularly cover has to do with Java Web Frameworks–after all, it’s one of the most active and fragmented technology segments out there. One in 10 devs we talked to doesn’t use any web frameworks at all, and one in five developers uses among 40 or web frameworks that aren’t even in the top 8 most used out there. What the heck is going on here?!

Here is what we’ll look at today:

  • How many developers use multiple frameworks?
  • Breakdowns for the top 4 frameworks compared to the average results (e.g. what % of Spring MVC users also use Vaadin?)

Let’s get started!

WAIT, READ THE ORIGINAL REPORT FIRST?


Nearly one-third (32%) of developers use more than one framework

 

how-many-web-frameworks-are-being-used

Java web frameworks are one of the few technology segments we looked into that really features complementary tools–as you can see, 57% use only 1 framework and 32% of all respondents (including those that use nothing) said they use 2 or more frameworks. That goes up to 36% when we eliminate non-users. As if to emphasize the fragmentation of this area, we see different results when we break it down based on the 4 frameworks we’re looking at today.

What % of specific framework users use more than one framework?

  • Spring MVC – 54%
  • JSF – 54%
  • Vaadin – 54%
  • GWT – 70%

It would seem that GWT is not the single framework of choice for our respondents. Let’s dig deeper into the figures for these four frameworks.

What percentage of a framework’s users also use something else?

 

frameworks-users-also-use-graph-modal-bigger

Spring MVC

Spring MVC users are strongly aligned with the overall findings–with Spring MVC in use by 40% of developers that use a web framework, this is not surprising. The top 4 frameworks used by Spring MVC users are JSF, Vaadin, GWT and Grails. Like a presidential election, we found the breakdown pretty much even: 54% of Spring MVC users also use another framework, but 46% stick only with Spring. Here are some other notable findings related to Spring MVC users:

  • Grails is the holy grail – Grails among Spring MVC users is 57% higher than the average, which is sensible considering that SpringSource acquired G2One, the company behind Groovy, back in 2008.
  • Struts 1 & 2 increased by nearly as much – The usage of Struts 1 & 2 among Spring MVC users is 54% higher than the average–16.2% compared to 10.5%. So, here are those Struts users that were considerably more prevalent in 2012! If these are mainly long-term Spring Framework users, then we can see the residual effect of the once-dominant Struts.
  • GWT one-third more popular – GWT usage among Spring MVC users is 34% higher than the average. In our previous coverage of Java Web Frameworks, we identified Spring and GWT as fitting together naturally, complementing each other’s strengths and reducing the deficiencies.


JSF

With the dominant positions generally held by Spring, Vaadin, GWT, they are still aligned with expectations, but among JSF users we see a resurgence in what some developers might think of “legacy frameworks” (perhaps “mature” is better): Seam especially, but also Struts 1 & 2 and Wicket are more highly represented among the JSF crowd, while newer players like Grails and Play 2 are less commonly used. Notably, we can see that:

  • Seam is about a billion% more popular – Barely reaching 2% of use by the average framework user, Seam usage among JSF users is 8%, a whopping four-fold increase comparatively.
  • Struts 1 & 2 is one-third higher – As with Spring MVC, JSF is also a well-known framework that most likely built friendships with Struts 1 and 2 users back in the day. These two frameworks are found 32% more often among JSF users.
  • Grails & Play 2 much less popular –  While Grails (7%) and Play 2 (6.5%) were more popular for the average framework user, JSF users are 53% less likely to use Grails (3.3%) and 59% less likely to use Play 2 (2.7%).


Vaadin

Vaadin has been one of the fastest-growing web frameworks out there, specializing in helping devs design attractive UIs. If there was ever a framework that seems to have taken all the real estate from Struts 1 & 2, it would be Vaadin. GWT in our Decision Maker’s Guide to Java Web Frameworks (2014 edition), which we ranked as the #1 framework to use for Java development, although the main recommendation was to use several apply the strengths of several frameworks at once.

  • GWT usage greatly increased (but still not #1) –  With so many platform similarities, it’s not surprising to see GWT usage nearly double among Vaadin users compared to the average, but it’s still not in first place (held by Spring MVC). This reinforces our position in the Decision Makers report that Spring is used for its many strengths even when the dream-team Vaadin / GWT get together.
  • Struts, party of 2? Struts? Hello? Compared to the Spring MVC and JSF crowd, Struts 1 & 2 usage is 2-3 times lower among Vaadin users–not even 7% use Struts 1 & 2 combined compared to over 16% for Spring MVC and nearly 14% for JSF users.
  • Grails usage decreases by about 50% – Given that we ranked Vaadin and Grails nearly even in the frameworks report, it would seem they cancel each other out. Users need just one of them.


GWT

We’ve seen GWT decrease in market share since 2012, probably after the whole JavaScript security warning from Google. In fact, without the poor security surrounding JS, GWT scores relatively well, and when combined with an ultra-secure framework like Spring MVC, it’s a great combo. GWT users definitely utilize Vaadin, which is based on GWT at heart, but for some reason we see a large jump in Struts 1 usage.

  • Vaadin is the favorite – Vaadin usage by GWT users jumps by about 34% to take the #2 position vacated by JSF, which is used a lot less. More or less, they traded 2nd and 3rd places with each other when it comes to GWT users.
  • Um, Struts 1 makes a comeback? – Combined usage of Struts 1 & 2 is higher than average, but oddly it’s Struts 1 usage, not Struts 2, that increases by about 50% compared to the average.
  • Lowest % of Spring MVC users – Although it’s not much, GWT users take also use Spring MVC about 10% less than the 3 other frameworks, and 20% less than the average.


TL;DR – The “Take-aways” from this analysis

Ok, let’s sum up everything that we found in one good sentence about each section here. This should be good enough for a Too Long; Didn’t Read (TL;DR) spot:

  • Multiple framework usage is a common-enough occurrence, with nearly one-third (32%) of developers using 2 or more frameworks. Another 57% use just one framework, and 11% use nothing that appeared in our list (i.e. JSPs and Servlets all the way!)
  • Spring MVC users show higher usage of Grails via the ownership of the Groovy platform and Struts 1 & 2, most likely left over from mature projects, and GWT, which we see as a very complementary framework.
  • JSF users, compared to the report’s averages, are considerably more likely to use mature frameworks, namely Seam and Struts 1 & 2, while shunning newer technologies like Grails and Play 2.
  • Vaadin users seem to work alone, only showing increased usage compared to the average of GWT, on which it is built. Struts 1 & 2 usage drops significantly and comparable framework Grails is also much decreased.
  • In return, GWT users favor Vaadin over JSF, as well as Struts 1 for some inexplicable reason.

We hope that you found this drill-down useful, and stay tuned for more deep-dives into the magnificent results of the Java Tools and Technologies Landscape for 2014 report–including IDEs, Java versions, App Servers, Build Tools and more. Leave comments below and tweet @ZeroTurnaround to say hi!


GET THE FULL PDF

 


Read next:

  • Walt

    What about backend? I would really like to know how many projects are on EE6 EJB’s vs Spring framework.

  • gacl

    Play is the only one of these frameworks I could tolerate. JSF is horrific. Spring is horrible. GWT is too heavy weight and opaque compared to straight JS programming.

  • Robbert

    About 1 Java EE 6 to 100.000 Spring I’d say, atleast if we’re talking production today. So I guess what we really like to know is how about newly developed applications…

    Btw I find it pretty sad to see JSF at 21% while Wicket and other far superior frameworks in the margins.

  • It would be great to see a list of the 40 other frameworks that make up the 11%.

  • Miguel Angel Bautista

    I worked with JSF (HORRIBLE), Vaadin (I like it), but my favorite is Grails, very easy to work with. also you can combine Grails with Vaadin which is also Great.

  • Rusty Wright

    I still haven’t found a framework that I like as much as Stripes. I would describe Stripes as what Struts 2 ought to be, or Struts 2 without the warts and moles. It’s one of those frameworks that’s buried down in the 11%. Unfortunately it never got the hype that the others got or I think it would be a lot more popular. It’s clean and straightforward and very flexible and powerful.

  • What about the Javascript frameworks? People keep telling me that nobody’s using a server-side GUI framework today. That can’t be true – PrimeFaces 4 (just to name a framework I happen to know very well) has been downloaded half a million times, and as far as I know, the newer versions are popular, too. It would be interesting to know whether the JS developers are just saying what they want to be true or if it’s really a big trend.

  • Angelo

    How can you compare JSF with Grails ? I think You have a missconcept about what these two frameworks are for .

  • Angelo

    you are really confused comapring JSF and Spring … and talking about Play when play is build to work on the top of Java and Scala . Straight JS programming ? To do what ? Big huge enterprise banking application ? You are mad .

  • Miguel Angel Bautista

    front end: JSF: facelets (xhtml) Grails (gsps) almost the same. they both use EL to connect to the back-end. Grails is much more adaptable. you can use vaadin, gwt, wicket, angular, etc. JSF only the plugins like Prime.

    Back end: JSF: EJB, JPA. Grails: Spring, plenty of plugins available.

    I worked in companies where use JSF and Grails. in one case I moved one JSF app to Grails.

    one point you’re right. one can’t compare JSF with Grails. JSF is to horrible to compare with other Java Web Framework.

    Only with wicket. I hate more Wicket that JSF

    The beauty of our area is that we can choose for companies that uses our favorites frameworks, languages…..

    In my case I am a Grails Developer. I prefer

  • Alex Craig

    Yes you can use a pure web front-end for a huge banking application. It’s 2014 my friend…

  • Amogh

    Yes Grails is awesome!!

  • David Shefchik

    I think it’s just a sign of the trend towards full-stack development. You can’t just be a jack-of-one engineer and expect to build high-performance, good-looking and maintainable web and mobile apps. It’s time to expand our scopes and maybe learn how to write some sexy JS widgets. Or write an async api server with a sharded NoSQL datastore and distributed caching. Or better yet both.

  • Oliver Watkins

    There seems to be little focus on performance responsiveness and richness of widgets available. How about a breakdown of richness of widgets? Techs like Struts and JSF are more “served” by the server than say ZK or vaadin where javascript in the client is doing more work. You can bake a framework any way you want by serving it from the server ( Tapestry, Wicket ), but if you want the best GUI you gotta understand the GUI logic belongs in …well… the GUI. PrimeFaces seems to be the best in terms of this seperation, even though you program in Java. Best thing is to fully jump into Javascript and using something like ExtJS.

  • Oliver Watkins

    Using ExtJS at the moment and the performance and richness is mindblowing. Only downside is you need to program in Javascript.

  • Oliver Watkins

    Try ExtJS javascript framework. Its just like Java Swing in the browser

  • Angelo

    JSF Back End ? you are really confused my friend. JSF it is pure UI. JPA ? What has to do JPA with JSF ? I suppose you are not a java dev ….

  • Miguel Angel Bautista

    probably I am confused because I hate JSF and I don’t care about that framework. I am Groovy, Scala and Java developer.

  • darkcg

    Hating on things you don’t even understand … That’s the wrong attitude telling us you’ll never work in IT professionally. You must live in the third world if some company made the error to hire you.

  • Gupta

    GWT was a very useful and powerful framework until they removed the use of the GWT plugin and replaced it with that stupid dysfunctional Super Development Mode.

  • asd

    It’s JSP :D

  • Hamed

    Ok, we, the thrid world living developers, are really sorry for bothering you. We, the third world living developers, promise you to kill ourselves, asap.
    Hate toward a piece of code is much more acceptable than hate toward human biengs. If you have somthing TECHNICAL to say about someone’s comment, say it. If you don’t, just shut the f… up.

  • This was so useful and informative. The article helped me to
    learn something new. By play barbie games

  • Dang Quyet Tien

    Thanks!

  • As for web UI, Vaadin and Spring MVC are the best from my point of view.

    Unfortunately when you need to build an enterprise app you can’t use only one framework as it does not cover all aspects of development. So you have
    to combine web framework with backend framework plus think of many other things like security (users , roles, rights ),audit , resiliency etc.

    To address these issues above and streamline development process, we made one step down further and created Full Stack Java Framework called “CUBA
    platform”. The source code and documentation are available at https://www.cuba-platform.com/

  • Kevin Baldemor Mark Ringor

    Hi check out our latest GWT Material Design Java Web Frame work here http://gwt-material-demo.herokuapp.com/ any feed backs are greatly appreciated.

  • Gopal Allu

    Check
    this new addition: A POJO GUI Library at http://www.pioneer-soft.com.
    Not a framework but a set of reusable Java classes. Each reusable Java class is
    designed to generate SVG/JavaScript code for a given GUI component. Using any
    reusable Java class is no different from using any other POJO. Many reusable
    Java classes for presenting GUI components. Creating a reusable Java class for
    custom GUI component is a piece of cake.

  • Steve Cook

    GWT was sweet, especially in its pure MVP structure. Vaadin and all these gwt “mvc” libraries make it slow and clunky. Then the dev team sold out (to Vaadin) along with stopping support for a solid debug interface. To be fair I have not played with Vaadin in 2 years, at which time their demos were buggy, and implementation was more complicated than any framework should be.

    Turning what I expected in 2012 to be the next biggest language into trash with trash piled on it.

    It is now riddled with political issues and bolted on MVC over an MVP core. Maybe we should get a group together and fork it off and get back to a more pure GWT architecture.

    In any event I think flux/react may be the next best thing for web, still playing with it though. (so many trying to “fix” GWT should wait until we can mix in some of react’s technology and ideas.)

    MVC People, MVC is not ALWAYS the best architectural model. From what I have seen MVP works far better for dynamic (AJAX) web pages than MVC 9 out of 10 times, yet everyone is so ingrained into this MVC idea with strength on the server side of things. Too many people these days seem to be chasing fads instead of actually taking time to architect for the environment. It kind of saddens me to see everyone trying to cram everything down the same philosophies just because they are what’s hot right now.

  • Great comment including some interesting background information. Thanks!

    I agree with you that Flux and React are hot topic on the web, but other technologies like Angular are there to stay, too. So are server side technologies like JSF. There’s no silver bullet. You have to chose the technology matching your project’s requirement. And every project is different.

    As for the MVC bit: Recently, the community has started to rethink the “MVC is the way to go” theory. IMHO that’s good. I always feel uncomfortable with dogmas. By the way, you may like my “Model-View-Whatever” article (http://www.beyondjava.net/blog/model-view-whatever/ ). Talking of which: isn’t flux another “competitor” to MVC?

  • Steve Cook

    Flux is a dispatcher model, that’s base philosophy is to flow events(actions) through the same vector to reduce complexity and reduce race conditions and missed updates. The state can be validated before each action is accepted to ensure the state is still compatible with the action before being dispatched.

  • Dan

    The aim of such a Spring MVC design is to separate the presentation
    function from the business process.

    How to make MVC to separate the business layer from the
    presentation layer completely, CML can make it happen.

    MVC working with CML can separate the business process layer
    from the presentation layer completely.

  • And managed bean is it front end? I don’t think so and it’s a big part of JSF… And I hate JSF too.

  • Michael Ritt

    I came across the CUBA Platform and was imressed by the framework. Actually I already expressed my thoughts on alternative.net http://alternativeto.net/software/the-cuba-platform/reviews/. As for this article I don’t see the point to compare those frameworks, as they are very niche type of products. Comparing Vaadin and Spring doesn’t appear as it is something that makes sense to me.

  • Cvele_new_account

    Yes, you can use only one (from end-to-end) framework: Oracle ADF

  • well there are some others full stack frameworks e.g. OpenXAVA, Wakanda, Portofino, etc.
    So Oracle ADF is not the only one.

  • Leonardo Daniel Velazquez Fuen

    what about OpenXava or ZK Framework ?

  • What does prevent java from having “simple” frameworks like in php world, like cakephp ? Why we complicate things ?

  • Before answering the question, I’d like to ask you a question myself. What is it that makes cakephp simpler? I looked briefly over their website, and what I saw was a complex life cycle, a model layer, a controller layer and a view layer. At first glance, it looks every bit as complicated as the average Java UI framework. What did I miss?

  • As far as I know, OpenXava is popular in the Spanish speaking world, but hardly known elsewhere. Probably that’s why the article didn’t cover it.

  • I’m not doing a comparaison between Java and php world or frameworks. It is normal to think the example I gived is complicated as in last version they added “extra” tools like composer, ( trust me it is simple ) … but my Question is why frameworks like struts does not cover all the MVC aspects, but only view for example, Why we have to edit and maintain a Ton of xml and properties files, to add jars … and in runtime, why a heavy code is executed for the simplest operations …

  • My mission as a member of the BootsFaces team is to make things simpler, and that’s why I asked. I hoped for some inspiration how to simplify JSF.

    To answer your question: There are two reasons. The first reason is simply because it’s Java, and Java is popular in the enterprise world. That means many developers work on applications consisting of hundreds or even thousands of pages. You need powerful tools to manage such a huge application. Usually, this also means some overhead for simple applications. JSF is a classical example. You only need three files and two jars to get started, which is a lot simpler than it used to be in the early days, but even so, learning to use it efficiently requires a lot of time. But once you’ve mastered it, programming is a lot more efficient than trying to program the same application using – say – jQueryUI.

    The other reason is that things get complicated over time. I’ve tried this several times. After a while, I got frustrated with our company framework, and started over with a fresh, new and simple approach. But before long, you need this feature, and that feature, and a couple of weeks or months later the simple framework is almost as complicated as the original one. The only way to simplify things is to omit features – but that’s exactly what hardly anybody wants.

    Sometimes there’s also a third reason. When you ask your manager to buy a new framework, they’ll almost always compare features. The frameworks with most features and long-term company support wins. Sometimes also the price tag plays a role, but in the light of TCO (total cost of ownershift), it’s usually less important. It feels better to buy a feature-rich framework from “Big Blue” than downloading the lean open-source framework developed by a lone programmer during a long week-end.