Don't let anyone mislead you that there are no big changes. The big change is that fixes and security updates will no longer be provided to old versions of Java unless:
- You are a paying customer, in which case Oracle will be patching 8 years' worth of LTS versions, as well as the current version
- The community backports these fixes to
OpenJDK
and makes them available
Historically OpenJDK
was quite separate from OracleJDK
. This is no longer the case. Oracle are basically providing two separate distributions of Java: OracleJDK
and OpenJDK
. They are meant to be technically equivalent, although it should be pretty obvious that OracleJDK
is likely to ship with add-on features aimed at enterprises (e.g. management tooling or better GC).
The release cadence (why can't these people just use normal English?) is going to be 6 months. So the version cycle is going to be something like this
Apr 2014 - Java 8 (LTS)
Mar 2018 - Java 9
Sep 2018 - Java 10
Mar 2019 - Java 11 (LTS)
Sep 2019 - Java 12
Mar 2020 - Java 13
Sep 2020 - Java 14
Mar 2021 - Java 15
Sep 2021 - Java 16
Mar 2022 - Java 17 (LTS provisional)
OpenJDK
and OracleJDK
builds will be pushed out every 6 months but importantly, fixes and security updates will only be made available to the current version. If you are a paying customer, you will additionally get these backported to old LTS releases. Oracle have said that:
- Java 8 is an LTS release
- Java 11 will be an LTS release
- One release will be designated as the LTS release every three years
- Oh, LTS stands for Long Term Support. Sorry.
Oracle have also said that, as of Java 11, OracleJDK
cannot be used for deployment unless you are a paying customer.
The cost of a Java subscription is $2.50 per desktop per month and $25 per server-processor per month. There are discounts for large numbers of processors. A company with 5,000 processors and 200 employees is looking in the ballpark of $250,000 - $1,000,000.
You may decide to rely on the likes of AdoptOpenJDK, who aim to backport fixes to 4 years' worth of LTS releases.
There are other companies (e.g. Azul) who are positioning themselves as providing LTS backports for less than an Oracle subscription, but whether they are going to do anything more than supplying the AdoptOpenJDK binaries is unclear.
Probably. But you still have a decision to make that you didn't used to:
How often am I going to upgrade Java?
Let's say it's Oct 2021. The "current" version of Java is 16. You upgraded in June 2021 to Java 15. A critical security vulnerability is discovered and Oracle release a patch. The patch is released to Java 16 and (for paying customers) to Java 8 and Java 11. You are not on any of these versions; what do you do?
You will either need to upgrade every six months to ensure you are on the latest version, or you should stick to LTS versions. This remains true regardless of whether you plan to use OracleJDK
or OpenJDK
. It is claimed that the releases will include a steady stream of features and the migration 9->10->11 is akin to 8->8u20->8u40 (also on a six-monthly cycle).
No. Desktop OpenJDK
does not ship with JVisualVM
for example, although that (branded as VisualVM
) is available as a standalone program. I'm currently trying to find out more about what happens in practice when we try and move from OracleJDK
to OpenJDK
on our development servers.
- Sep 2018 (Java 11) is the first version of
OracleJDK
which is for paying customers only [1] - Jan 2019 will be the last time that Oracle backport fixes/updates to Java 8
Quite! A sensible plan is to migrate in the latter half of 2018 to OpenJDK
8 (an LTS, remember), potentially migrating to OpenJDK
11 (also an LTS) after that is released, relying on AdoptOpenJDK for fixes/updates.
oxbow_lakes
- http://www.oracle.com/technetwork/java/javase/eol-135779.html
- http://www.oracle.com/technetwork/java/javaseproducts/overview/javasesubscriptionfaq-4891443.html
- http://www.oracle.com/technetwork/java/javaseproducts/javasesubscription-data-sheet-4891969.pdf
- http://mail.openjdk.java.net/pipermail/discuss/2017-September/004281.html
- https://blogs.oracle.com/java-platform-group/update-and-faq-on-the-java-se-release-cadence
- https://blogs.oracle.com/java-platform-group/a-quick-summary-on-the-new-java-se-subscription
- https://blogs.oracle.com/java-platform-group/faster-and-easier-use-and-redistribution-of-java-se
- https://adoptopenjdk.net/
- https://www.azul.com/products/zulu-and-zulu-enterprise/zulu-enterprise-java-support-options/
- https://visualvm.github.io/download.html
- https://stackoverflow.com/questions/22358071/differences-between-oracle-jdk-and-openjdk
- https://blog.joda.org/2018/09/from-java-8-to-java-11.html
[1] - there are caveats to this, but this is the thrust