With the release of Java 24 in March 2025, now is a good time to reassess the place of Java within our ever-evolving technology world.
24-03-2025
The Java world has now become familiar with regular updates each March and September. This cycle started with the change to the LTS and non-LTS release system and contrasted significantly to the previous release cycle which was (at best) somewhat random and tended to take several years between releases. We now have a regular java update every 6 months which can be confusing for organisations and developers alike. It certainly raises the question which versions of java should I think about adopting and which are the current, most used versions and why?
Where is Java Now?
Originally different versions of Java tended to be released every 1, 2 or even 3 years apart. For example, Java SE 6 (JDK 1.6) was the current major release version from the 11th of December 2006 until the 28th July 2011. In turn Java SE 7 (JDK 1.7) was the major release from July 2011 until March 2014.
This meant that it was fairly clear which was the current version of Java that should probably be used by commercial projects and that version tended to be stable for several years at a time.
However, since March 2014 we have had a new version every six months, leading to some confusion about which version of Java is the current version, which version is the recommended version for commercial / supported development and which version should organisations adopt.
Into the mix Oracle introduced the idea of Long term Support (LTS) version and non-LTS (non-Long term Support) versions. There is a significant difference between these two versions which in part answers some of the above questions.
Long Term Support (LTS) Version
Let us start off with what is meant by a LTS or Non-LTS version of Java. An LTS version of Java is one that will have (as it says) long term support from Oracle. How ‘Long Term’ that support is depends on the release as Oracle has changed the period of support from one LTS version to another, the following table provides a summary fo the current LTD versions and their support period (all of the dates relate to the Oracle version of java other vendors may have different support periods):
Version
Release Date
Premier Support
Extended (paid) Support
Java 8
18th March 2014
March 2022
December 2030
Java 11
25th September 2018
April 2023
January 2032
Java 17
14th September 2021
September 2024
September 2029
Java 21
19th September 2023
September 2028
September 2031
The next scheduled LTS version is Java 25 due in September 2025, this will have Premier support until September 2030 and extended support until September 2033.
The current cadence for LTS supports is three years, with September of the appropriate year being the date of the release (e.g. Java 11, September 2018, Java 17 September 2021 and Java 21 in September 2025).
From a commercial point of view no organisation should be considering putting a system into production that relies on a version of Java that does not have LTS. It is also worth noting that, although Oracle ended free support for Java 8 in March 2022, it is possible to pay for commercial support for Java 8 until December 2030.
Non-LTS Java Versions
So what does this mean for all the other Java releases, such as Java 12, or Java 16, Java 20 or the current Java 23 release? What is their purpose and why does oracle release them if they are not supported long term?
The primary purpose of these intermediate releases is to allow new and potentially future features to be made available to developers in these releases. They often contain early access to new language constructs or to experimental idea in java. This allows the developers of the language to develop the language at a much quicker pace than was the case on the noughties and is in line with other more modern languages and their release cycles.
However, these intermediate releases are non-LTS, that means they are not supported long term. Instead, they are only supported for the 6 months between one release and the next. For example, the Java 22 (non-LTS) release in March of 2024 was only supported from then until the release in September 2024 of the next non-LTS version Java 23.
As such many organisations ignore the intermediate releases and only adopt the LTS versions. This is quite reasonable and as stated above, the non-LTS versions should not be used for commercial quality systems as support will disappear after six months.
However, they are very useful in allowing developers to explore the new or experimental features that might be coming into the language in an LTS version at some point in the future.
Licensing
Back in 2018 Oracle announced fundamental changes to the way in which Java is licensed. From 2019, if an organisation makes commercial use of Java 11+ then they must pay for it. This means that moving from Java 8 to the next LTS version Java 11, could have significant financial or legal implications. In some cases, this has certainly been a limiting factor in the adoption of Java 11.
Oracle JDK v OpenJDK
An alternative to the official Oracle JDK (Java Development Kit) is the OpenJDK. OpenJDK is Oracle’s open-source version of the JDK.
OpenJDK
Although there has long been an open-source version of Java; from Java 11 onwards Oracle has officially provided the free to use, open source, OpenJDK. This version of the JDK is released under the open-source GNU General Public License (GPL) v2 [3]. OpenJDK is a production ready JDK which is also an official reference implementation of the Java Standard Edition (SE) specification. It is the responsibility of the JDK Project [4] with input from Oracle along with organisations such as Red Hat and IBM, etc.
Oracle JDK
This is Oracle’s commercially supported version of Java. It is built from the OpenJDK sources. In the past there were differences between the open source version of Java and Oracle’s commercial version, due in part to the latter’s use of closed source or proprietary elements. However, since Java 11 the intention is that the two versions are “essentially identical” apart from some cosmetic differences.
Due to historical differences between the Oracle JDK and the OpenJDK, as well as differences in support policies (the OpenJDK only supports changes to the most recent release); some organisations have been reluctant to adopt the OpenJDK or have been confused about the two versions (not least due to the very similar names). In addition, there are other OpenJDK versions, such as Amazon Corretto and Eclipse Temurin from Adoptium, which can further muddy the waters.
Which Java Versions are Organisations using?
Given the many different versions of Java now available, from java 8 onwards, which ones are developers / organisations actually using. The follow graph is taken from the JetBrains The State of the Developer Ecosystem 2023 survey.
JetBrains Developer Survey 2023
From this it can be seen that back in 2023, half of all developers were still using Java 8, nearly half had migrated to Java 17 and nearly 40% were using Java 11. Note that at the time of the survey Java 20 was the current non-LTS release. Also note that these figures are not exclusive, that is a developer might be working on java 8 for one project and Java 11 for another etc.
However, it makes clear that a year ago very many organisations / developers were still using the LTS Java 8 version released back in March 2014.
This pattern is echoed by several other surveys performed last year and this. For example, New Relic’s 2024 State of the Java Ecosystem report showed that in 2023 Java 17 and then Java 11 were the most popular versions with Java 8 coming in a close third.
Java Version
Release Date
Share in 2023
Java 8
March 2014
28.8%
Java 11
September 2018
32.9%
Java 17
September 2021
35.4%
Figures from new Relics 2024 State of the Java Ecosystem Survey
This differs from their findings in 2022 when Java 8 and Java 11 were neck and neck and Java 17 was way behind. Even in 2023 Java 17 had a very low percentage uptake and has grown 300% in 1 year.
So what does this show us? That Java 8 is still very popular although Java 11 and Java 17 have grown in usage over the last few years.
Given the Java 8 is now 10 years old why is it still so popular? Why are so many organisations still using it? Why don't more organisations jump straight to java 21 – the latest LTS version?
Why the continuing Popularity of Java 8?
While it is true that there has been something of a move away from java 8 to more recent version of java in the last year or two – its still right up there with Java 11 and Java 17!
There are several factors which might be contributing to Java 8s continued popularity:
Licencing. As mentioned above Oracles licensing policy changed as of Java 11 onwards and this might mean that some organisations are reluctant to leave Java 8 and its potentially cheaper licensing agreement.
Support Period. Funnily enough Java 8 has a longer period of paid for support than Java 17. With java 8 you can pay for support up until the end of 2030 whereas with java 17 you can only pay for support up until September 2029.
Confidence. Confidence in java 8 is very high as it has been used in production systems for a decade now with minimal issues. Whereas newer version of Java mightbe considered risky until proven otherwise. This could explain why New Relic found a 300% rise in the adopt of Java 17 now that it has been available for several years with no apparent issues.
Inertia. If you are an organisation that has developed a very large body of java code in java 8 and it all works, why move to a newer version of java that might expose some unidentified issues? Java 17 might seem a riskier move than sticking with Java 8. Such inertia is a real issue within many organisations.
Given the above it is likely that we will see Java 8 still being one of the most commonly used versions for several years to come.
Why Move away from Java 8?
So why should organisations consider moving to another, newer, LTS version of Java? There are several very good reasons for doing this:
Performance. The JVM (Java virtual Machine) which underpins any version of Java has had many very useful performance upgrades over the last 10 years meaning that there may be a significant gain in performance to be experienced by moving to Java 11, 17 or even 21.
Language. The language has evolved significant since Java 8. There are far too many new features to list here in one paragraph, but they include modules, type inference, better functional models, improved switch statements, record classes, sealed classes, concurrency changes etc.
Third Party libraires and tooling. Third Party libraires and tooling may expect or require newer versions of Java to either run or provide all of their latest features.
AI and Java
You can’t miss the rapid growth in systems labelled A|I over the last couple of years. Ai is everywhere now. But what programming languages are actually being used to build these AI systems. Back in the early days of AI the most common programming languages where those based on LISP (or one of its derivatives such as CLOS (Common Lisp Object System) and Prolog. However, even back in the 1980s there were Expert Systems being built with more main stream programming languages such as ASPES
using Pascal.
Today a number of programming languages are commonly used to build AI based systems including the ubiquitous Python. However, Java is also a language used to create AI systems, particularly those used within corporation or large organisations. Indeed, there are several Java specific libraries or Java interfaces to libraries which allow an AI system to be created using Java, for example:
TensorFlow
– one of the most widely used libraries of various AI and machine learning tools.
DJL - Deep Java Library - supports deep learning abilities in Java.
Apache OpenNLP
- a natural language processing library.
In fact, several cites listing important languages to learn if you want to work in AI list Java as the second or third most important language (behind Python). For example see Springboard
and Cointelegraph.
So if AI is going to be big in the next decade, and most pundits think it will, Java looks set to be a significant presence in that world.
Big Data and Java
Analysing data is big business; analysing big data is even bigger business! Big Data analysis often involves analysing very large amounts of data to extract knowledge and understanding from that data. Many programming languages are used for Big Data including Python. However, Java has a significant place within the enterprise, and it is therefore not surprising that Java has also found a place amongst the Big Data tools.
Apache Hadoop provides for distributed storage and processing of large datasets.
Apache Spark
supports real-time data analytics and machine learning.
ElasticSearch
a distributed search and analytics engine.
DeepLearning4J
useful for incorporating deep learning into data analysis.
Cloud Based Computing and Java
The Cloud and Java are like salt and pepper or fish and chips; you can have one with out the other, but just as chips are nice on their own but even better with fish; Java and the cloud complement each other perfectly. Of course Java is not the only programming language which has a natural fit with cloud computing platforms; but given its enterprise focus it is a particularly good one.
There are several benefits when using Java in the cloud including:
Platform independence of Java which means that you can run your application on any cloud platform with a JVM available for it; from Linux, to Windows to macOS etc.
Java’s building in security model such as bytecode verification and access control mechanisms provide a secure environment for developing cloud-based applications,
Java’s ecosystem of libraries and framework support a wide range of access techniques and functionality which provides flexibility within cloud-based applications. For example, Spring Boot, Quarkus and Micronaut
are all worth considering.
For Java, a cloud-based environment has the benefits of
Scalability, the ability of a cloud-based application to be replicated across servers with the cloud well suits Java’s execution model.
Containerization. Java works very well with container frameworks such as Docker
partly due to the use of the JVM and its library of frameworks.
Load balancing facilities within the cloud can help to share the workload across a distributed Java based application.
Java and Serverless Computing
Serverless computing differs from cloud computing in that although both abstract away the underlying hardware, cloud computing still uses the concept of a server, while serverless computing takes this abstraction further to include any containerization.
Everything that is true for Java in the cloud computing world is even more true for Java within the serverless computing arena. As serverless computing is only likely to grow in the coming years; Javas future within this platform technology will only become more important.
The evolution of the Java Language
Perhaps the most important aspect of this blog is that the Java language is evolving at a faster and faster rate; it has 6 monthly releases which allow new concepts and ideas to be explored and it has both short term and long-term support releases allowing enterprises to choose whether to try out new features or stick with tried and tested versions.
It is also apparent that Java is adopting features and concept from other, in many cases newer and traditionally more dynamic languages, including Kotlin and Go. These features while still experimental in many short-term versions can be seen maturing by the next long term support version; allowing the language to adopt and experiment without negatively affecting established applications.
This is key as without evolution the language will stagnate and probably die; but without stability organisations would not be able to rely on it for established and long-lived applications.
So what’s next for Java?
Java is further opening up its flexibility and pace of development, pushing forwards with features such as Project Loom (Virtual Threads), Project Babylon (enabling external programming models like ML and SQL), as well as many more projects working on memory optimisation (Lilliput), null-controlled types (Valhalla), and shifting certain functions away from runtime (Leyden).
Summary
So does Java have a part to play in the future? Categorically, yes - it is still one of the most in demand programming languages on the planet. It may not be as popular with developers as it once was; but with Enterprises it is still right up there in the top three.
It is also one of the languages that sit are the heart of several key technologies and technology pushes that will, I am sure, only continue to develop over the next few years. Being competent in Java and familiar with concepts such as Big Data, Cloud Computing and its associated Serverless Computing as well as of course AI will be a sound platform to build any career.
If you are just starting out there are several key programming languages, you might choose to focus on from Python to JavaScript but don't discount Java; it is right there in the mix with both of these languages.
Would you like to know more?
Take a look at our full complement of Java Training Courses or get in touch to find out how we can build a Java training programme for your new graduate intake scheme, cross-training developers from other technologies, or up-skilling your existing Java developers to the very latest versions and frameworks.
We maintain a robust range of hands-on training courses covering Coding, Data Science, DevOps, Security and more - available for on-site and online delivery as part of a full-stack training programme or as short standalone workshops. We would love to discuss your learning needs - get in touch for a no-obligation scoping chat.
We use cookies on our website to provide you with the best user experience. If you're happy with this please continue to use the site as normal. For more information please see our Privacy Policy.