OpenJDK vs Oracle JDK Java 11 License 2019 (GPL vs BCL) video explains licensing changes, i.e. which license users have to pay for and which is free when using Java11 JDK 2019 by various vendors and open source organisations. Following on From JDK 8 which was the previous Long Term Support release of Java, we now have JDK11 which is the new and latest Long Term Support release of Java. There has been quite a few changes in Java 11, both to the language and the features as well as to the licensing and distribution of the JDK. If we leave the language and feature changes to one side for the moment, I want to go through changes to JDK 11, its continued development, distribution and licensing.
So here is how everything is organized for Java 11:
There is an open source repository which is essentially the Open JDK 11 source code repository. From this source code repository, a number of vendors derive binary builds. One of the vendors is Oracle, which creates the Oracle JDK binary build, based on the Open JDK source code. The Oracle JDK can be found on the oracle website https://java.oracle.com and this is the JDK which most of us have been using up to now. Oracle also creates a second set of binary builds from the same Open JDK repository, which cannot be found on the Oracle website but instead are hosted on java.net website https://jdk.java.net/11/
So there are two different builds of exactly the same thing. The only difference between these two builds is the licensing.
The one on the Oracle website has an Oracle license (BCL) which means that you have to pay Oracle if you use it in production but the one on the java.net website is GPL licensed which means that you can use it for free. I will come back to the licensing...
Oracle is not the only vendor that provides JDK binaries, there are other vendors and organizations that also create binary builds of the JDK. There is a community project that creates Adopt Open JDK. They check out the same source code and build binaries and host it on their website. So you can go to their website, chose your platform and chose the JDK version and download and use it for free https://adoptopenjdk.net
RedHat is another vendor that check out the source code from the official OpenJDK repository. They add their changes to the source code. I believe they develop their own garbage collector which they bundle with their build. So they build the RedHat JDK Binary. Azul is yet another vendor which does the same thing. They checkout the source code and build their own binaries. IBM also does the same thing. Amazon is also contributing to the Long Term Support of JDK 11 but only for their Linux distribution which is heavily used on all services that are available through Amazon Web Services.
In fact, you can even do this yourself if you need to. You can download the source code to your local machine and build your own JDK based on the OpenJDK source code. So, what has changed in the Java 11 JDK is the licensing. The Open JDK binaries that are built by Oracle and hosted on java.net are GPL licensed. The Oracle JDK binary which is hosted on the Oracle website is now released with a different license called the Oracle Binary Code License or BCL for short which is what I am using in this diagram. This license is different to what you used to accept when you downloaded JDK 8, 9 and 10. The new and changed Oracle license for Java 11 requires you to pay Oracle if you use the Oracle JDK in production. So, if you download the Oracle JDK from the Oracle website and use it in production you have to pay Oracle.
But if you download the Open JDK from java.net then it is free to use in production because it is licensed under GPL. However, once the next version of Java is released which is version 12, Oracle will not back port updates or patches to the Open JDK repository for Java 11 nor will it update the binary builds that are hosted on java.net. So you have two options, either you upgrade to Java 12 which means a lot of work and is not in the spirit of having a Long Term Support version of Java or you continue to use Java 11 despite the risk of security vulnerabilities and lack of bug fixes, Oracle is not planning to support their GPL licensed JDK once the next version of Java is released, which means no back-porting of any security patches or fixes to JDK 11. New patches will only be applied to the next version of Java which is Java 12. This will essentially makes it meaningless to use the OpenJDK binary builds that are hosted on java.net as the Java version which has Long Term Support. RedHat and Azul are also likely to want to charge you for some form of support in return for updates to their JDK 11 build. So this leaves it up to the community to back-port the fixes to the source code repository which can then be used for building binaries by anyone. RedHat has allocated software engineers to take on this work. So they will back port security patches and bug fixes to official Open JDK source code