There’s a bit of confusion in the market around Java 11 licensing, so it seems appropriate to share some thoughts and hopefully add some value by saving you the research. Disclaimer before we get going: of course, consult your legal and compliance teams before you make any decisions around Java 11 adoption or distribution.
First of all, what are the options to get or distribute Java 11?
Oracle currently provides two key options to obtain the JDK [Java Development Kit], which is the platform that provides resources for building and running Java applications. These are the Oracle JDK and the OpenJDK. The Oracle JDK is a supported version of the JDK that software companies license and sometimes distribute as part of their own software solutions. The OpenJDK, as the name suggests, is and was an open-sourced version of the JDK for Java SE [Standard Edition] that is unsupported and historically lacked a few features of the commercial version. As Oracle notes “from Java 11 forward, therefore, Oracle JDK builds and OpenJDK builds will be essentially identical.” Some of the differences are delineated in links below.
Is Oracle’s OpenJDK limited in functionality vs the Oracle JDK?
Not really. The main difference is in the long-term support contracts that are provided by Oracle (or not) with the commercial Oracle JDK and the OpenJDK. In fact, the Oracle JDK and OpenJDK are built from the same code base. There are some very small differences that remain between the two, some cosmetic and some minorly functional. Those differences can be seen in a post from Oracle here.
Are there options to obtain or utilize the JDK outside Oracle?
In short, yes. IBM has announced longer-term support for some Java/JDK versions being utilized by their customers on the IBM SDK [Software Development Kit], which includes some JFrog customers. They have further committed (as seen in that link) on their roadmap to Java 11 support on their roadmap to deliver a Java 11 JDK in Q4 of 2018.
You may have heard Java 11 is a GPL license of some kind.
This is where licensing details matter and you should get appropriate legal or compliance advice. The license is a *version* of the GPL (General Public License), yes. The most common fear about GPL is that it’s a “copy-left” license, which means derivative works (or sometimes distributed works) usually must be made available under the same, open license terms as the original. While that’s possibly the scary part of GPL licensing in people’s minds, the specific license for Java 11 is actually a GPLv2 plus a classpath exception (GPLv2+CPE). This means some of the GPL issues you’re imagining may not be applicable under certain use cases. Of course, check with your legal team on this topic, as your specific usage of Java 11 may or may not apply.
What is the difference between the previous Oracle BCL (used for Java 8) and this new OpenJDK licensing?
The BCL, or Binary Code License, has governed the Java SE and Java FX distributions for a very long time, and was traditionally used to oversee the commercial aspects of Java SE, like Java Flight Recorder, Java Mission Control, ZGC and others. Since those previously-commercial features have since been contributed to the OpenJDK, the BCL was basically phased out over time in favor of more friendly open source licenses that govern the OpenJDK. As mentioned, with Java 11 and moving forward, the OpenJDK and Oracle JDK are virtually identical.
JFrog uses Java in a lot of their products, right?
Yes, indeed. And we’re looking at Java 11 just like many of you for a lot of the same reasons. Among them, the Java 8 support end of life is coming up, which is perhaps why you see companies like IBM and Red Hat extending support for some of their customers’ Java 8 JDK distributions. But aside from standard support, Oracle will, of course, no longer be providing library and security updates for the Java 8 platform, necessitating a move to the newer, supported platform.
What JFrog products utilize Java that will be affected by the Java 11 move?
We do develop products that require Java to run properly, and in some cases we ship the Java runtime as part of the Docker image distribution. Specifically, we utilize Java in JFrog Artifactory, JFrog Mission Control and JFrog Distribution. Here at JFrog, we’re moving to the OpenJDK in our products to give you the choice to use versions of the JDK that you choose as you explore the Java 11 migration.
Who should I ask if I need more information?
Of course, JFrog isn’t your lawyer. Be sure you pass anything through your legal teams if there are any licensing or compliance questions around Java 11. At JFrog, we’re working closely between our legal, product, sales and engineering groups to address our own choices on this issue, but you’ll want to consult your own compliance teams to make sure you’re on track with your own decisions regarding Java 11.
Any other resources for me?
Oracle has done a lot of writing on this topic, as you might imagine. For even more context, you might peruse some blogs from them around public update processes, the community that’s building the JDK, the release cadence of Java and releases of Java 11 and later.