Oracle has decided to introduce subscriptions for Java SE - for both server and desktop editions. If you choose to pay for an Oracle Java SE Subscription License, you will have to license each eligible server that runs Java and each eligible desktop device that uses Java. We are guessing that Oracle wants to make money. They are a software company that sells software and support. It is hardly surprising. Whilst Oracle have been haphazard in explaining what the changes are, they have been very absent in explaining why they are making these changes, below is the closest explanation that I have seen that is an excerpt from Product Management (link to source article is at the base of this post) –
The cloud has changed how modern applications are being developed, deployed and consumed. On the client side, ready-to-run mobile-first native applications and HTML5/JS web interfaces are increasingly prevalent. On the cloud side, “applications” are transitioning to container-based, modular microservices and even functions. Developers expect more frequent release cycles and flexible licensing.
Java continues to be one of the most popular development and application platforms in the world. The build, release, licensing and distribution model for Java SE is well over a decade old, and will be refreshed to support the changing needs driven by the cloud for the future.
To this end we are proposing a number of changes to how Java SE is produced and distributed.
What does it mean for you? It means that you can continue to use the existing releases Java SE JDK 6,7, 8, 9 and 10 but you will have to rely on community support once Oracle ceases providing public updates to that version (public updates for JDK 8 continue until January 2019, public updates for versions 6,7, 9 and 10 have ceased).
As of JDK 11, if you do not wish to pay for the Oracle Java SE Subscription License, you will need to use the Oracle OpenJDK of the same version. The OpenJDK and JDK will be identical during the first 6 months after release. After the 6 months, only the JDK will receive updates to customers who have a Java SE Subscription License. This is performed through ‘My Oracle Support’ (MOS).
Commercial Features packaged separately from the Oracle JDK, such as the Advanced Management Console, will continue to be provided separately through Oracle’s “Java SE Advanced” commercial offering.
Does This Apply to All Instances of Java?
No. If the Java is installed as part of an Oracle Product installation that you have licensed (for example, Oracle Weblogic), then no additional license for Java is required. If you are unsure whether an application you have installed will include support for Java, please contact us.
Use of Java for development, testing, prototyping and demonstrating your application can be licensed under the free "OTN Java SE License". The Java SE Subscription License applies to Production, Disaster Recovery and Standby environments. There has been no clarification on training environments, I suggest that this would be considered a Production environment for licensing purposes and will need to be licensed.
I Thought Java was Open Source?
You thought correctly. Java has many flavours, Oracle is committed to maintaining Java as Open Source under the GPL License. Open Source Java is referred to as "OpenJDK". New releases of Java will be released under the GPL License as well as what Oracle refers to as the JDK. Note that there is no commercial support for OpenJDK from Oracle, only JDK has that offering.
To continue receiving updates for the OpenJDK release, you will need to upgrade to the next release, which appears to be a frequent occurrence of every 6 months. Organisations that choose this path will become very good at upgrading their Java. This might be acceptable for an internal application, but if you sell or support applications that are run by your customers, then this will present difficulties to you.
Long Term Support (LTS)
Oracle is nominating particular JDK versions as candidates for LTS. This will enable you to remain on an LTS version (and patch intermittently) and then upgrade to the next LTS release. This is targeted at organisations who do not wish to frequently upgrade their JDK. That is probably every organisation. The current release cycle for LTS is every 3 years with the first candidate being JDK11 which was released September 2018. Oracle refers to this as Java 18.9 LTS, there is nothing simpler than having two different names for the same release of a software product. In the latter convention it is the year (2018) and month (September, 9) followed by the LTS moniker.
What is important to note is that LTS Releases are subject to 8 years of support from release.
What Is Happening When
Note that this information was current as of writing in November 2018. It would not be out of the question for Oracle to change their plans, if anything does change we are likely to publish something to inform you of this. The below table illustrates a rough timeline of the different support periods and community entitlement periods published by Oracle for the current and future releases of Java. The table below provides a more thorough listing of each Java Version.
[click image to enlarge in a new window]
The Oracle Support Classifications
Below is copied from Oracle.com (link at the base of this post) giving a high level overview of the differences between the support offerings from Oracle. The main difference to understand in relation to JDK is that ‘Sustaining Support’ provides upgrade rights but does not provide new updates to the software.
JDK 11 and beyond
Commencing with Java JDK 11, Oracle will provide JDK releases under the open source General Public License v2, with the Classpath Exception (GPLv2+CPE), and under a commercial license (the Java SE Subscription License) for those using the Oracle JDK as part of an Oracle product or service, or who do not wish to use open source software. This combination of using an open source license and a commercial license replaces the historical Binary Code License (BCL), which had a combination of free and paid commercial terms.
According to Oracle, different builds will be provided for each license, but these builds are functionally identical aside from some cosmetic and packaging differences. Oracle started providing open source licensed OpenJDK builds as of Java 9. If you are used to getting Oracle Java SE binaries for free, you can simply continue doing so with Oracle’s OpenJDK builds. If you are used to getting Oracle Java SE binaries as part of a commercial product or service from Oracle, then you can continue to get Oracle JDK releases through My Oracle Support (MOS), unless Java is a dependency of the licensed Oracle software, you will require a Java SE Subscription License to receive support and/or updates through MOS.
This will result in you remaining on your current version of Java (or updating to the latest public update of Java 8 in December 2018) and continue to use that version indefinitely. At some point you will either have to migrate away from Java or update to a newer version – the larger that gap, the more difficult the task of updating is.
Some would argue that there is no option of ‘do nothing’ as ultimately you will have to do something. By leaving that decision for a long time could result in the change required being difficult and potentially expensive.
Purchase the Java SE Subscription License
This should be done in conjunction with planning your use of Java over time. Ideally it should include a plan to update to an LTS release and then upgrade every 3 to 8 years. The subscription license is the low risk option if your organisation perceives uncertainty with open source software or not having the backing of a significant vendor when new problems appear on the horizon.
Migrate to Java Cloud
Oracle’s Java SE Subscription License is for both Server and Desktop Java deployments. However, you could migrate your server usage of Java to Oracle’s Java Cloud Service. This is suitable for development and testing as well as operating production environments. However, this is far more than Java, being a platform it can provide scalability through clustering at massive scale, the change would be considerable, but so could the potential benefits of having the infrastructure and software development layers managed and automated by Oracle.
Obtain alternative support
There are support providers who will support your use of the existing Java versions (Java 10 and below), and for Java 11 and beyond, the OpenJDK releases. Having discussed this with one such provider, they stated that their costs would be lower than the Oracle equivalent and offer equivalent support services that would be offered with the Oracle Java SE Subscription License.
If you use IBM products, it is likely you already have IBM as your provider of Java. IBM has been contributing to the OpenJDK software since 2010. They are planning to support JDK 8 until April 2022, and are skipping the incremental Java ‘Feature Releases’ (9, 10, 12, 13…) and instead have a support model for clients that revolve around the LTS releases. Therefore clients would upgrade from JDK 8 to OpenJDK11 to OpenJDK 17, and so forth…
Redhat also provides support for Java through its Redhat subscriptions, however this is on RHEL only unless you have a RHEL Middleware subscription which also supports Java on Microsoft Windows.
Amazon has announced "Corretto", a supported Java JDK to be used on AWS. It is unlikely you will be able to support for instances not running on AWS. You can find a link to our blog post about this announcement at the end of this page.
Migrate to OpenJDK
Assuming that you decide not to use the services of an alternative support provider as detailed above, there will be three major implications if you decide to start using the OpenJDK releases:
Community Support only;
Feature Releases every 6 months. If a feature is not fully tested and ready at the 6 month release date, it will be pushed forward into the next release. You are not forced to upgrade every 6 months, you can choose when you wish to upgrade, and what you upgrade to. It is not known whether the OpenJDK will allow to skip releases in the upgrade and therefore perform a cumulative upgrade, or you will have to step through each release as its own upgrade. However, if you wish to remain on a version that receives incremental updates, you will need to perform a version upgrade every 6 months. However, just because it is titled an upgrade to a new release does not mean it is a massive undertaking – as the new releases are every 6 months, the changes will be relatively minor by prior comparisons. For example, the difference between Java 8 & 9 was approximately 7x larger than the change from 9 to 10; and
No incremental updates after the first 6 months. This represents risk. If there is a new major security flaw identified after the first 6 months, then you will have to wait for the Open Source community to provide a fix or wait for the next OpenJDK release. How significant is this risk is a guesstimate at best, it is your appetite for risk that determines whether this point is significant.
Java Subscription Ordering and Pricing
The Java SE Subscription License is available from Oracle and from Oracle partners. If you are ordering through Oracle you will have to do so through their ordering portal, your account manager is unlikely to be able to help you in this regard as Java will not be part of their sales compensation plan. Good luck with that, especially if you are not an existing Oracle customer. But don't fret, we have some good news further below.
You can order the subscription through your partner just as you can for Oracle Linux, OVM & MySQL. It can be any Oracle partner that has the resell rights for your region, it does not have to be the same partner that you bought other Oracle software or infrastructure from, nor do you need to do renewals of subscriptions through the same partner that you performed the original subscription with.
The pricing from Oracle is fixed and includes volume discounts as shown in the table below. You can purchase a subscription for either 12, 24 or 36 months. We have provided the Oracle price for Australian dollars & New Zealand dollars as provided to us by Oracle.
Calculating the purchase price
Lets assume that you have 3 servers running Java that is not part of another licensed Oracle Product, and they have the following characteristics:
Server A: 2 Xeon CPUs with 8 cores per CPU. This is a Production instance. The system is used by 100 users who use Java on their desktop to access the application
Server B: 1 Xeon CPU with 4 cores. This is a development environment of the production system running on Server A and has no additional unique users as all developers are also users of the production instance on Server A.
Server C: 2 Xeon CPUs with 8 cores per CPU. This is a DR of the production system running on Server A and therefore has no additional unique users.
This results in the following Java SE Subscription Licenses (for the Servers):
(2 x 8 x 0.5) + (2 x 8 x 0.5) = 16 processors to license. Using the above pricing, the annual cost would be 16 cores x AUD$409.92 = $6,558.72
There are two mysteries here, firstly where is Server 'B' ? It can be covered by an OTN License for Java SE (link below) - and this allows "developing, testing, prototyping and demonstrating your application" without additional cost - but no support, and has an audit and termination clause. Secondly, what is this mysterious '0.5' ? It is the Oracle Core Factor for the model of CPU that is within the Server. Xeon CPUs (and most others, but not all) have a factor of 0.5. You can lookup your core factor on a published table provided by Oracle. Contact us for further details.
For the users of the applications, the following Java SE Desktop Subscription Licenses required is:
100 x AUD$41.04 = $4,104 per annum
Note that all of the above prices are ex-GST.
The changes to Oracle Java have not generated a lot of mainstream media attention, and for many organisations the pending changes may come as a surprise. Adding to this major change is the confusing ecosystem of a critically important software development and run-time environment that has the complexity of both commercial and open source offerings. Java has a swathe of acronyms that are potentially impacted by these changes that are not discussed here including (but not limited to) JavaFX, Java EE, Java ME, Swing, JRE, plus the license types of GPLv2+CPE and BCL. There is a lot to absorb.
We understand if you want to contact us to discuss your situation and how you might best approach determining your strategy going forward.
Throughout this post we have used or referenced material from the following sources:
Java SE Releases FAQ https://blogs.oracle.com/java-platform-group/update-and-faq-on-the-java-se-release-cadence
Java SE Support Roadmap https://www.oracle.com/technetwork/java/eol-135779.html
Oracle Support Offerings https://www.oracle.com/support/lifetime-support/index.html
Oracle JDK Releases for Java 11 and later https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11-and-later
Faster and easier use and redistribution of Java SE https://blogs.oracle.com/java-platform-group/faster-and-easier-use-and-redistribution-of-java-se
Oracle Technology Network License for Java SE https://www.oracle.com/technetwork/java/javase/terms/license/javase-license.html
IBM Supporting Java 11 https://www.itjungle.com/2018/07/25/ibm-i-slated-to-support-java-11/
Oracle JDK builds https://jdk.java.net
If you wish to contact us you can phone us on +61 2 9460 0000, or email us at firstname.lastname@example.org with your inquiry or submit your inquiry here