Many people are unsure about what recent changes to the release cadence of the JDK as well as the availability of different binaries and updates means. This session seeks to explain all you need to know.
2. Terminology
• Java Standard Edition (Java SE)
• Specification of Java language syntax, JVM, core libraries
• Defined by JCP through umbrella JSR
• Java Development Kit (JDK)
• Binary implementation of Java SE (may be a superset)
• Tested using TCK to ensure conformance to Java SE specification
• OpenJDK
• Open source project
• Reference implementation of Java SE standard
• OpenJDK binary
• JDK built directly from OpenJDK source code
2
4. OpenJDK: New Release Model
• A new version of the JDK will be released every
six months
– March and September
– Started this year with JDK 10 and JDK 11
• OpenJDK development will be more agile
– Previous target was a release every two years
• Features will be included only when ready
– Targeted for a release when feature complete
4
5. Long Term Support Releases
• Long term support for all releases is not practical
– One Long Term Support (LTS) release every three years
• Oracle JDK 8 has been classified as an LTS release
– Oracle JDK 8 public updates
• Stop in January 2019 for commercial users
• Non-commercial users get updates until December 2020
• Next LTS release is JDK 11 (then JDK 17, 23, etc.)
• JDK 9 and JDK 10 are feature releases
• Updates for only six months
5
6. Which Oracle JDK Binary
• Traditional Oracle branded binary (java.oracle.com)
– Oracle Binary Code License (FoU restrictions)
• New Oracle OpenJDK binary (jdk.java.net)
– GPLv2 with CPE license (no restrictions)
– Security and bug fix updates only for six months
• Only until next JDK release
• Two scheduled updates
– No overlap of updates for previous version
6
8. Converged Binaries (JDK 11)
• Some closed-source parts of the JDK will be open-
sourced
– Flight recorder
– Mission control
– Others
• Other closed-source parts will be removed
– Browser Plugin
– Java Web Start
– JavaFX
8
10. JDK 9: The Clean Up Starts
• JDK 9 was a significant change for Java
– Deprecated APIs were removed for the first time
• Six methods and one class
• JDK 10 removed 1 package, 6 classes, 9 methods and 1 field
– Redundant features eliminated
• jhat tool, JVM TI hprof agent
• Numerous deprecated GC options removed
– Significant command line changes
• JDK 9 removed 187 -XX flags
• JDK 10 removed 36 -XX flags
10
11. Housekeeping Will Continue
• More significant removals in JDK 11
– Applets, Browser Plugin, Web Start, JavaFX
– java.se.ee meta-module
• java.corba
• java.transaction
• java.activation
• java.xml.bind
• java.xml.ws
• java.xml.ws.annotation
• More in the future
– CMS GC and Nashorn deprecated, others?
11
12. Backwards Compatibility Not Guaranteed
• New versions of Java may include breaking
changes
– Anything for removal will be deprecated first
– Minimum of one release warning
• Could be only six months
12
13. Eliminating Confusion
• There will be an LTS release every three years
– This does NOT mean 3 years of free updates
• Oracle JDK (from JDK 11) can ONLY be used in production with a
commercial Java SE subscription
– The only free JDK 11 and later will be OpenJDK binaries
• Oracle JDK 8 can be used indefinitely for free
– But without any further security patches and bug fixes
• Oracle will only lead and contribute to each JDK for 6 months
– For all JDK: Feature and LTS
– Oracle will not backport updates
– Java community will need to do this for LTS
13
14. The Java Platform Today
14
Stable
Secure
Free
Choose two out of three
16. Zulu Java
• Azul’s free binary distribution of OpenJDK
– Passes all TCK tests
• JDK 6, 7, 8, 9,10 and 11 (EA) available
• Wider platform support:
– Intel 64-bit Windows, Mac, Linux
– Intel 32-bit Windows and Linux
– ARM 32 and 64-bit
– PowerPC
16
www.azul.com/downloads/zulu
18. AdoptOpenJDK Java
• AdoptOpenJDK’s free binary distribution of OpenJDK
– Some builds passes all TCK tests
• No commercial support, i.e. Free binaries only
• JDK 8, 9,10 and 11 (EA) available
• Widest platform support:
– Intel 64-bit Windows, Mac, Linux
– Intel 32-bit Windows and Linux
– ARM 32 and 64-bit
– PowerPC, AIX, Solaris, Linux s390, PowerPC LE et
FoU = Field of Use. restriction prevented people using Java in embedded applications without buying a license.
CPE = Classpath Exception. Eliminates the problem of the GPL license being viral, which would require you to make the source code for your application available.
Late 2018 probably means JDK 11, which comes out in September.
The idea of eliminating differences is so that the two binaries from Oracle (reference last slide) will be functionaly the same.