Pro version of Oracle JDK 11+ (licensing and distribution)

Original author: Donald Smith
  • Transfer
Yesterday, a translation of the post “Don't fall into the trap using Oracle JDK 11” was published on Habré followed by a discussion of “paid Java”, but not everything is as scary as it seems at first glance - the translation of the publication from the Oracle blog with the official position on licensing and distribution JDK 11+ versions.

Summary


Starting in Java 11, Oracle will release the JDK under the GNU General Public License v2, with the Classpath Exception (GPLv2 + CPE) and a commercial license for those who use the Oracle JDK as part of the Oracle products or services, or who do not want to use the open software. This combination of OS and commercial licenses replaces the old Oracle Binary Code License ( BCL ), which consists of commercial and free terms of use.

Separate assemblies will be provided for each license, but these assemblies will be functionally identical , except for some cosmetic differences and differences in the packaging method of the binaries described in detail below.

From BCL to GPL


The BCL license for Oracle Java SE has been used to license Oracle Java SE technologies for more than 10 years. BCL, under certain conditions, allows use without license fees. To simplify further work, starting with Java 9, Oracle began to provide OpenJDK assemblies under the OS license used by the Linux platform (the Linux kernel is distributed under the GNU GPLv2 license) . If you are used to using Oracle Java SE binaries for free, you can simply continue to do this with the OpenJDK binaries available at jdk.java.net. If you are used to using Oracle Java SE binaries as part of a commercial Oracle product or service, then you can continue to get Oracle JDK releases through My Oracle Support (MOS) or elsewhere.

Identical, functionally and interchangeable ...


Oracle JDK, licensed by BCL, historically contained “commercial functions” that were not available in the OpenJDK builds. As promised, over the past year, Oracle has added these features to OpenJDK, including:


Therefore, starting with Java 11 and higher, the Oracle JDK and OpenJDK assemblies will be essentially identical.

... but with some cosmetic and packaging differences


There remains a small amount of difference, some deliberate and cosmetic, and some simply require more time to discuss with the OpenJDK contributors.

  • Oracle JDK 11 issues a warning when using the option -XX:+UnlockCommercialFeatures, whereas in OpenJDK this option will result in an error. This option has never been part of OpenJDK, so there is no point in adding it, since OpenJDK has no commercial functions. This difference remains to make it easier for Oralce JDK 10 or earlier users to upgrade to Oracle JDK 11 or later.
  • Oracle JDK 11 can be configured to provide log data to the Advanced Management Console , which is a standalone commercial Oracle product. We will work with other OpenJDK contributors on the need to provide such data and its benefits in OpenJDK in future versions. This difference remains primarily to preserve the accumulated experience of Oracle customers.
  • The command javac --releasebehaves differently for Java 9 and Java 10, because in these versions of Oracle, the JDK contains some additional components that were not part of the corresponding versions of OpenJDK:
    • javafx.base
    • javafx.controls
    • javafx.fxml
    • javafx.graphics
    • javafx.media
    • javafx.web
    • java.jnlp
    • jdk.jfr
    • jdk.management.cmm
    • jdk.management.jfr
    • jdk.management.resource
    • jdk.packager.services
    • jdk.snmp

    This distinction remains to maintain compatibility in some cases legacy. These modules are now either available separately as part of OpenJFX, or present in OpenJDK and Oracle JDK, because they were commercial functions that Oracle added to OpenJDK, or were removed from Oracle JDK 11 (for example, JNLP).
  • The output of the commands java --versionand java -fullversionwill be different between the assemblies of Oracle JDK and OpenJDK so that the support teams can diagnose any problems that arise. In particular, a run java --versionwith an Oracle JDK 11 build will output:
    java 11 2018-09-25
    Java (TM) SE Runtime Environment 18.9 (build 11 + 28)
    Java HotSpot (TM) 64-Bit Server VM 18.9 (build 11 + 28, mixed mode)

    And with OpenJDK 11:
    openjdk version "11" 2018-09-25
    OpenJDK Runtime Environment 18.9 (build 11 + 28)
    OpenJDK 64-Bit Server VM 18.9 (build 11 + 28, mixed mode)
  • Oracle JDK has always required that third-party cryptographic providers sign with a well-known certificate. Cryptography in OpenJDK has an open interface, which means that there is no restriction on the crypto provider used. Oracle JDK 11 will continue to require a valid signature, and OpenJDK assemblies will still allow the use of a third-party crypto provider with both a valid signature and no signature.
  • Oracle JDK 11 will continue to include installers, branding, and JRE for compatibility with desktop legacy applications. OpenJDK builds are now available as zip and tar.gz files, while alternative formats for distribution are being considered.

How do we call them?


Ideally, we could refer to all the Oracle JDK assemblies as an “Oracle JDK”, or under a GPL license or a commercial license, depending on your situation. However, for historical reasons, as long as there are minor differences, we will refer to them separately: OpenJDK and Oracle JDK.

Also popular now: