February 16, 2017

In this post, we look at various Java web frameworks and try to establish a popularity index among them, not unlike the TIOBE programming languages ranking. We've gathered the data at the following services: StackOverflow, LinkedIn, GitHub, and Google search, and unified it through a simple, but effective ranking formula. And we rank some of the most prominent Java web frameworks according to this popularity index.

Most Popular Java Web Frameworks

There is no single or easy way to rank something as complicated as Java web frameworks to determine which is better. However, given the access to the internet, it might be possible to establish an approximate popularity ranking based on the frequency of the usage and mentions of the frameworks on the popular services. This is something that TIOBE does for their programming languages ranking, and while it is not a conclusive comparison, it is showing interesting trends among the languages.

Collecting Data for Our Java Web Frameworks Index

The most precise popularity metric would be the number of projects in the world using each web framework. We cannot get a precise number here as we do not have access to everyone’s code repositories, so we will have to approximate it. Artifact download numbers would also be great, but there are two major problems with them. First, not all web frameworks are available on services like Maven Central and Bintray. There is also the problem that some may use cached artifact repositories or in-house repositories, so even if we could see the numbers from the central repositories, it wouldn't be that conclusive.

So we're left with the indirect measures of popularity. Luckily, we live in the world where all kinds of miracles are possible, and getting this data is just a couple of HTTP calls away. Here are the services we used for the popularity ranking.

StackOverflow

StackOverflow is where most developers ask the most urgent questions about any technology. It accumulates knowledge fast when the technology is being used in anger. One of the best features of using StackOverflow as a rating service is that it is super hard to cheat or game the system. If you don't use the framework it's unlikely that you'll have questions about it.

Most StackOverflow questions are also tagged based on what are they about. The good thing is that the API allows us to search for questions by the tags. So we used the number of questions tagged with a framework tag to determine its popularity.

LinkedIn

LinkedIn is a social network for professionals and the place where somewhat random people assault your private communication channels to join their network. What makes LinkedIn appropriate for ranking the popularity of a framework is that on a professional network, people tend to mention the technology they are working with, or have worked with in the past.

Digging through the LinkedIn data can suggest which frameworks are being used, which people are bragging about or at least are happy enough to mention in their resumes. It's not a perfect source of information because one can sometimes be over optimistic about their work experience and knowledge. But it is unlikely that people would mention something they haven't even tried and think is not popular to give them bonus points with a potential employer.

For the web frameworks index, we used the number of all results when you search on LinkedIn by framework name.

GitHub

GitHub is the largest hosting site for git projects. It hosts a huge collection of source code repositories that are publicly available for searching. Naturally, it is a great place to find out about the usage of our web frameworks to find out which are most frequently used. There is a caveat with it, though.

Despite being perhaps the most direct source of information on which frameworks are actually used, GitHub contains only a slice of all projects, mostly open source ones. Unfortunately for the web framework index, very few of them are web apps. Meaning there aren't many using Java web app frameworks.

So most of the code that contains references to the web frameworks are either the demos for the projects or small toy projects, where developers try things to see if the work up to their expectations. However, a more popular framework would have more code samples on GitHub, so we are using GitHub search results in our index. More specifically, we search for the core artifact of the framework in Maven pom and Gradle files, the number of results influences the popularity index.

Google Search

The most notorious source of all kinds of popularity rankings is the number of search results in Google for given queries. While one can come up with various techniques to incorporate the number of Google search results into a popularity measure, we wanted it to be responsible for the hype factor. When a technology is popular, people talk about it on the internet; they write blog posts, tutorials, documentation, the participate in flame wars and so on. Then over time, this hype can go down, and the vocal minority of super early adopters can, for example, move onto the next shiny thing.

To be affected by the hype, which is a significant component in the popularity, for the web framework ranking we use the number of Google search results in the past month for the query: "framework-name" framework.

The Math Behind our Top Java Web Frameworks Index

For the web framework index, we use the data from 4 public services that people use daily. With the data obtained from them this is how we compute the final popularity rating:

Normalize the data from each service as a part of the total number of the results from that service. For every framework add the results across all services into a single number. Multiply by 25, so the results for all frameworks add up to a hundred.

Then we represent the result in a sorted table in the decreasing order of the popularity. A couple of notes about the algorithm. Normalization prevents huge popularity on one service to shadow the total results. Having different services is aimed to compensate the fact that perhaps the number of results in Google for the past month reflect more hype than popularity, and that people mention all sorts of things on LinkedIn. It's harder to fake StackOverflow usage and GitHub projects, though it's certainly doable.

Now if you see any serious problems with the index algorithm, preventing it from rank the popularity of the frameworks, it is time to comment on that now. If you see the results first, it wouldn't be the same feedback.

The Most Popular Java Web Frameworks

Without further ado, here are our results

Most Popular Java Web Frameworks of 2017 Rank Framework Popularity Index 1 Spring MVC 28.68 2 JSF 17.83 3 Spring Boot 9.22 4 GWT 9.13 5 Grails 7.19 6 Struts 5.77 7 Play Framework 4.70 8 JAX-RS 3.54 9 Vaadin 2.62 10 Dropwizard 2.15 11 Wicket 2.13 12 Tapestry 2.11 13 Seam 1.81 14 SparkJava 1.15 15 JHipster 1.00 16 Lagom 0.84 17 Ratpack 0.14

Spring MVC seems to be super popular. However, JSF and Spring Boot are catching up. Surprisingly, the results are quite similar to what we got in the 2016 survey results.

UPDATE: While it's not a one to one comparison, our 2020 Java technology report showed 86% of developers using Spring, which is a continuation of the popularity we see in the results above. Of further note is the 82% of developers who reported using Spring Boot as their runtime platform.

Conclusion

There are many Java developers who deal with web applications on a day to day basis. Some work on just the backend while others take care of the full-stack application. In our latest Tools and Technologies report, based on a survey of over 2000 respondents, approximately 70% of Java developers work on web applications.

Over time we (at RebelLabs) have seen Java web frameworks as one of the most interesting topics to our readers. We've written about the top frameworks some time ago, as well as more lightweight approaches to writing Java web apps. We’ve considered why the Play stack and Spring are so great for microservices (which are, in a nutshell, distributed web apps).

Given the rapidly changing nature of Java web framework based development, we imagine that the popularity of these frameworks will continue to ebb and flow as new innovations shake up our world.

Frequently Asked Questions

What is a Java Framework? — Frameworks are a body of pre-written code that use your code to perform a function or set of functions.

Why is JSF there, isn't it a presentation layer framework (and not even an implementation), not a "web framework"? — While indeed JSF is not the web, but a presentation level framework, a lot of people respond to the question: what web framework are you using with JSF. That's how it came to be in the index. A similar argument works for Vaadin, and others not so rigorously web framework entries.

Isn't Spring boot the same as Spring MVC and JHipster? — From the point of view of what's on the inside, yes. It all boils down to being a chain of technologies: servlets, Spring MVC, Spring Boot, JHipster. Where every layer adds something: autoconfiguration, project generation, etc. However, if you ask someone what framework do they use for their web app, some people say Spring MVC, some Spring Boot, some JHipster. We know, we asked. That's why these are separate entries. If you really think that is so incorrect, add these three values together.

Where is my favorite framework? — We're always ready to add more frameworks to the index, we started with a small set just to see if there's any interesting data to share. There is! So if you know a framework you'd like to see in the index, please reach out to us.

Are we still in the 15th century? Why is Struts there? — Perhaps, due to the ranking formula, any technology popular at some point of time has the luggage and is still quite high on the list. It's hard to obtain correct information about the frameworks used for new projects, so the index is heavily influenced by the past. The main idea behind the index to illustrate the trends in popularity, not the absolute numbers.

What's the latest framework in Java? Updates for popular Java frameworks come out faster than we can keep up with. But if we're talking about the most recently launched Java framework that's drawing a lot of attention, that would be Quarkus. Quarkus was launched as a Kubernetes-specific Java framework, and has quickly gained attention for its fast boot speed and low RSS memory load. While there may be newer frameworks, Quarkus is certainly the most talked about among the new class.

Does JRebel work with my framework? JRebel works with over 100 frameworks. You can see the full list by clicking the button below.

See Compatible Frameworks