Java Tools and Technologies Landscape Report 2016: Trends and Historical data
Welcome to the Java Tools and Technologies Landscape Report 2016. This is a comprehensive report that is focused on analyzing the data about the tools and technologies Java developers use. There are three main parts to this report and they can be found through the links below:
- Part 1: Looking at the raw data on what tools Java developers use
- Part 2: Pivoting the data
- Part 3: Looking at trends and the historical data -- continue reading this blogpost
Alternatively, you can download a single pdf version of the report and enjoy it all at once:
Part 3: Java Trends in Tools and Technologies
This part of the report is going to look at data trends. However, we’re not just going to look at this year’s data, oh no! Since we ask a lot of the same questions every couple of years, we can begin to see trends over time, by comparing answers given to the same questions in 2016, 2014 and 2012. This might give us some understanding of what we might expect in 2018, however it would be a little foolhardy to assume that, purely based on a few years of data.
That said, the numbers and graphs created in this section sure do show a consistency and pattern across the years. Note that some of the data from previous years had to be normalized to cater for questions that allowed multiple answers. These years have been asterisked and marked for your awareness.
Java SE Version Adoption
It’s great to see a very consistent level of upgrade and migration in Java versions as the years go by. Migration is a particularly time consuming and thus expensive activity for larger organizations for what some people might consider ‘minimal gain’ compared to, for example, a new application feature. Looking at you project managers! The performance increase alone is a good reason to upgrade, but with newer concurrency libraries, functional approaches and much more in newer versions, the benefits to a developer and a production environment are very clear. It’s also good to see such a drop-off on the older versions, particularly for library and tool manufacturers who can start to remove support for older versions of Java. Given Java 9 will not be released till March 2017, if current deadlines are met, I would expect to see Java 8 reach the 70-80% adoption mark even before we start to see Java 9 begin to ramp up.
I don’t expect developers to rush out and adopt Java 9 as quickly as they did with Java 8, as there doesn’t seem to be enough eye-candy being delivered to developers. There’s also a lot of churn with a new default garbage collector and modules, so it wouldn’t surprise me to see Java 8 being the dominant version, even in 2018. By then I would expect Java 6 usage to be very low, perhaps close to if not actually at 0% adoption, with Java 7 close by around 5%. I’m already looking forward to revisiting these predictions in our 2018 report!
Java EE Version Adoption
We’ll now move on to our enterprise brethren, Java EE. We can see two interesting things from this data. Firstly, Java EE 7 has not just taken the mantle from Java EE 6, but is more popular today than Java EE 6 was back in 2014. The second important point is that people are not moving off of Java EE 5 and J2EE. Given how old these technologies are, and more importantly, how far Java EE has come since the J2EE standard, it’s puzzling to understand why there are still so many persisting with these legacy environments. However, what could be more worrying for the Java EE community is what isn’t shown in Figure 3.2. We’ve normalized the data to show which versions Java EE developers are using, so if you flex your mathematical brain, you’ll see the yearly percentages add up to 100%.
Let’s take a moment to see how many people aren’t using Java EE. From the 2014 survey, 32% of respondents were not using Java EE, compared to 42% in 2016. This means that 15% of the Java EE users in 2014 decided to stop using Java EE in the past 2 years. This supports the data we saw in Figure 2.4 in the Part 2, showing that early adopters are looking at alternate frameworks. Summed up, this doesn’t look great for the future of Java EE community.
If we look at the state of the Java EE 8 JSRs, it already looks like deadlines will be missed, particularly with the Oracle-led JSRs, which has already been so well documented in the news. This is also the reason why the Java EE guardians group was formed, to help bring awareness and change into the current state of Java EE. I expect the adoption of Java EE will continue to reduce, particularly if Oracle’s lack of interest in the technology continues, as vendors and users will have low confidence in its future. I expect Java EE 7 to continue to take share from Java EE 6 users, and while I hope to see the Java EE 5 and J2EE usage drop, the data just isn’t there to back it up.
In our 2014 report, 49% of respondents stated they’d like to be using IntelliJ IDEA as their IDE. These respondents may have already been using IntelliJ, or they could have been using other IDEs. Since then, as we saw back in Figure 1.11 in Part 1 of the report, IntelliJ has taken the mantle of most popular IDE, by usage, from Eclipse. When we look at the trend in Figure 3.3, we could have seen it coming, as the rate of adoption has remained consistent enough for both Eclipse (negative) and IntelliJ (positive).
I don’t expect this to continue at the same rate beyond 2016, but wouldn’t be surprised if we see IntelliJ take a 10-15% lead from Eclipse. I don’t think NetBeans will change that much, although with Oracle’s very average efforts in showing support for the NetBeans platform, their own steward could be their very downfall. There are however, many strong individuals on the NetBeans team that, despite a lack of support, will do everything they can to make the platform continue to be successful.
Another category, rife with flame war, is the build tools category. But is this even justified? Well, if we were to look at the build tool adoption from 2012 to 2016, we can reasonably state that it’s a one horse race that has already been won by Maven. In fact, if it were a horse race, Ant would have already been shot, and people might have already thrown away their Gradle 500-1 betting slip. However, they may be light at the end of the tunnel, as Gradle is being used heavily in Android development environments. The question about whether the light is indeed the end of the tunnel or a Google train called Bazel, we’ll have to wait and see.
Now for some predictions. In the next couple of years, I don’t see Maven really moving much in terms of market share. It could perhaps dip, if Gradle’s adoption rate does increase, although Gradle seems to be taking more share from Ant than Maven. I think Gradle will continue to rise slowly, particularly if the support from the Android community continues. Ant on the other hand will continue to fall, most likely to 6-7% by 2018.
In Figure 3.5 below, we can see Spring’s dominance over the past four years increase as they monopolize the web framework market. Pivotal can be very happy with their Spring Boot adoption rate and this sets them up nicely as the microservices market begins to grow. JSF is slowly decreasing, although this might just be a result of reduced Java EE adoption overall. Struts, GWT, Play 1, Wicket, Stripes and Tapestry struggle to stay popular, while Vaadin is one of the few frameworks that has shown resilience during the Spring domination. Going forward, I expect to see Spring continue to dominate with Spring Boot, looking like it wants to take over as the overall leader. In 2018 I think Spring Boot and Spring MVC will be pretty much neck and neck with Boot looking the more likely to want to dominate, riding the wave of the microservices architecture beneath it.
I think JSF will still be relevant, although it will need proper backing from our Java stewards to make sure people can have confidence in it progressing and staying up to date. It will likely continue its slow decline, given the Java EE 8 date looks all but certain to slip, although I don’t think it will drop too far. Play 2 will more than likely increase its adoption rate, given the leading role it’s playing in Lagom, with Akka. Other frameworks, like Struts 1, Play 1, Wicket, Stripes and Tapestry may be mentioned in our 2018 report, but more than likely just in the obituary column.
The final comparison we’ll make in this part of the report, and in fact the last graph of the entire report (Thanks to our designer Ladi for being so understanding!) covers our VCS tools. The trend here couldn’t be more clear cut. Mercurial and CVS, you’re coming to the end of a losing battle. SVN, well… Mercurial and CVS are just keeping your deathbed warm. Git is the clear winner with a very healthy and consistent market gain, culminating in a 68% market share. My predictions are simple. I think Git growth has to slow down, but I still see room for Git to grow to 80% market share in 2018 before tailing off. Mercurial and CVS will likely go the way of the dodo by 2018, with SVN’s share reducing heavily again to around 5-10%.
Tools that Excite Developers
This year the survey included a couple of self-reflection questions asking more about one’s own experiences with particular tools or technologies. The question in the 2016 survey was as follows:
What tool, technology or library are you super excited or proud about having used or planning to use in 2016?
Note that we allowed free form answers to this question. This freedom, while useful for discovering interesting lesser known projects and tools, makes the analysis a little more manual than just poking Excel spreadsheet with a few formulae.
After exporting all the responses, we made the following transformations:
- Convert the responses to a list of comma separated names
- Convert the responses to lowercase
- Split by ", "
- Count the frequencies of the terms in the list
- Apply a list of the synonyms like: "Spring boot", "springboot", "spring boot 1.3.5" or "Java EE", "JavaEE", "Java EE7"
- Count the frequencies again and collect the top entries using the famous word frequency count Java 8 stream example program
Now we have a pretty decent name-dropping list where unrelated technologies go hand in hand. However, this is a meaningful result that shows where the industry at large is heading. Without further ado, we present the top 10 most frequent technologies mentioned in the response to the question above:
- Spring Boot
- Java 8
We don't claim that it's the definitive list of things to master, but it is quite telling that more people are excited about and proud of using these tools. Surprisingly, there wasn’t a significant difference in the exciting technology choices between those who claimed they are better than the average person in their role versus their more humble respondents. Go figure, we can think we're different, but we all solve similar problems using similar tools.
Java Trends Summary
You’ve made it to the end of the report — well done! Or did you just skip here to get to the TL;DR? :) Either way, we’ll now cover all the highlights of the report in an easy to consume manner. Get ready for a fast paced statistic-fest!
TL;DR For Those in a Hurry
Here’s some background on the report and the data:
- 2040 participants completed the survey in full.
- The survey took place from February through March, 2016.
- $1000 was donated to Devoxx4Kids — hooray!
- No geeks were harmed in the creation of this report.
This section of the report provided the raw results of each question in the survey:
- The average respondent was a software developer working on a full stack web application, with approximately 10-12 years of experience.
- 63% of respondents worked for an enterprise or a mid-sized company.
- Three out of four respondents (74%) think they’re better than the average person in their role.
- One third of respondents (34%) have adopted a microservices architecture.
- Of the two thirds (66%) that haven’t adopted microservices, only 12% are currently planning to do it in future.
- Java 8 is mainstream, with 62% of respondents using Java 8 in production.
- Java EE 7 is the most popular version with 31% of respondents stating they use the latest version.
- 42% of respondents don’t use Java EE at all.
- 46% of respondents use IntelliJ more often than any other IDE, finally overtaking Eclipse on 41%.
- 68% of respondents use Maven as their main build tool, with Gradle on 16%.
- Tomcat is still the most popular application server in production and development with 42% market share.
- Oracle DB just pipped MySQL to the most used database with 39% and 38% of respondents claiming to use each, respectively.
- MongoDB is the most popular NoSQL DB with 15% of respondents using it today.
- Spring totally dominates the web framework market with Spring MVC and Spring Boot taking first *and* second most popular frameworks with 43% and 29% using them, respectively.
- Jenkins dominates the CI Server market with 60% of respondents favoring the butler solution.
- Git owns the CVS market with 68% of the share, as SVN struggles on 23%.
- Visual VM continues to be the most popular profiler with 38% respondents making use of it.
- Developers don’t care about APMs to the extent that 30% don’t know which APM is used on their application.
- New Relic is the leading APMs with 11% share.
- One in three (32%) use Docker but over half of respondents (54%) don’t use virtualization environments at all.
- 71% of respondents claim to be agile.
Next we summarize the pivoted data to find trends in our respondent’s answers:
- Both early adopters (67%) and technology sheep (58%) favor Java 8, showing how established the latest version is.
- Early adopters are more likely to move away from Java EE, with more technology sheep (33%) preferring the latest version than early adopters (28%).
- Early adopters favor Spring Boot, Play 2 and Grails, snubbing Struts, Wicket and Play 1.
- Jetty and Tomcat are the preferred application servers for a microservices architecture, with WebLogic, WebSphere and GlassFish in particular seeing reduced usage (almost half) in microservices environments.
- Spring Boot and Play 2 are twice as likely to be used in a microservices environment than not, whereas JSF is almost half as likely.
- One in two (50%) microservices environments use Docker for virtualisation.
- Agile teams are more likely to write formal technical specifications than non-agile teams.
What Trends in Java Have Changed in the Last 4 Years
This section looks back through our reports to show the technology trends over the last four years.
Eclipse usage continues to decline consistently. IntelliJ share continues to grow consistently. IntelliJ predictably overtakes Eclipse by usage.
Maven continues to be market leader with steady growth.
Gradle continues to grow slowly but not significantly enough to challenge Maven.
Spring’s dominance is shown in its continual growth from 2012 to 2016, including very fast adoption for Spring Boot.
JSF usage declines slowly over time, while Stripes, Tapestry, Wicket and Play 1 look to be on the way out.
Git shows fast growth over the last four years from 27% to 68% share. SVN on the other hand shows substantial market share loss in the same period from 55% down to 23%. [/list]
Goodbye and a Comic
Thanks for reading! I hope you found the results enlightening and can use this information along with your own data to better help you understand the landscape of our wonderful ecosystem, as well as give you more confidence in your future decisions.
You've finished the report! Wow, that was a lot of clicking :) You might as well click once more to get this wonderful report in pdf format.