As the fun world of IT is always changing an update to this note is now needed. The updates are primarily related to the new release of Java, version 17 and Oracle’s new No-Fee Terms and Conditions license for these new Java versions.
Tax Day 2019 was not only a day when Americans had to pay their taxes, but it was also the day that Oracle started charging a Java tax – no longer was Java free for commercial use. So, starting on April 15, 2019 any version of Java released thereafter would require users to pay Oracle for the privilege of using it. This included any updates for existing versions of Java.
This article will not be commentary on Oracle’s decision or the caveats of licensing Java, but rather is intended to be a simple reference of Java versions. Recently, I was part of a project to help a client determine if they were running any Java versions that required a subscription. After way too much Googling on the topic, I was unable to find any site that explicitly noted which versions needed a subscription. Most sites simply stated anything released after 15 Aug 2019, if they were even that specific.
Eventually, I stumbled on to the right combination of search terms and the Wikipedia article, Java version history. A huge thank you to the maintainers/authors of this article. Again, not the simple table that I was looking for, but at least a good source of summarized information that I could work with. Update: There have been changes to this article, it is no longer as useful as it once was.
So, to get to the point, a version-based summary of the last “free” version and the first “paid” version of Java SE. One thing of note: Sun, and subsequently Oracle, did offer Java SE Support for those who wanted a paid support option even before the Java subscription days. Those paying for SE Support received additional releases and patches that were not publicly available.
Another good resource on the topic is a slide deck, Java SE Subscription Workshop, available on SlideShare. It was presented by an Oracle employee, so it does paint Oracle in a good light, and offers a lot of justification on why they are charging for updates. Regardless, it is still a good source of information and a good reference.
In summary, I pulled together the information for my benefit and hope that by sharing it I can save you some time and effort. While it is just a simple reference, hopefully the straightforward, easy-to-read table gives you the answers you need.
Now for the reason for the update, Oracle announced in September 2021 that Java 17 would be released under the No-Fee Terms and Conditions (NFTC) license. This stated that Java 17 is free for commercial use, there was much rejoicing. However, there are strings attached that need to be fully understood before you rejoice or attempt to use Java 17. I will highlight a few of the strings that need to be reviewed before you get started.
As noted in another House of Brick article (that I strongly suggest you read) the NFTC license quite explicitly states that if you currently have a subscription agreement in place for any version of Java that agreement is in force; the NFTC license cannot be applied. Boiled down, if you already have a Java subscription you cannot use the NFTC license, you will still need to pay for a Java subscription. Also, as noted in the article any attempt to cancel the Oracle agreement to take advantage of the NFTC license may prove difficult if not impossible.
Another issue will be with getting all Java installations in your environment up to version 17 in order to take advantage of the NFTC license. As noted, the NFTC license is for Java 17 only and it is not likely that all of the Java applications you use are compatible with Java 17. It would also be impossible to upgrade everything at once. Thus, you are back to needing a subscription for previous versions that will then also include Java 17. It is a vicious circle.
The NFTC terms will also force Java version upgrades. Oracle has announced that new long-term support (LTS) versions of Java will be released every 2 years. You will then have one year to upgrade to the new LTS version once released. In my IT career I have run across very few organizations and have dealt with very few Java applications that can handle this cadence. If you have any old versions beyond the 1-year upgrade period the NFTC license will no longer apply, the Java license will then revert to an Oracle license that would then again require a subscription.
The quick summary here is free does not always mean free. Oracle took a lot of heat for starting to charge for Java and personally I see this Java 17 announcement as a publicity stunt. Oracle is stating that Java 17 is free, then constraining things to the point that it near impossible to actually take advantage of the “free” versions. The other option is the law of unintended consequences, Oracle just did not read their own paperwork. They intended to make Java 17 free but bumbled the implementation.