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.
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:
But what’s free to use:
- JDK (Java Development Kit)
- JRE (Java Runtime Environment)
- SDK (JavaFX Software Development Kit)
- JavaFX Runtime
- JRockit JDK
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