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).
Today, we want to take it a step further, and research whether we could devise an efficient popularity index for the main Java web frameworks available today.
In this post, we look at various Java web frameworks and tried to establish a popularity contest 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. Additionally, we will continue to track frameworks’ popularity over time, produce monthly stats, and try to figure out whether there are any trends in the popularity.
Here is the list of Java web frameworks that we’ll be comparing listed alphabetically:
- Play framework
- Spring Boot
- Spring MVC
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.
First and foremost, 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 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 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 working 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 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, the kind that is using the web 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.
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.
Math behind the 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.
Without further ado, here is our first set of results:
Spring MVC seems to be super popular. However, Spring boot is catching up. Surprisingly, the results are quite similar to what we got in the last year’s survey results.
What do you think? Which frameworks should we add to the popularity ranking? Leave your thoughts about the ranking formula or the frameworks you want to see in the popularity contest in the comments below.
We’ll continue to monitor the popularity of Java web frameworks every month, and let’s see if any interesting trends are noticeable.