0 Votes

Migration

Last modified by Jeff McDonald on 2021/11/17 07:43

Work in progress...

Oracle has made some drastic (and confusing) changes to the way Java works and is licensed.

These changes include:

  • Oracle has switched to a six-month release cycle for Java
  • Oracle Java SE Developer Kit (JDK) is no longer free for commercial use
  • Older versions of Java require a subscription service to receive patches
  • The open source Java, OpenJDK, is still free
  • OpenJDK is now identical to the Oracle JDK
  • No patches for older versions of the OpenJDK will be released
  • The Java SE Runtime Edition (JRE) has been discontinued

This may sound like chaos, but actually Oracle has a strategy behind these changes.

Six-Month Release Cycle

Oracle has switched to a six-month release cycle, with bug fixes and patches freely available for the current version.

Developers are encouraged to upgrade to the latest version of Java to continue to receive updates. This reduces support costs by allowing developers to only focus on the current version of Java.

However, Oracle is designating certain versions of Java as Long Term Support (LTS) releases. This version of Java will continue to receive updates and patches for three years.

Java developers have a choice of upgrading every six months or every three years

Once a new version of Java is released, 

with certain releases designated as Long Term Support (LTS) versions 

Monetize Java

Starting with Java 11, Oracle requires a license for the commercial version of Java. Older versions

Java is the #1 programming language on the Internet.

Oracle acquired Java from Sun

The commercial, or "Oracle JDK", is no longer free to use in production.

Oracle requires a subscription to receive patches for older versions of Java.

The open source, or OpenJDK, is still free and and is now identical to the commercial version.

Java Migration

Java has made some drastic changes in the last couple of years.

Oracle has changed its licensing model. It now charges a subscription fee to receive patches for older versions of Java. (Java 1.7 & 1.8)

Newer versions of the Oracle JDK (11+) are no longer free for commercial use and require the subscription plan.

Oracle JDK (11+) is now identical to OpenJDK, which is still free.

Oracle JDK 11+ is no longer free for commercial use

OpenJDK 11+ is identical

Standard Edition

JDK 9

A complete description of changes can be found at: Java Platform, Standard Edition What’s New in Oracle JDK 9

Changes worth noting:

  • Major changes to JAR file format to support dependency resolution and allow release-specific versions of class files
  • Major change to compiled executable format to allow running applications without a full JDK
  • Deprecates Java Plug-in, ability to run Java as 'applets' in web browsers
  • Replaces Parallel GC with an improved G1 as the default garbage collector.
  • Minor enhancements to several core libraries.
  • Very minor changes to the Java language itself
  • Deprecates access to internal 'Sun' APIs

Despite very minor changes to the language itself, the move from Java 8 to 9 presents challenges. By deprecating access to the internal 'Sun' APIs, which were never intended to be used by developers, breaking much of the existing Java 6 / 7 / 8 code base out in the wild. It is still possible to use the internal 'Sun' APIs, but that can only be done at compile time. It's recommended to replace the internal APIs with their approved equivalents to prevent future problems.

Tips for migrating to Java 9 can be found here: Java Platform, Standard Edition Oracle JDK 9 Migration Guide

JDK 10

A complete description of changes can be found at: JDK 10 Release Notes

It took three years for Oracle to release Java 9, but only six months to release Java 10. As such, only modest changes to the JDK have been made.

Notable changes include:

JDK 11

JDK 11 is a long-term support (LTS) version of Java, meaning Oracle will continue to release patches for it for three years.

Starting with Java 11, the Oracle JDK is no longer free to use in production. However, the free OpenJDK is now identical to the commercial version. It can still be used for free in production. This also means that previously commercial-only features like "Flight Recorder" are now available for free in the OpenJDK.

For a full description of change in JDK 11, visit: What's New in JDK 11 - New Features and Enhancements