Oracle has determined how it will treat both developer users and personal users of its Oracle Java.
Both Development users and Personal users (for games, etc.) will enroll in the Oracle Technology Network (“OTN”) by virtue of agreeing to the terms and conditions whenever they opt to download the program or an update.
Personal Users
It is important to understand how Oracle defines personal use. It does so with the following per the terms and conditions of the OTN:
- “Personal Use” refers to an Individual’s use of the Programs solely on a desktop or laptop computer under such Individual’s control only to run Personal Applications.
- “Personal Applications” refers to Applications designed for individual personal use only, such as games or personal productivity tools.
For personal users, Oracle states that users “… will continue to receive updates as before until at least December 2020.” So that part didn’t change.
However, Oracle adds that “The auto-update mechanism will ask you to confirm that you understand and accept the new license before updating.” Let see what that means…
You’ll be greeted by the Java Download screen:
Notice that last sentence. It states that you have accepted the terms and conditions of the OTN agreement. This will be the default going forward (for the foreseeable future). At issue is the possibility that the terms and conditions of the OTN agreement can change. This agreement is an online reference that can be changed without your knowledge.
If you do not click on “Agree and Start Free Download” then the product will not be installed or updated.
Note that the browser may need to restart (close and re-open) to enable the Java installation.
Development Users
Just as Oracle has defined personal use, it also defines what constitutes development use. And, again, it does so with the following per the terms and conditions of the OTN:
- “Development Use” refers to Your internal use of the Programs to develop, test, prototype and demonstrate Your Applications. For purposes of clarity, the “to develop” grant includes using the Programs to run profilers, debuggers and Integrated Development Environments (IDE Tools) where the primary purpose of the IDE Tools is profiling, debugging and source code editing Applications.
- “Program(s)” refers to Oracle software provided by Oracle pursuant to this Agreement and any updates, error corrections…
Within this update from Oracle comes an important change. The older OTN License Terms that were applied to Java used to include the following language:
You may not:
- use the programs for your own internal data processing or for any commercial or production purposes, or use the programs for any purpose except the development of your application;
- use the application you develop with the programs for any internal data processing or commercial or production purposes without securing an appropriate license from us;
- continue to develop your application after you have used it for any internal data processing, commercial or production purpose without securing an appropriate license from us, or an Oracle reseller…
Notice that last bullet point. It states that you were not allowed to continue to develop the application after it had been placed in production. This is because Oracle assessed that a production support environment was a production environment.
However, the new OTN License Agreement for Oracle Java SE, which is retro-active to Java 11, lacks this language. Instead, it contains only the following:
You may not:
- remove or modify any Program markings or any notice of Oracle’s or a licensor’s proprietary rights;
- make the Programs available in any manner to any third party (other than Contractors acting on Your behalf as set forth in this Agreement);
- assign this Agreement or distribute, give, or transfer the Programs or an interest in them to any third party, except as expressly permitted in this Agreement for Contractors (the foregoing shall not be construed to limit the rights You may otherwise have with respect to Separately Licensed Third Party Technology);
- cause or permit reverse engineering (unless required by law for interoperability), disassembly or decompilation of the Programs; and
- create, modify, or change the behavior of, classes, interfaces, or subpackages that are in any way identified as “java”, “javax”, “sun”, “oracle” or similar convention as specified by Oracle in any naming convention designation.
This is a huge change about using Java in order to support the production application. While it is not permitted under the old agreement, it would seem that it is permitted now.
The definition (see above), citing the use of tools such as debugging and/or editing tools, would allow for the support of production applications using a for-free version of commercial Oracle Java.
The download for Oracle Java is the same as that for personal users (please see above).
OpenJDK Versus Oracle OpenJDK
There are two (2) versions of the Oracle Java Development Kit or “JDK”: The commercial version, or the OpenJDK, and the open version, the Oracle OpenJDK.
The OpenJDK is contributed to by Oracle (who used to actually lead the build team). The Oracle OpenJDK is from Oracle and is contributed to only by Oracle. It also uses the same version numbers as its commercial counterpart.
If you head to the Java download page (Java 8 used for this example), you will see both the “GA” (“General Availability”) and “BPR” (“Bundled Patch Releases”). As you can see, “BPR builds are available only as commercial offerings to Oracle customers.”
As another example, if you head to the Java 13 download page, you will see the language “Oracle also provides the latest OpenJDK release under the open source GPL License at jdk.java.net.”
So from that perspective, the OpenJDK – that is the non-Oracle JDK – and the Oracle OpenJDK are different. But they are similar inasmuch as Oracle does contribute to the OpenJDK. However, the OpenJDK can add features and functionality that might never make it into the Oracle OpenJDK.
The sophisticated organization would assess, with the assistance of an expert like Miro, which of the two might be most practical or perhaps required. Using this information, that organization would be better prepared for deploying Java and possibly funding its licensing.