Where's Java Going In 2025?
Written by Nikos Vaggalis   
Monday, 10 February 2025
Article Index
Where's Java Going In 2025?
Java for DevOps and AI

After looking at Java in 2022 and 2023, it's time too look at what happened in 2024 as well as at the outlook for 2025. The recent Azul "State of Java" survey gave us extra impetus, and insights, so let's take a detailed look at today's Java landscape.

 

At the end of 2023 in "The I Programmer Java 2023 Recap" I answered the pressing question "Why go for Java, when there's C#, Go, Rust and Python?". It's because Java has always been the favorite of enterprises:

Enterprises talked and still talk Java. Look no further than the Fortune 500 list of companies reliance on it. Yes, Blue Chips love it. The reasons are plenty. The one that enterprises value most is backwards compatibility, being notoriously allergic to radical updates and upgrades. Systems that worked 20 years ago, written in Java 5, should be able to compile and run under version 8. Stability is what matters.

Does this still hold true at the start of 2025?

To find out, let's check the Azul survey's findings in the five areas that it covered, enriched with personal opinion and expertise.

 

Java’s Continuing Influence in the Enterprise

What do Enterprises dread to this day, despite technology having made great strides? They dread Java upgrades. As already mentioned, stability is of crucial importance and it is important to be able to continue to use systems that have been working for two decades and more.

According the survey, entering 2025 that still holds true:

Most applications compiled using a specific JDK
version will continue to run, without needing changes to code or recompilation on newer versions.

That said, many have managed to finally make the upgrade, as

Java 21 emerged as the second most popular version among respondents, surpassed only by Java 17, highlighting the strong adoption and appeal of newer LTS releases within the Java ecosystem.

The other related finding is one that is encountered with other kind of software like Oracle DBMS. Despite facing strong competition especially by open source Postgres, as well as not being the most popular amongst developers, enterprises go for it because of the underlying support and consultancy coming with it. This is the same with Java. The survey found that nearly all Java-based companies pay for support. This is advocated by that paying for support

provides essential services such as patches, bug fixes, updates to address known vulnerabilities, and expert assistance to mitigate risks.

something quintessential for those on older versions. Azul’s commercial support goes a step further as the only distribution which offers security updates and bug fixes for legacy Java versions like Java 6 and 7.

Java Without Oracle

What it comes down to, is go for Oracle JDK or go for OpenJDK and get support from a vendor like Azul. Both cost so you must weigh your options. This is a matter further explored in the report's key section Oracle Java migration:

Concerns over Oracle Java’s pricing remain a persistent and growing challenge for enterprises..while 72% of Oracle Java users were already considering a switch to another OpenJDK provider in 2023, that figure has surged to 88% in 2024.

Furthermore respondents voiced significant dissatisfaction with Oracle, citing a range of reasons, like cost too expensive, sales practices, uncertainty created by ongoing pricing and licensing changes. May I also add the stress induced by Oracle's random and intrusive audits?

Respondents also showed strong preference for open source solutions, valuing community-driven innovation and flexibility. In the end most look to jump to OpenJDK and a vendor/distributor which provides paid support.

Java's Role in the Cloud

But what do these Enterprises use Java for? Most workloads now live on the Cloud and while in its most simple form Cloud Native might just mean containerized applications and Kubernetes, Cloud Native also means microservices and response times in the sub-milisecond area, taking into account the startup/warmup times of the VM.

In fact, nearly two-thirds of organizations using Java in the cloud report that over 50% of their cloud compute costs stem from Java. Optimizing Java in the cloud presents a substantial opportunity to reduce costs without compromising performance.

Of those organizations who use a high-performing JDK, the top two reasons cited were to improve application performance and optimize cloud compute costs. Most of Azul's survey respondents are taking proactive measures to prevent overspending on cloud services, implementing their own guardrails to manage expenses more effectively.

As far as improving application performance goes, there's many attempts especially in cutting the JVM startup times since the JVM is notorious for its hefty requirements in them. The main reason is that it takes much time to load, link, and initialize classes. Of course we are talking micro-seconds here but the delay can make a difference when trying to spin VMs on the Cloud and run Microservices. There's a few takes at speeding it up already, not taking in account GrallVM and Spring Native. These are:

  • OpenJDK Leyden, with JVM Runtime optimizations and static compilation.

  • As examined in Google Joins Adoptium - What's The Deal? Google in partnership with Alibaba, kickstarted the Eclipse Adoptium FastStartup Incubator project which aims to make Java faster by exploring things like class pre-initialization.

  • And there's project CRaC examined in Azul Zulu OpenJDK 17 Build Now Comes With CRaC. CRaC stands for Coordinated Restore at Checkpoint. It is an API that helps to coordinate the JDK and an application's resources under a checkpoint/restore mechanism. It allows applications to, for instance, close open files, dump their cache, and snapshot the required state for them to come alive when restored back. As such the primary aim of the project is to offer a standard mechanism-agnostic API to notify Java programs about the checkpoint and restore events.

    That is a solution instilled into the JDK, but Azul offers also an alternative solution called ReadyNow, at the platform level.



Last Updated ( Monday, 10 February 2025 )