April 2025: As the fun world of IT is always changing another update to this note is needed. The updates are mostly related to the chart below.
How the 2019 “Java Tax” Changed Licensing Forever
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.
Why This Java Version Reference Exists
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. Since April 2019, I have been a part of many projects to help evaluate the need for an Oracle Java subscription. These early on projects were complicated by the fact that there was no simple chart like the one below. Several years ago it took quite a bit of searching to put together this info and so I created the chart as a reference for myself. As noted it just needs to be updated from time to time.
Free vs Paid Java Releases: Quick Reference Chart
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.
Major Java Version | Last “Free” Update | First “Paid” Update | Notes |
1.4 | 1.4.2.30 | Updates greater than 30 not publicly available | |
5 | 5 u22 | 5 u23 | Update 23+ not publicly available, through Java SE Support |
6 | 6 u45 | 6 u51 | Update 51+ not publicly available, through Java SE Support |
7 | 7 u80 | 7 u85 | Update 85+ not publicly available, through Java SE Support |
8 (LTS) | 8 u202 | 8 u211 | |
9 | 9.0.4 | N/A | The final version of Java 9 was released before 15 April 2019 |
10 | 10.0.2 | N/A | The final version of Java 10 was released before 15 April 2019 |
11 (LTS) | 11.0.2 | 11.0.3 | |
12 | 12 | 12.0.1 | |
13-16 | N/A | N/A | Versions 13-16 were released after 15 April 2019 |
17 (LTS) | 17.0.12 | 17.0.13 | |
18-20 | N/A | N/A | All versions under NFTC License – free |
21 (LTS) | Current | TBD | NFTC License until Sept 2026, exact version TBD |
22-24 | N/A | N/A | All versions under NFTC License – free |
25 (LTS) | TBD | TBD | Future LTS release, Sept 2025 release |
Legacy Java 1.4 – 7: Still Alive in 2025
One crazy thing of note is that the version 1.4 – 7 rows in the chart are still relevant. As recently as April 2025 I had conversations with a client that was running 1.4.2 and had absolutely no intention of getting rid of it. We run across clients using those very old versions all the time.
NFTC License and Java 17+: What “Free” Really Means
Oracle announced in September 2021 that Java 17+ would be released under the No-Fee Terms and Conditions (NFTC) license. Under the NFTC license Java 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.
The Upgrade Catch-22 for Java 17+
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.
Two-Year LTS Cadence and Forced Upgrades
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 1 year to upgrade to the new LTS version once released. In my IT career I have run across very few organizations and have delt with very few Java applications that can handle this cadence.
The first iteration of this forced upgrade cadence has already occurred. In September of 2024 the last NFTC version of Java 17 was released. All Java 17 updates starting with 17.0.13 now requires a paid subscription. Java 17 users need to take care not to upgrade themselves into a compliance issue that would then require a very expensive Java subscription. In addition, the next forced upgrade from 21 to 25 is not that far away when looking at timelines in IT terms. The last NFTC version of Java 21 is expected to be released in September 2026.
Key Takeaway: “Free” Isn’t Always Free
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 the NFTC license 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.