Java after Java 17: LTS Loyalty, Containers and Open Source
In today’s sprawling software industry, there’s no way for any single developer to fully master every available programming language. But while many developers will be expected to use multiple coding languages within a single role, a few central pillars provide widespread utility across industries and applications. Notably, Java remains incredibly popular with software developers more than 25 years after its public release by Sun Microsystems. According to the Popularity of Programming Language Index, which analyzes how often language tutorials are searched on Google, Java is the second-most-popular programming language in the world at 18.03%, trailing only Python.
Java is beloved by developers because of its tremendous versatility and can be easily deployed and migrated. The language is platform-independent and can move smoothly from one computer system to another. Java offers thousands of libraries that allow developers to quickly build new applications and hone their skills, and it is supported by decades of documentation and aggregated industry knowledge.
In order to better understand Java and its role in the larger software development ecosystem, New Relic published the 2022 State of Java in the Ecosystem, based on anonymized information collected from millions of applications that provided performance data. Last September saw the release of Java 17, the language’s first long-term support (LTS) release since Java 11 in 2018. Has the software development industry seen any significant shifts since the release?
New Favorites and Shifting Loyalties
Over the past two years, software developers have shifted a large portion of applications to Java 11, demonstrating the appeal of an LTS Java release. While the vast majority of applications operated on Java 8 (84.48%) as of March 2020, nearly half (48%) of applications now use Java 11 in production, compared to 46.5% of applications in Java 8. In comparison, Java 17 has not yet established a significant position. However, Java 17 has already surpassed non-LTS versions like Java 6, Java 10 and Java 16 in the few months since its initial release.
In general, non-LTS Java versions see extremely low adoption when compared with LTS releases. While some vendors ship patches on non-LTS versions of Java, the majority do not, which can lead to reluctance among software developers to commit to an interim release. According to data from New Relic, Java 14 is the most popular among non-LTS Java versions in use, while Java 10 and Java 16 are tied in last place.
Java’s Open Source Evolution
Fifteen years ago, Sun made one of the most consequential moves in the open source movement by announcing that Java would become open source software. That process began with the core Java platform but expanded to include the Open Java Development Kit (OpenJDK) a year later. Over time, this open source movement has led to an interesting evolution as developers migrated from Sun (now Oracle) to explore other JDK distribution sources.
In 2020, Oracle dominated the Java market, with roughly 75% of users relying on the company’s JDKs. However, the past two years have seen a significant democratization. While Oracle still leads the market at 34.5%, Amazon has grown to support 22% of the market. Additionally, four other vendors command a market share of at least 5%: Eclipse Adoptium (11.5%), Azul Systems (8.2%), Red Hat (6%) and IcedTea (5.4%).
The original open sourcing of Java sets the language on a path to a more user-friendly, adaptable future. What’s more, Sun Microsystem’s decision offered an important example for other companies to open source their most important solutions, leading to important open tools like Kubernetes and OpenTelemetry.
Containers Take Center Stage
Beyond just Java, containerizing applications have grown dramatically in importance for cloud computing. According to the Cloud Native Computing Foundation’s most recent annual survey, 93% of respondents are currently using or plan to use containers in production. New Relic’s analysis of application data shows that this trend also applies to Java, as more than 70% of Java applications reporting to New Relic do so from a container.
Of course, containers change the ways in which developers use their computing and memory resources. Engineers who use containers are far more likely to run applications with fewer than four cores, and they are more likely to pursue smaller memory settings. Developers must remain aware of how these decisions could affect other important applications like garbage collection, as the instinct to run smaller could limit the benefits of tools designed for larger environments.
Java is a fundamental element of software development today with each new evolution in the language leading to a broader shift in trends throughout the industry. Using Java as a lens, we can better understand the ways in which our most important tools and solutions are being built, deployed and refined.