A new report examining the JVM Ecosystem was recently published by Snyk with contribution by Oracle’s Java Magazine. They surveyed 10,000+ Java developers from the community (namely, members of Java User Groups and Java Magazine subscribers).
The topics covered in the report include: Language and JDK, Tools, Application Infrastructure and CI/CD and other processes.
As with any other report that contains so much data in aggregate, some facts it uncovers are more surprising than others. Personally, I was surprised to learn that 90% of respondents are using Java and not one of the JDK-based alternatives like Kotlin or Scala (it seems the overlap between Java haters and Java users may be larger than I previously believed).
Let’s get on with it, though. What other interesting information did they find?
Language and JDK
– 91% of Java developers use OpenJDK or HotSpot (4% use J9 and 1% use Azul)
– 88% of Java developers are still on Java 7 or 8 (only 8% on 9 and above)
*The survey was open between the releases of 10 and 11
– Only 8% plan to adopt the latest version of Java following every new release, the rest plan to stick with LTS releases or are undecided
– 90% of JVM users use Java for their main application, rather than other JVM-based languages
– 45% use IntelliJ IDEA (free and/or paid), 38% use Eclipse, 11% use Apache NetBeans
– For principle build tools, 60% use Maven, 19% use Gradle, 6% don’t use one at all
– 74% are using Git for their Source Code Management platform, 16% are using Subversion (SVN)
– Looking at code repositories, there’s a fairly even split between GitHub (25%), BitBucket (25%) and GitLab (20%)
– Unit testing seems to be the most popular choice for testing practices with JUnit used by 78% of respondents and Mockito used by 45%
*Respondents could choose multiple answers here
– Of those that use a cloud platform, 63% use Amazon AWS, 20% use Google Cloud, 18% use Azure (43% don’t use any cloud platform)
– 43% are running containers, 33% run VMs (33% also don’t use any cloud approach)
– 27% use Oracle database in production, 50% use SQL (MySQL, PostgreSQL or MS SQL)
– 36% don’t develop on the same app server that’s used in production (risk-takers!)
– 23% don’t know how many open source dependencies they have in their applications
– 50% of respondents don’t do any sort of auditing of their codebase (24% audit code every quarter, 11% audit every 6 months)
CI/CD and Other Processes
– Jenkins is by far the most popular CI server, with 57% usage, the closest runner up was ‘None’ at 21% (Bamboo has 5% usage)
– 61% of respondents don’t use CD release automation tools or don’t know which are used – Ansible leads the pack with 16% usage
– 24% DON’T KNOW how often code is released
– The VAST majority – 96% – (now including Oracle’s JDK!) release at least every 6 months
*72% release at least once a month
*10% release EVERY day
That was a lot of data to look at (and we didn’t even share all of the results – you can see those here). So what are the takeaways? Well, for starters, the report gave us a better understanding of the industry trends for JVM, language and tooling usage. It’s always good to know where you stand compared to your peers (but it doesn’t mean you should stop everything and follow the majority).
More interestingly, we learned about the general trends for application infrastructure and CI/CD workflows and processes. Not-so-hidden in those numbers, we see the growing popularity of cloud-based applications and accelerated workflows. What’s missing? How are these teams managing the QUALITY of their applications? 96% of respondents claim to release code at least every 6 months, but half of them don’t do any sort of periodic auditing of their codebase.
To learn more about application quality and Continuous Reliability, download our free whitepaper.