A much higher percentage of applications are running on fewer than four cores when encapsulated in containers, the report also finds. The issue that creates is many of the concurrent benefits from the default G1 garbage collector on recent Java virtual machines (JVMs) vanish when running with fewer than two cores. Single-core instances may be using the serial collector, and that creates performance overhead that IT teams may not be aware of.
Based on an analysis of Java applications that rely on New Relic agent software for observability, the New Relic report also shows only about 80% of containerized Java applications explicitly request an upper bound on JVM memory through either the -Xmx or -XX:MaxRAMPercentage flags.
Overall, the report also finds Java 11, first released in 2019, is also now being used by nearly half (48%) of applications running in production environments. Java 8, however, is still being used by 46% of the applications.
The report also suggests that the open source Java Development Kit (JDK) is also gaining traction, with Amazon Web Services now accounting for 22% of Java binaries compared to 35% for Oracle. In 2020, a similar survey found Oracle accounted for 75% of the binaries being used.
Jemiah Sius, director of developer relations at New Relic, says that while change comes slowly to Java application environments, it’s clear a major shift is currently underway. Less clear, though, is the degree to which the increased pace of innovation might encourage organizations to adopt Java 17, the most recent edition of a long-term Java release.
It’s not likely many enterprise IT organizations will be retiring large numbers of Java applications any time soon, but the fact that so many are running in containers suggests these applications are now more portable than ever. Many IT teams either have or plan to lift and shift Java applications from on-premises IT environments into the cloud.
Less clear is the number of new applications being written in Java given the plethora of alternative programming languages that are being used by a wide range of developers. While Java is still preferred by backend developers, especially, the total percentage of applications written in Java versus another programming language continues to decline slightly each year.
The challenge, of course, is that all the applications running in a production environment require varying degrees of observability. In theory, the rise of open source agent software such as OpenTelemetry will make it less expensive to consistently instrument all those applications. However, a mix of open source and proprietary agent software is likely to be employed to varying degrees for many more years to come.
In the meantime, IT teams should expect the migration of legacy applications to accelerate in the wake of the COVID-19 pandemic that accelerated the pace of migration to the cloud.