A Picture of Java in 2020
This year Java hit an incredible milestone and reached the grand old age of 25 years. We celebrated its jubilee by running a special online Java day event, where lots of expert speakers shared their experience and gave tips and tricks on how to get more from the language.
This got us thinking, and we decided to do a deep dive into the data to discover once and for all what the common state of Java is, and to help answer some of your burning questions. Some of what we have found may come as no surprise, but there are some very unexpected insights too.
With Java 15 released this week, we decided to put it together and present to you the state of Java. This post was created based on data from several different sources and includes expert commentary from our Developer Advocate Trisha Gee.
The first question was, “Where are most Java developers based, and how many of us are there?” We answered this by combining the most accurate information we could get hold of and then extrapolating to come up with what we think is a pretty well-educated guess.
Our best estimate from the Developer Estimation Model by the Market Research and Analytics Team shows there are about 5.2 million professional Java developers in the world today that use Java as a primary language. But that number is possibly closer to ~6.8 million if we include professional developers who mainly use other programming languages but also do a bit of Java on the side.
As for where these Java developers are concentrated, the largest number of Java developers live in Asia where about 2.5 million developers are using Java as their primary language. The numbers for North America and Europe are nowhere near the scale of Asia. You might be asking, “But why?” Well, we had that exact same thought at first, so we dug a little deeper into these regions to see exactly where the numbers were coming from.
Going deeper we looked at the individual countries that had the largest populations of Java developers, and then investigated why these countries specifically prefer Java over other languages for professional development.
The graph below shows the percentages of developers in each country who use Java as their primary language (respondents to the survey that was used to gather this data could choose up to 3 primary languages). China and South Korea have the highest values at about 51% and 50% respectively. The data was taken from the State of the Developer Ecosystem Survey 2020.
The reasons Java is most likely so popular in the first 6 countries include the free use of Java, governmental support, and open-source. This is especially the case for China, Spain, and Brazil. It is the base for Android mobile development in China and India, and hiring offshore staff to build phone apps in Java is very widespread which could account for the peak in use for India. Germany is also very high which could be attributed to Java being the most popular language in Germany for software engineers as it is used to build highly scalable applications for a multitude of industries. Most enterprise services rely on Java to power the applications that enable the day-to-day running of businesses, such as payroll, inventory management, reporting, and so on. Germany also has a big financial sector that uses Java heavily for their homegrown tech, such as trading bots, retail banking systems, and other applications that the finance industry requires in order to remain competitive.
We might have expected the USA to have a high percentage of Java users, but it also makes a lot of sense that they don’t. There is a big technology stack to choose from and often a lot of the tech companies are at the forefront of that stack, so it could be that developers there don’t need the power or stability of Java and are using languages that allow them to build and test quickly.
Types of software developed with Java
A quick look at the types of software developed with Java should shed some light on its usage statistics. At 52%, web services are the most popular sphere where Java is used according to the results of the State of the Developer Ecosystem 2020.
It’s surprising to see Java so prevalent in Business intelligence / Data Science / Machine Learning, as you’d think this would be the realm of Python. The others are less surprising, as the backend in web services is often Java, and it makes sense for business applications to be written in Java as they will need to work with the backend and the databases too.
Top industries where Java is used
Now that we know why Java is used by so many professional developers, let’s look specifically at the industries Java is used in.
According to the Developer Ecosystem Survey 2020, Java programmers work mainly in IT Services (42%) and Finance and FinTech (44%), but that is not to say Java is not used in other industries.
The Finance and FinTech sector is mostly about financial exchanges, retail banking systems, creating calculating engines and developing homegrown custom tools and services to make the company competitive on the market. Finance and FinTech are pretty much established in Java so there is no surprise here. This is the same with IT Services, as many payroll systems and inventory management services for non-IT companies are built on Java. The other industries are interesting though. Mobile development is probably high because of Android and so Java is being used in this capacity. Big Data and Data Analysis are very interesting as this industry is being led by Python, but there may be some use for Java and JVM languages in the backend. Software development tools, well, certainly. JetBrains IDEs are currently built with Java. The other industries though are a bit of an enigma, in fact, it would be really interesting to hear about how Java is used in these industries.
Java 8 remains the most popular version. It is used by 75% of professional developers who use Java as their primary language. The graph below shows the distribution of Java versions given that developers choose several of them in the Developer Ecosystem Survey 2020.
There are a few factors contributing to why Java 8 is so popular. Firstly, it has everything a typical Java developer needs from the language, it has lambdas and streams and it is generally a nice easy version to use. Also, people have been really reluctant to move to Java 9. Java 9 introduced some big architectural changes and people are scared these changes will break their applications that are built in Java 8. On top of this, Oracle introduced bi-yearly releases, and so not all releases are supported for a long time so Java 9, Java 10, Java 12, and Java 13 are only supported for 6 months, which is probably why they all have such a very small number of users. Java 13 is only as high as it is because when this survey was out it was the newest version, and so you can expect the numbers to drop in a few months.
Java 11 came out in 2018, it is the most recent version with long term support. A lot of enterprises still haven’t moved to it yet, because they are worried that moving past Java 9 (with its architectural changes) will break everything, also Java 11 introduced new licensing and new subscription so it came with the added fear that if you use the wrong version, in the wrong way, Oracle will fine you. The final big factor for why many developers are not updating to Java 11 is that it doesn’t have many new exciting new features, so the risk of upgrading has not been mitigated by the abilities of the language. Java 17 will be the next version with long term support and it comes with loads of new features, but doing a straight update from Java 8 to Java 17 will come with its own issues.
My prediction is that I think the next long-term version, Java 17, will be more popular than the last LTS (long term support release) Java 11. Still, as preparation for Java 17, and I really can’t stress this enough, I’d recommend first updating your codebase to Java 11 and then to Java 17, to avoid big problems.
Popular application servers
For the last 3 years, Apache Tomcat has remained the most popular application server while the use of JBoss EAP and WildFly has halved. The data given is from all the developers who use Java as their primary language that participated in the Developer Ecosystem Survey in 2018 and 2020.
Jetty takes second place, but it does seem surprisingly low. It could be that some developers that are using Spring Boot and other microservice frameworks may not realize what they’re using under the hood – they may be using Tomcat or Jetty without being aware of it.
Top-5 web frameworks
This is basically just confirming that Spring owns the market. That there are still people using Struts 1 can almost certainly only be doing so for legacy applications.
Top-5 JVM profilers
The State of the Developer Ecosystem Survey 2020 shows that VisualVM is used by 24% of users while one half uses none. The data given is from all the developers who use Java as their primary language.
Still, we don’t deny the information could be a bit skewed – even with the weighting we give to our survey results – given that this is from the JetBrains State of Developer Ecosystem survey, and one of JetBrains main products is IntelliJ IDEA. However, that is not to say that this is not totally unreasonable, as if we look at other surveys, IntelliJ IDEA is usually one the most used IDEs, and usually has around a 55-60% share of users. VS Code is growing which is concerning, not from a competitive point of view but actually from the point of view that there is clearly a lack of understanding of what an IDE gives you. VS Code is a code editor with some features that you’d find in an IDE, and extensions that can provide additional functionality – so if people are turning to VS Code for developing it may imply that developers don’t know what a fully-featured IDE can give them. In the web space it is understandable to use an editor as web developers are typically working with dynamic languages, and often use other tools like browser plugins to give them what they need. But in Java, especially professional Java, you really get a lot out of a good tool that has integration with the application server and you can really use the analysis and refactoring and everything.
An update from our expert
I can see that by using an abridged and edited version of my analysis of the data for this blog post that I’ve unintentionally spread confusion. I’d like to clarify the intention behind my comments on developers and IDEs. For me, if developers don’t understand what IntelliJ IDEA gives them as a fully-featured IDE, that’s a failure on my part, since it has been my job for six years to educate developers on what an IDE (specifically IntelliJ IDEA) can do for you. I feel very strongly that one should never blame users, or prospective users, for failing to understand a product.
My personal viewpoint on IDEs for Java developers comes from having been a Java developer for 20+ years, working on production Java projects large and small. I can’t imagine trying to create a complex enterprise application without the considerable help you get from an IDE like IntelliJ IDEA. I have also seen lots of developers using VS Code and I completely see the use cases that code editors cover well. There’s always room for more than one tool in your toolkit, and understanding what a tool does well helps us pick the right one for the right job.
Most discussed Java tools and other languages
Java is often discussed in IT communities, one of which is Stack Overflow. We took the data from the Q&A section to find out which tags occur most with “java”. The vertical axis shows the mentions with Java while the horizontal indicates the total number of occurrences of the tags.
This chart may be useful for users who want to make sure they’re using the right technologies or look at tools for them. The languages are kind of interesting, but this is probably the way it is because people are searching for comparisons between Java and other languages. Regular expressions are the kind of niche things people struggle with but it is not surprising they made the list.
Hot topics in the Java community
We analyzed posts on the “java” subreddit and found the topics that are most discussed by Java users on Reddit.
These are exactly the kinds of topics I expect to see. For instance, people who code in Java will always be interested in whether this language is still in demand, after all, it is getting on a bit. We just celebrated 25 years of Java and so people want to check it is not outdated and legacy and that it is still valid. Especially, if they are just coming out of university and don’t yet know if the language they have learned is going to provide them with job opportunities. Deployment of Java in containers is a really hot topic, it is something that everybody wants to know, including me, but can find little information on. I am not surprised about the topic of performance optimization, though I think that this subject is a little redundant as most applications don’t realistically need optimisation from developers, though so many developers believe it is an important career skill. Making backend and frontend work together can also be very complex and I can imagine there being a lot of questions about this.