The JVM Ecosystem Report 2021, a collaboration between Snyk and Azul, has revealed that 62% of the surveyed developers use Java 11 in production, narrowly leading Java 8 with 60%. Kotlin is the most popular JVM language after Java. At 45%, AdoptOpenJDK is the most popular JDK distribution, which is well ahead of Oracle OpenJDK and Oracle JDK coming in at 28% and 23%, respectively. Eclipse Adoptium, having recently created their new working group, has already contributed 1% (Adoptium is still incubating and has not officially released any binaries). The use of Spring Boot, Jarkarta EE, and newer frameworks has grown over the past year. Developers favored IntelliJ IDEA, which was used three times as much as the Eclipse IDE, while the use of Maven was twice that of Gradle.
Over 2000 Java developers responded to the survey that lasted for six weeks from February into March 2021. 60% of responses came from Europe, 19% from North America, and 12% from Russia and Asia. 35% of respondents work for companies with 100 or fewer employees, while 37% work for companies with 1000 or more employees. Most of this year’s survey results cannot be compared against last year because it allowed multiple answers.
The survey found that, at 21%, more than three times as many developers use Java 12 or newer in production than Java 7 or older with 6%. Because up to three responses were allowed for this question, the total percentage of developers using Java 11 or newer is unknown, as is the rate of those using Java 8 or older.
The findings in this report stand in sharp contrast to JRebel’s 2021 Java Developer Productivity Report released in March 2021. That report found that Java 8 had twice the usage of Java 11 and that use of Java 7 and older was on par with Java 12 and newer. The JRebel report collected 876 developer responses from August to November 2020 and, unlike the Snyk report, did not distinguish between development and production use of the JDKs. The following chart compares the results of the Snyk Report and the JRebel reports from this year and last year:
The JRebel 2021 report saw the use of all Java versions grow from 2020 including both Java 8 and Java 7 and older.
Snyk found that Java is the most popular JVM language with 91%, ahead of Kotlin with 18%, Groovy with 13%, Scala with 10%, and Clojure with 8%. The report contrasted the survey responses with real-world usage by analyzing the programming languages of GitHub repositories. Because Kotlin 1.0 was released eight years after GitHub was launched, it is not surprising that Java leads Kotlin 18:1, instead of 5:1, as the survey responses indicate. Groovy and Scala launched their 1.0 releases before the introduction of GitHub with Clojure shortly afterward. Despite this, Kotlin leads all three languages with wider margins than in the survey: 8:1 vs. 1.4:1 for Groovy, 2.7:1 vs. 1.8:1 for Scala, and 7:1 vs. 2.3:1 for Clojure.
Kotlin’s popularity in the report stands in stark contrast to the TIOBE index, where Groovy leads Kotlin 3.4:1 (1.09% vs. 0.32%) as of July 2021. The TIOBE index partially measures programming language popularity by search engine queries.
The second most popular JDK distribution behind AdoptOpenJDK is Oracle’s OpenJDK distribution at 28%. Oracle’s commercially licensed JDK is third at 23%, followed by various OpenJDK distributions: Azul with 16%, Amazon Correcto with 9%, and the OpenJDK distributions bundled with Linux and Red Hat both at 8%.
Last year’s survey already allowed multiple responses for the server-side framework, so a comparison from last year is possible. Except for Spring MVC, all frameworks grew their usage:
Spring Boot maintained its lead with modest growth, while Java EE/Jakarta EE saw a substantial increase. Modern microservice frameworks, such as Red Hat’s Quarkus, Eclipse MicroProfile, and Micronaut, appeared for the first time this year.
In the IDE section, Snyk reported market share for IntelliJ IDEA at 72%, Eclipse at 25%, and Microsoft’s Visual Studio Code at 23%. Snyk also found that every second developer uses more than one IDE, while every fourth developer uses four or more.
According to the report, 76% of all developers use the Maven build tool, while 38% use Gradle, 12% use Ant, and 5% use SBT. Maven’s lead over Gradle increases to 3:1 (74% vs. 25%) when looking at the real-world usage data that the Snyk Open Source tool reports. But that tool only supports Maven, Gradle, and SBT. And, unlike the survey, usage adds up to 100% here.
Brian Vermeer, developer advocate at Snyk, Java Champion, and author of this study, spoke to InfoQ about the report.
InfoQ: Your study is based on more than 2,000 survey responses. Compared to the overall Java developer population, how representative do you think your results are?
Brian Vermeer: I believe that surveys are always biased by default. However, this is currently the largest amount of respondents on a current JVM ecosystem report and we had a similar amount last year. I believe that the numbers can fluctuate a bit, but the outcome will be representative.
InfoQ: You partnered with Azul for the study this year. What was their contribution?
Vermeer: The folks from Azul helped us with setting up the survey and reviewing the questions. In addition, some other Java Champions and Java community folks gave feedback. The folks from Azul helped a great deal with how to name all the different OpenJDK builds vs. the more commercially licensed build. This can be a delicate matter for some people.
In addition, we, Snyk and Azul together decided to differentiate between Production and Development for both the JDK builds and version.
InfoQ: Your report always contains the Java build tool distribution based on survey responses. But this year, you also included a build tool distribution based on data that your Snyk Open Source tool collected automatically. Why?
Vermeer: For multiple questions, we compared the data for the survey with other data sources. We took Github searches, Google trends, and also our own data at Snyk. This way we could verify the survey results to some extent.
For the build tools, we looked at the distribution of the build tools within Snyk and found out that Maven is more widely used than other build tools. This is similar to what the survey concluded.
InfoQ: Snyk tools scan build files and Docker containers. Do you plan to include more data collected by your tools (such as Java frameworks, JDK distributions, or JDK versions) in future studies?
Vermeer: To some extent we already do. For containers, we can also scan binaries for JDK versions in certain Linux distributions. For example, this is a list of issues in OpenJDK 8 that is supplied with Alpine Linux 3.8.
We already scan for security issues in Java frameworks and libraries based on your projects manifest files in for instance Maven or Gradle. Next to this we currently have Snyk Code, a SAST capability, to scan your custom Java code for possible security issues. All these capabilities can be utilized by our CLI and most of these are also available using Snyk integrations for IDEs, build tools, and CI pipelines.
Developer surveys, like the ones that Snyk and JRebel provide, provide useful data to the Java community. However, the results are typically not representative of the global Java developer population because these surveys "tend to be self-selected and clustered around specific subgroups of people, such as Twitter followers or IDE forums." Neither Snyk nor JRebel disclosed the margins of errors in their survey results.
More details may be found in the full report.