While I was in a dockerization project in my current job, I got this doubt: Which Java can I use?
This doubt is due to :
So after some researches I got these conclusions:
- Since the Java 8 update at April 16, 2019 8u221, all versions and updates for (Java 8, 9, 10, 11 and 13) has no cost just for personal use and development purposes. Any other use, needs a Commercial License
- Legacy versions prior to 7, does not have and will not have any update. Maybe a sales contact could be a solution if an update in these versions are required for Legacy Systems Support.
- If I want to use Java 8 oracle version for commercials purposes and FREE, I need to use a previous version of April 16, 2019 8u221 update
Questions
According to my conclusions:
-
If my development strictly needs or was developed with JDK 8, Can I only use Oracle Java SE 8 JDK 8u202 and earlier versions for FREE and commercial purposes accepting issues and security problems?
-
If I can change my development and I want still FREE, and I want to have improvements and security updates, I must use one of these java open implementations?
References
- End of Public Updates for Oracle JDK 8
- The Oracle JDK License has changed for releases starting April 16, 2019.
- Official List of updates and release versions
- Java official supported versions
- Oracle Java 8 download alert
- Oracle Java 8 unsupported but free version
- Java 4 legacy official download page
- Java 5 legacy official download page
- Java 6 legacy official download page
- Java 7 legacy official download page
Update 2021-09
- For versions 8 through 16, Oracle required a fee if their own Oracle JDK product was used in production, but not for dev, test, and training usages.
- For Java 17, the Oracle JDK product is available under a new
No-Fee Terms and Conditions license, discussed on the Oracle
company blog.
On my first reading, it appears this new license makes production use free-of-cost (along with dev, test, and training usages), except for products sold for a fee while bundling the Oracle JDK product. But I am not an attorney, so read the terms yourself and consult legal advice as needed.
Keep in mind that many other vendors continue to provide implementations of the Java specs, as shown in the flowchart below. Some of these vendors sell support plans, either optionally or as a requirement for use of their product. Never assume, always read the detailed requirements for any distribution you obtain.
Another 2021 update: Add Microsoft to the list of vendors seen below.
Several vendors offer a choice of Java implementations
The Answer by Speakjava is correct and informative.
In addition, here is a flowchart I made to guide you in choosing a vendor for a Java implementation.
Or another way to view this: Your particular motivations or situation.
Oracle made a number of significant changes to how the Java platform is developed, distributed and updated at the same time as the launch of JDK 9.
The key facts to answer your questions are these:
- Oracle was using the Oracle Binary Code License (OBCL) for Java. This had field of use restrictions (you needed a commercial license for embedded use) but granted free use of the Oracle JDK for general purpose development and deployment.
- As of JDK 11, the license changed to the Oracle Technology Network License Agreement (OTNLA), which requires you to purchase a Java SE Subscription for use in commercial production. This license has also been applied to updates of JDK 8 since April (update 211/212).
- As of JDK 11, Oracle eliminated all functional differences between the Oracle JDK and a binary built purely from the OpenJDK source code. The important things no longer in the Oracle JDK 11 are the browser plugin, Java Web Start and JavaFX.
- You can continue to use any public Oracle binaries of JDK 7 (and earlier) in production without the need for a Java SE subscription, as the license is still the OBCL (it has not been changed retrospectively). You can also, as you say, use JDK 8 up to update 202 under the OBCL without cost.
- There are several options for continuing to use JDK 8 with updates for free. One of those is Zulu Community from Azul (who I work for). This is a free, TCK-tested binary with a couple of additional backported features (TLS 1.3 and Java Flight Recorder). Since this passes the TCK, from a functional perspective, it is identical to the Oracle JDK. Unless you are using Applets or Web Start your applications will work in the same way as with the Oracle JDK.
- If you want to move to JDK 11 (the current long-term support release, as defined by Oracle but followed by all other JDK providers), then you will need to choose one of the free distributions (like Zulu Community).
It is highly recommended to ensure your JDK is up to date and contains all relevant security patches. Continuing to use an older version could expose you to significant security exploits.
Licences OTN vs BCL
Oracle JDK 8 (aka 1.8) no longer uses BCL (Binary Code License). From April 16, 2019, Oracle JDK 8 uses the OTN (Oracle Technology Network) license, which requires you to create an Oracle account to download JDK 8 and payment!!
BCL = Oracle Binary Code License
- You can use it, but you can't modify it
- You agree not to sue Oracle if anything goes wrong
- You can redistribute/publish it (so that you can sell products with Java embedded), but if you do, you agree to indemnify Oracle; so if someone sues you, you can't drag Oracle into it.
It's really just there to protect Oracle's intellectual property and to shield them from being sued when bugs are found.
source: https://www.quora.com/In-short-what-does-the-Oracle-Binary-Code-License-Agreement-for-Java-SE-actually-say-or-prohibit/answer/Jon-Harley
As a summary: FREE with risks and without any fault of Oracle
OTN = Oracle Technology Network License
As a summary: Opposite to BCL and FREE just for development in your laptop. For enterprises, you must PAY
FREE with risks: Java 1.4, 5, 6 and 7
Oracle does not show any message related to license changes for Java 1.4, 5, 6 and 7 downloads. So we can use them for development and production deployment, accepting issues and security problems.
- Oracle downloads:
- https://www.oracle.com/java/technologies/java-archive-javase-v14-downloads.html
- https://www.oracle.com/java/technologies/java-archive-javase5-downloads.html
- https://www.oracle.com/java/technologies/javase-java-archive-javase6-downloads.html
- https://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html
Legacy versions prior to 7, does not have and will not have any update. Maybe a sales contact could be a solution if your have a Legacy Systems running over this java old versions.
FREE with risks: Java 8 update 202
Just Java SE 8 JDK 8u202 and earlier versions are free for development and production deployment. You can download it from:
- https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html
NOT FREE anymore but safe: Java 8 update 221
Since the java 8 update at April 16, 2019 8u221, all versions and updates for (java 8,9,10,11,14) has no cost just for personal use and development purposes. Any other use, needs a Commercial License.
-
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html latest update 251
-
https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html previous updates (241,231,221,212,211)
FREE and safe : OpenJDK 8
AdoptOpenJDK uses infrastructure, build and test scripts to produce prebuilt binaries from OpenJDK™ class libraries and a choice of either OpenJDK or the Eclipse OpenJ9 VM.
All AdoptOpenJDK binaries and scripts are open source licensed and available for free.
OpenJDK is a ORACLE initiative. More details here: https://adoptopenjdk.net/
compressed mode
You can download the latest v8 release from here. Latest version:
- https://github.com/AdoptOpenJDK/openjdk8-upstream-binaries/releases/download/jdk8u292-b10/OpenJDK8U-jdk_x64_windows_8u292b10.zip
- https://github.com/AdoptOpenJDK/openjdk8-upstream-binaries/releases/download/jdk8u292-b10/OpenJDK8U-jdk_x64_linux_8u292b10.tar.gz
- I can't find the version for osx :(
Follow this to download using curl
install mode
apt-get install openjdk-8-jre (just run apps)
apt-get install openjdk-8-jdk (develop and run)
From https://openjdk.java.net/install/
FREE and safe : Zulu Community (Java 6,7,8,11,13,14,15)
Zulu Community Downloads:
- https://www.azul.com/downloads/zulu-community/?architecture=x86-64-bit&package=jdk
FREE and safe : OpenJDK (Java 8,9,10,11,12,13,14)
- https://jdk.java.net/archive/
- https://openjdk.java.net/install/
Free and Open Source
The following implementations, listed in alphabetical order, are open source and free to use:
- AdoptOpenJDK
- Amazon Corretto
- Azul Zulu
- Bck2Brwsr
- CACAO
- Codename One
- DoppioJVM
- Eclipse OpenJ9
- GraalVM CE
- HaikuVM
- HotSpot
- Jamiga
- JamVM
- Jelatine JVM
- Jikes RVM (Jikes Research Virtual Machine)
- JVM.go
- leJOS
- Maxine
- Multi-OS Engine
- RopeVM
- uJVM
Source: https://www.baeldung.com/oracle-jdk-vs-openjdk
Proprietary Implementations
There are also other private or commercial implementations:
- Azul Zing JVM
- CEE-J
- Excelsior JET (Discontinued)
- GraalVM EE
- Imsys AB
- JamaicaVM (aicas)
- JBlend (Aplix)
- MicroJvm (IS2T – Industrial Smart Software Technology)
- OJVM
- PTC Perc
- SAP JVM
- Waratek CloudVM for Java
Source: https://www.baeldung.com/oracle-jdk-vs-openjdk
Oracle Java 9 and 10 : Deprecated
Oracle Java 9 and 10 has reached end of support.
- https://stackoverflow.com/a/50333498/3957754
More References
- https://www.oracle.com/technetwork/java/javase/overview/faqs-jsp-136696.html
- https://www.oracle.com/downloads/licenses/javase-license1.html
- https://openjdk.java.net/projects/jdk8/
- https://www.oracle.com/java/technologies/javase/8u-relnotes.html
- https://gist.github.com/jrichardsz/83db09163ca9a0db4c9cd4f91cbf0598/