There are several good blogs about this subject (like this one), and I never paid much attention to Java and licensing. Until one of our customers became a bit frightend after Oracle approached them with the question if they were really license compliant using Java.
For many the words Java and licensing doesn’t belong in one sentence. So I am obliged to give our customer a proper answer and gave it a bit more attention by writing this blog. What’s this about licensing Java. And… things are going to change after Januari 2019 !
Let’s start with the license terms, the Oracle Binary Code License Agreement. Java SE license consists of two parts. The standard Java SE is still free to use , the commercial components are not:
Oracle grants you a non-exclusive, non-transferable, limited license without license fees to reproduce and use internally the Software complete and unmodified for the sole purpose of running Programs.THE LICENSE SET FORTH IN THIS SECTION 2 DOES NOT EXTEND TO THE COMMERCIAL FEATURES….. restricted to Java-enabled General Purpose Desktop Computers and Servers
What ‘General Purpose Desktop Computers’ exactly is, is exlained here, in a blog of B-Lay. An excerpt:
Personal computers, including desktops, notebooks, smartphones and tablets, are all examples of general-purpose computers. The term “general purpose computing” is used to differentiate general-purpose computers from other types, in particular the specialized embedded computers used in intelligent systems.
The Licensing Information User Manual (about 247 pages needed to eplain Java licensing…) is trying to give more information about what is free and what’s not, but doesn’t give much clarity.
The Java Command line option page is quite clear about it. Using the following flag unlocks commercial features:
Use this flag to actively unlock the use of commercial features. Commercial features are the products Oracle Java SE Advanced or Oracle Java SE Suite, as defined at the Java SE Products web page.
If this flag is not specified, then the default is to run the Java Virtual Machine without the commercial features being available. After they are enabled, it is not possible to disable their use at runtime.
As an example
java -XX:UnlockCommercialFeatures -XX:+FlightRecorder
Another way to split what commercial or not is to look at the pricelist.
Three paid packages are mentioned: Advanced Desktop, Advanced, and Suite.
But how do you know what you’re hitting, what commercial product is in what version, unlocked by the parameter ‘ XX:+UnlockCommercialFeatures ‘ . This can be derived from the Oracle technology price list supplement (for partners),on page 5 of the Licensing Information User Manual:
What’s free to use for now:
- JDK (Java Development Kit)
- JRE (Java Runtime Environment)
- SDK (JavaFX Software Development Kit)
- JavaFX Runtime
- JRockit JDK
But things are going to change…
When installing Java at the moment you will get the following message:
This roadmap will inform you about the following:
Public updates for Oracle Java SE 8 will remain available for individual, personal use through at least the end of 2020.
Public updates for Oracle Java SE 8 released after January 2019 will not be available for business, commercial or production use without a commercial license.
If you are acting on behalf of an ENTERPRISE, Oracle recommends you review the roadmap information for Java SE 8 and beyond and begin to assess your ongoing Java support requirements in order to migrate to a later release or obtain a commercial license, as appropriate, on a timely basis.
So there’s no such thing as a free lunch….
Oracle binary code license agreement: http://www.oracle.com/technetwork/java/javase/terms/license/index.html
Official Oracle licensing doc: http://www.oracle.com/technetwork/java/javase/documentation/java-se-lium-2017-09-18-3900135.pdf
Java command line option page: https://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html