In the last two years, at least two 'major changes' happen and impacting Java community. The first one, is Oracle announced that they intend to move Java to a release every six months. And the second is, along with the new cadence Oracle are announcing a major shift in how they build and release Java. Oracle intends to produce and distribute OpenJDK binaries as the primary JDK for developers going forward. This will replace the proprietary-licensed Oracle JDK as the primary release artifact distributed by Oracle. And now, this is what happen:
The proposal to change the release train to "one feature release every six months" rather than the current two-year schedule already took effect, start from Java 9 release. Here the release table since Java 9:
|Version||Release Date||End of Free Public Updates|
|Java SE 9||September 2017||March 2018|
|Java SE 10||March 2018||September 2018|
|Java SE 11 (LTS)||September 2018||N.A. for Oracle|
At Least September 2022 for AdoptOpenJDK
|Java SE 12||March 2019||N/A for Oracle|
September 2019 for Oracle's OpenJDK
When this article is posted at 20 December 2018, Java 8 and Java 11 are the currently supported long-term support (LTS) version. And this is the situation:
- Java 7 is no longer publicly supported
- Java 8 "end of public updates" is scheduled for January 2019 for commercial use, and not earlier than December 2020 for non-commercial use
- Java 9 has stopped receiving updates since Java 9 was a short-term rapid release version that has been superseded by Java 10
- Java 10 is the previously supported rapid release version, and the support ended on the same date that support for Java 11 began, in September 2018.
- Java 11 long-term support will not be provided by Oracle; instead, the broader OpenJDK community, as AdoptOpenJDK, is expected to perform the work.
- Java 12 to be released in March 2019, when in the same date no more free public updates from Oracle OpenJDK.
Read more from Update and FAQ on the Java SE Release Cadence.
Oracle JDK 11 License - Java 11 (Onward) In Production
Oracle JDK 11 License
From Java 11, Oracle has changed the license of their JDK, so instead of having a single JDK build which can be used either commercially (i.e. with paid support) or for free (which most of us were doing), they now have two different JDK builds:
- Oracle’s JDK (commercial) – "official" JDK from Oracle's website. We can use this in development and testing for free, but to use it in production we have to pay for it
- Oracle’s OpenJDK (open source) – primary JDK for developers. We can use this for free in any environment, like any open source library
Note that since Java 11, Oracle’s commercial JDK and Oracle’s OpenJDK builds are functionally the same, so we should be able to run our applications on either without having to make any changes or losing any features.
What This is Mean?
At least for me:
- Use Oracle OpenJDK from now. As of Java 11, OpenJDK has feature parity with Oracle’s JDK, so if you want to use a free JDK, use OpenJDK. You can download Oracle’s OpenJDK 11 build, or builds from the community led AdoptOpenJDK.
- We can still download the commercial Oracle JDK for free and use it for free in development/test environments, but it's no use if since beginning we intend to use OpenJDK in production environments.
Read more from:
- Oracle JDK Releases for Java 11 and Later
- Oracle's Java 11 trap - Use OpenJDK instead!
- Using Java 11 In Production: Important Things To Know
And How This Changes Impact Us?
From my opinion, nothing... really. Most enterprise environment is quite... conservatives, they even still not adopted Java 8 (although even Java 7 already in end-of-support). In projects we also mostly rely in stable (or proved - battle-tested) instead of fast pace (or even worse: frequent-changing) technologies and framework. Many will stay with Java 8. The challenge still same, to produce high quality products, put the licensing aside first.