Java options

The Patchworks modeling system is a Java application. As such it requires a Java runtime environment in order to execute. Up until now most customers have been using versions of Oracle Java. Oracle Corporation is the owner and primary developer of Java. Traditionally Oracle Java has been free to use, but as of April 2019 this has changed. The changes to the Oracle Java license probably apply to your usage, so it is important to be aware of what this means, understand the different Java options, and choose an option carefully.

[Note]Note

I am not a licensing expert. The information in this note is based on my interpretation of information available from Oracle Corporation and others, and may be incorrect. Contact your Oracle sales and licensing office for the definitive information. For a more detailed explanation of issues read the article https://docs.google.com/document/d/1nFGazvrCvHMZJgFstlbzoHjpAVwv5DEdnaBr_5pKuHoJava Is Still Free.

This note discusses the commercial use of Java. Personal use of desktop Oracle Java for hobbies or home activities remains free. Use of Java for developing programs also remains free.

What has changed?

Oracle has made several changes to how Java is developed and licensed.

  1. The release cycle has changed

    Oracle plans to release a new feature version of Java every six months. Within the six month period the current feature release will receive security updates. Periodically a feature release will be designated for long term support (LTS). The long term support version will receive security updates for a period of up to 5 years or longer.

    The recommendation is that Java application developers such as Spatial Planning Systems should target their software to run on a long term support version. Patchworks runs on the Oracle Java 8 LTS, and is compatible with Oracle Java 11 LTS (although several small issues remain with third party libraries). Going forward SPS will target to maintain full compatibility with the current Java long term support release. Intermediate feature releases may or may not be supported.

    The following blog postings provide more information about the new Java release cycle:

    https://www.oracle.com/technetwork/java/java-se-support-roadmap.html

    https://blogs.oracle.com/java-platform-group/update-and-faq-on-the-java-se-release-cadence

  2. No more JRE versus JDK

    Oracle has traditionally released two variations of Java. One version has been the Java Runtime Environment (JRE). This version is for people who are running Java programs, and this has been the version that SPS has recommended customers use for Patchworks. This version provides all of the components that are required for program execution.

    The other traditional version is the Java Development Kit (JDK). The JDK contains all of the elements of the JRE, plus all of the tools required to develop Java programs. Most customers would not require the extra tools, and would not have used this version.

    From now on, it appears that there will only be one version of Java, and this will contain everything that has been in the JDK. This is not a problem: Java programs will still run the same way. If you have been using a JRE version, then you may not notice any difference other than the download is larger and more files are in the Java installation folder.

  3. Java is being developed by Oracle as open source software

    Oracle has licensed the source code to Java as open source software, and for several years now has been developing Java in an open environment. You may view and download the Java software source code at https://openjdk.java.net. In addition, you may download free to use compiled versions of OpenJDK Java from the same site.

    When a new version of Java is ready at OpenJDK, Oracle takes the source code and uses it to build a new version of Oracle Java. Oracle Java is the same as OpenJDK Java in all aspects of running Java programs. Patchworks will behave exactly the same way on OpenJDK Java as it will on Oracle Java. Versions of Oracle Java released after April 2019 will require a paid license (releases from April 2019 and earlier are still free).

  4. What is different between OpenJDK Java and Oracle Java?

    There should be no differences between the runtime behavior of OpenJDK Java and Oracle Java. Oracle has developed a Technology Compatibility Kit (TCK) that tests the conformance of a version of Java to the official standard. Both OpenJDK Java and Oracle Java pass this test. In fact the OpenJDK version is the reference implementation by which compatibility is measured.

    There are differences in branding, enterprise features, installation and updates between the two versions. Most users will not notice any change in branding and will not be using any enterprise features.

    Oracle will provide security updates to the long term support versions of Oracle Java for up to 5 years or longer. For example, security updates and bug fixes for Oracle Java 8 (the previous LTS) will continue until March 2022. Security updates and bug fixes for Oracle Java 11 (the current LTS) will continue until September 2023.

    Oracle will provide security updates to versions of OpenJDK for six months after which a new feature version is released and the process starts again. The six month limit for OpenJDK updates applies regardless if the version is designated for long term support or not. Extended support for security updates is not available for OpenJDK Java.

  5. Usage of new versions of Oracle Java requires a paid license

    Commercial use of new versions of Oracle Java produced after April 2019 require a paid license. It appears that you may continue to use versions of Oracle Java produced prior to April 2019 without requiring a paid license.

    OpenJDK Java does not require a paid license: you may use any version of OpenJDK Java under a free open source license.

  6. Other free compilations of Java are available

    Since OpenJDK Java is open source, other software vendors may take the Java source code and provide their own packages. An excellent explanation of this software ‘ecosystem’ is provided here:

    https://blog.joda.org/2018/09/time-to-look-beyond-oracles-jdk.html

    For example, the Adopt OpenJDK group will provide compiled versions of OpenJDK including security and bugfix updates to the LTS versions for four years. These updates will be curried from the updates applied to new OpenJDK versions, as well as from other sources. The quality and reliability of AdoptOpenJDK Java will likely be equivalent to Oracle Java. The AdoptOpenJDK is packaged with an installer that correctly sets registry and environment variable. AdoptOpenJDK is sponsored by IBM, Microsoft and others.

Some believe that these changes are a good thing, other feel like it is a trap. Regardless, the current situation is that Java is more open and available than ever before, and customers have more options for support than previously.

What are your options?

Customers that require a Java runtime environment have a number of options to choose from.

  1. Stay with the last ‘free’ Oracle Java

    It appears that you may continue to use the last ‘free’ Oracle Java 8 release (April 2019 and earlier) without requiring a paid license. By staying with the last release you will not receive security updates, bug fixes and new features. Under present plans, Patchworks will continue to support using this release at least until 2021 (this may change depending on customer adoption of other versions of Java).

    The risk of not receiving security updates depends on how you use Java. If you are only using Java for the purposes of running Patchworks then your exposure to security risks appears to be negligible. The Patchworks program runs on your local machine. In order to access Java a malicious attacker would have to gain access to your account and be able to run programs. At the point when the attacker has access to your account, using Java does open the attack surface any further.

    If you use Java for other applications other than Patchworks, you will have to assess their potential exposure to attack.

  2. Get a paid Oracle license and continue updating Oracle Java

    If you make commercial use of Java and you continue to download and install Oracle Java updates after April 2019 you will require a paid license from Oracle Corporation. Information about licensing is available from Oracle.

    https://www.oracle.com/ca-en/corporate/pricing

  3. Use an alternate version of Java from another provider

    Up-to-date versions of Java that have new feature, bug fixes and security updates are available from a number of sources. The OpenJDK 8/Hotspot version from the Adopt OpenJDK group appears to be a good choice.

How do these changes to Java development and licensing impact Patchworks?

These changes do not impact the development and future direction of Patchworks. Spatial Planning Systems will continue to develop Patchworks, taking a conservative approach to moving forward to new versions of Java to maintain the highest level of backwards compatibility for existing customers. An important priority for Patchworks development is to make sure that older models continue to run unchanged in new versions of Patchworks.

As of April 2019 Patchworks is compatible with Java 8 LTS. Patchworks is partially compatible with Java 11 LTS, with a few small exceptions in third party libraries. In the near future complete support will be added for Java 11 LTS and beyond.