With Java 11 release, there is no difference between OpenJDK and OracleJDK. All the features and licenses are exactly the same. Oracle has moved the Java license from BCL to GPL2 (+ ClassPath Exception ) license which is the same license used by OpenJDK as well.
Broadly, I can categorize them based on my understanding:
- OracleJDK for free
- OracleJDK with commercial - Java SE subscription Model.
When to use what?
- Use OpenJDK if you want to customize VM and language features and package it with your product.
- If you don’t want to make any changes in JDK and VM, also not looking for any support from Oracle - then prefer OracleJDK for free.
- If you have many applications which are still running with the older JDK versions like 6,7,8 which are not under LTS now, but you are still looking for security updates and support from Oracle - then go for OracleJDK with a commercial support.
Earlier, there were some commercial features(Heap Analyzer, Java Flight recorder,etc.) in OracleJDK but after Java 9 they slowly offloaded commercial features from the OracleJDK and contributed to OpenJDK.
Now with Java 11 - features, licenses and release cycle dates everything is same!
Long live Java!!