LTS Loyalty, Containers and Open Source – The New Stack
In today’s vast software industry, no developer has any way to completely master all available programming languages. But while many developers are expected to use multiple coding languages within a single role, a few core pillars provide widespread utility across all industries and applications. In particular, Java continues to be incredibly popular with software developers more than 25 years after its public release by Sun Microsystems. According to the Programming Language Popularity Index, which looks at how often language tutorials are searched on Google, Java is the second most popular programming language in the world with 18.03%, behind only Python.
Java is loved by developers for its enormous versatility and can be easily deployed and migrated. The language is platform independent and can be moved seamlessly from one computer system to another. Java offers thousands of libraries that allow developers to quickly create new applications and hone their skills, and is backed by decades of documentation and aggregate 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 anonymous information collected from millions of applications that provided performance data. Java 17, the first long-term support (LTS) version of the language since Java 11 in 2018, was released last September. Has the software development industry undergone significant changes since its release?
New favorites and changing loyalties
Over the past two years, software developers have moved a large number of applications to Java 11, demonstrating the appeal of a version of Java LTS. While the vast majority of applications were running Java 8 (84.48%) as of March 2020, almost half (48%) of applications now use Java 11 in production, compared to 46.5 % of applications in Java 8. By comparison, Java 17 has not yet established a significant position. However, Java 17 has already surpassed non-LTS versions such as Java 6, Java 10 and Java 16 in the few months since its initial release.
In general, non-LTS versions of Java have an extremely low adoption compared to LTS versions. While some vendors ship patches in non-LTS versions of Java, most do not, which can lead to software developers not committing to a temporary release. According to New Relic data, Java 14 is the most popular of the non-LTS versions of Java in use, while Java 10 and Java 16 are tied for last.
Java open source evolution
Fifteen years ago, Sun made one of the most important moves in the open source movement by announcing that Java would become open source software. This process began with the basic 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.
By 2020, Oracle dominated the Java market, with approximately 75% of users trusting the company’s JDKs. However, the last two years have seen significant democratization. While Oracle still leads the market with 34.5%, Amazon has grown to support 22% of the market. In addition, four other vendors have a market share of at least 5%: Eclipse Adoptium (11.5%), Azul Systems (8.2%), Red Hat (6%) and IcedTea (5.4%) .
The original Java open source puts the language on the path to an easier-to-use and adaptable future. In addition, the Sun Microsystem decision provided an important example for other companies to open their most important solutions, leading to important open tools such as Kubernetes and OpenTelemetry.
Containers take center stage
Beyond Java, container applications have grown dramatically in importance for cloud computing. According to the most recent annual Cloud Native Computing Foundation survey, 93% of respondents are using or planning to use containers in production. Analysis of data from New Relic applications shows that this trend also applies to Java, as more than 70% of Java applications that report to New Relic do so from a container.
Of course, containers change the way developers use their computer and memory resources. Container engineers are more likely to run applications with less than four cores, and are more likely to pursue smaller memory configurations. Developers need to be aware of how these decisions could affect other important applications such as garbage collection, as the instinct to run smaller could limit the benefits of tools designed for larger environments.
Java is a key element of software development today, with each new evolution of the language leading to a broader shift in industry-wide trends. Using Java as our goal, we can better understand the ways in which our most important tools and solutions are being built, implemented, and refined.
Featured image via Pixabay.