“Java pricing explodes; Java the new cash cow for Oracle;” these and similar headlines could be found in the media after January 2023.
The tech giant itself speaks of a “simple and low-cost monthly subscription” in its FAQ and advertises the most comprehensive support and state-of-the-art management functions on the product page. In this blog post, we explain what is behind the fuss, what Oracle's new Java license model really means for companies and what alternatives you now have.
This can get expensive: Java SE Universal Subscription
In January 2023, Oracle announced a new subscription model for Java called Java SE Universal Subscription, which replaces the previous Java SE Subscription and Java SE Desktop Subscription models. Key changes: The new subscription model covers the use of the entire Java portfolio (whether desktop, server or cloud; hence "Universal") and also offers support for it. In addition, the subscription fees are no longer based on usage, but on the number of employees in a company, ranging from USD 15 to USD 5.25 per month per employee.
Compared to the previous metrics based on desktop users ("Named User Plus") or server processor cores ("Processor"), which are very effortful to determine, this appears to be a considerable simplification. However, the new "Employee" metric not only counts internal full-time, part-time and temporary staff, but also external employees – agents, contractors, outsourcers and consultants – if they support internal business processes. It is irrelevant whether the employees actually use Java in any way. Our experience from projects shows that it is almost impossible to ensure compliance with the new metric when working with external parties, unless a corresponding contractual clause is agreed with Oracle. In any case, the new metric is not exactly cost-effective.
This creates two potential problems: firstly, it can be very expensive, especially for larger companies, of course. Based on customer examples, we have calculated price increases of up to 30 times the previous costs; according to Gartner, companies expect Java subscription costs to be two to five times higher.
Do I need to take action?
Many users and also many SoftwareOne customers ask themselves this question. Our answer is “probably yes”, unless you know for sure that you are not running any chargeable Java installations. We will discuss the associated difficulties below.
However, the answer also depends on your risk appetite. To assess the risk, it helps to take a look at recent history. In general, Oracle is known for devoting considerable resources to uncovering licence infringements and legally enforcing alleged claims. According to the German Handelsblatt, some IT managers secretly refer to the company as a legal department with an associated software development department.
With Java, things were different for a long time. Following the takeover of Java developer Sun Microsystems by Oracle in 2010, there were no significant sales activities for the commercial version of Java for several years. Targeted monetisation began in 2019 with the change to the licensing conditions for Java 11. Security updates for Java 8 were also made subject to a charge, as announced in 2016. Since 2022, Oracle has been conducting audits at customers; because downloads are tracked, there is always a risk of an audit if Java components subject to a charge are downloaded from the Oracle website.
Oracle does say in its Java SE Universal Subscription FAQ that customers can extend their existing legacy subscription. However, since September last year, a voluntary self-audit is always carried out when renewing according to the old metric, and in virtual environments a given partitioning is not taken into account in the new contract.
Gartner assumes that in the next three years, 20 per cent of Java users will have to expect an audit by Oracle and 30 per cent will not be compliant. Customers can take legal action against the new metric and the associated costs. So far, however, no disputes have ended up in court.
Not all Java is the same: alternatives
What concrete alternatives do you have if you don't want to swallow the bitter pill and pay for the new Java SE Universal Subscription?
If you have a correctly dimensioned legacy subscription or sufficiently valid Java SE Advanced / Java SE Suite licences, you don't have to do anything initially – if you are really sure (see below). Also, if you have not installed any updates or security patches since January 2019, nothing will change for you in terms of your licence – but you will be living extremely dangerously in terms of cyber security.
You can save money by switching to a free Java version. The LTS versions Java 17 and 21 can also be used commercially free of charge and will receive free updates until September 2024 and 2026 respectively. As the Java Development Kit (JDK) has been open source since 2006, there are also various commercial 3rd party products available with LTS that are based on Oracle's free Java implementation OpenJDK (OpenJDK is no longer supported by Oracle itself in the long term). The most important of these are Red Hat OpenJDK, Adoptium Eclipse Temurin, Amazon Coretto, Azul Zulu and BellSoft Liberica. Oracle is continuously losing market share to these competitors, from around 75 per cent in 2020 to 21 per cent four years later (according to figures from New Relic, see chart).
However, it is important to carefully check the options of the applications used. If, for example, Oracle Web Start is used, it is difficult to switch to an open source variant or to Java 17 and later variants (more on this in a moment).
It won’t be easy...
In order to decide on the best alternative, you need an overview of your Java applications, the associated licence requirements and the technical conditions. Not all Java applications are the same and not all Oracle licences are the same either so it is essential to consider each application individually. This is the only way to determine what exactly is needed and which changes will bring the greatest benefit.
For many, however, this is where the problem begins, because Java is one of the most popular programming languages and can be found in countless applications: in desktop and server tools, in business software from independent software vendors (ISV), in software that employees may have installed on their own, and most likely also in some of your individual developments. Different licence conditions apply depending on the Java version used: Older software (prior to Java 11) is subject to the Binary Code Licence (BCL), which applies equally to JDK and OpenJDK and allows commercial use up to a defined update status and with the exception of certain components. Newer versions up to Java 16 are subject to the OTN licence (Oracle Technology Network Licence Agreement) and are only free for private use, testing and development, except in special cases. The NFTC licence (No Fee Terms & Conditions), which allows commercial use free of charge, only applies from Java 17 onwards. If your Java application comes from an ISV, they may have their own Embedded Licence Agreement with Oracle which exempts you from licence requirements – or maybe they have not.
I want to migrate Java - but will my application still run afterwards?
Many companies are using Oracle Java versions that require special action, especially Java 8 from JDK 8u211 and Java 11. There are not only licence-related but also technical stumbling blocks lurking here. Applications that run with older Java versions may have dependencies on certain components that are not available in all alternatives. Examples include Java Web Start and Java Applets, which were discontinued with Java 8 but are still used today.
There are now open-source alternatives for Web Start in the form of IcedTea-Web and OpenWebStart. However, this may not be the case for other functions. Therefore, every Java application that is considered for migration must be checked for the features used and their dependencies.
Cost isn't everything - getting the most out of every migration
As a matter of course, we support you in optimising your Java application landscape – from the licences required all the way to the code of individual applications. For components whose source code is not available, we work together with the ISV to clarify the situation. In the case of customised software whose source code is available and which does not contain any Oracle-specific closed-source parts, migration to a Java version of your choice is often comparatively straightforward.
However, adjustments to the code are often also necessary because new open-source frameworks have to be used for certain functions. And if you have to touch the code anyway, you should also think about modernising your application.
Because only then can you get the most out of an application migration. Outdated software not only has its limits in terms of functionality, compatibility and performance. It also harbours security and compliance risks and often blocks further development due to outdated technologies and architectures, missing interfaces and a cluttered code base. Through targeted modernisation, you can increase the level of standardisation of your applications, reduce the total cost of ownership (TCO), improve maintainability, flexibility and integratability, and create the prerequisites for seamlessly using technologies such as the cloud or AI and ensuring your agility and competitiveness.
Do you want to delve deeper into the topic?
By now it is well known that Oracle has made some significant changes to Java licensing and support. However, are you aware of how these changes will affect your organisation? Find out more in our flyer!
SoftwareOne supports your application modernisation
If you want to replace Oracle Java in your applications, you have various options – but you will benefit most if you modernise relevant applications right away. At SoftwareOne, a team of experts in cloud-native application development is available to provide you with comprehensive and customised support:
Refactor: Restructure and optimise code to eliminate technical debt and improve non-functional properties (e.g. containerisation).
Rearchitect: Significantly change code (solution design) in order to convert it to a new application architecture and utilise new functions (e.g. migration to cloud database service).
Rebuild: Redesign and programme the application component (scope and specifications can remain the same or be adapted).
We use best-of-breed tools and agile methods (e.g. design thinking, event storming, domain-driven design) to develop the solutions that best fulfil your business requirements – results-oriented, cost-conscious and DevSecOps-capable.
Discover Oracle Java alternatives!
Learn whether it makes sense to migrate your Java applications and which alternatives to Oracle Java are suitable for your company. Find out more now!
Discover Oracle Java alternatives!
Learn whether it makes sense to migrate your Java applications and which alternatives to Oracle Java are suitable for your company. Find out more now!