Bottom line: these limitations DO apply to ANY PRODUCTION use, not just "commercial" use, definitely regarding Java 11, and seemingly clearly regarding Java 8.
For more clarification, read on.
This is a 3rd post of mine in a series regarding this matter, of Oracle's changed stance (in 2018) regarding a) who can use for free their Java 8 updates released after Jan 2019 and b) who can use for free their Java 11 JVM (at all). See the first and second for more on the issues (as well as Java 9 and 10) and some options for those facing this challenge.
I also discuss in those posts the option of "openJDK" implementations which, including Oracle's, clearly ARE permitted to be used for production purposes, and for which the limitations discussed here do not apply. More on that in a moment.
In this post, I elaborate on this question of just WHO is impacted by the change, pointing to specific Oracle resources which clarify things.
As for Oracle's Java 11 JDK, the limitation is obvious
First, regarding Oracle's Java 11 JDK, it's very obvious. (And when I use the term "JDK" here, I'm using that in contrast to the OpenJDK implementation mentioned above, not in distinction from the JRE.)
When you go to the page to download Java 11, it offers a link to Oracle's Java 11 license page (which you agree to when downloading it). That license page clearly says: "You may not" "use the Programs for any data processing or any commercial, production, or internal business purposes other than developing, testing, prototyping, and demonstrating your Application".
Note there that the phrasing does not say "commercial AND production", but says "commercial, production, or internal business purposes". So it clearly precludes that JVM for any production use, regardless of whether you're specifically a "commercial/corporate" entity.
And it goes on to say that if you want to use it for such purposes, "you must obtain from Oracle or an Oracle reseller a valid Programs license under a separate agreement permitting such use". So that refers to licensing it, by paying Oracle for it.
(Again, as for using the Java 11 OpenJDK for free for production, that IS allowed per its own separate license: the GNU General Public license, as pointed to on the OpenJDK 11 download page, and which has no such limitations for production use.)
As for Java 8, the limitation is LESS obvious, but still seems to apply to ANY production use
Moving on to Java 8 and whether Oracle's updates for that are free for production use after Jan 2019, that too is made seemingly clear in Oracle references. But it was initially confusing for me, for a couple of reasons.
First, when I wrote my initial post in this series, I had found only the Oracle blog post about the change about Java 8 from Jan 2018, which refers to the change (regarding Java 8 updates after Jan 2019) as their being available only for "personal (non-corporate) use". That phrase "non-corporate" left me (and others) wondering.
Second, even if one follows the thread through Oracle's licensing info for Java 8, there's still an indication of it applying to "commercial" users, but if you read things carefully, you see that's not seemingly limited to "corporate" users but again to ANY production use. Let me explain.
If you go to the front page of where one would download Java 8, there's a box highlighting this "End of Public Updates for Oracle JDK 8". And that points to Oracle Java SE Support Roadmap, which also has a section on "End of Public Updates of Java SE 8".
That section of the roadmap clarifies that "Oracle will continue to provide free public updates and auto updates of Java SE 8, until >at least the end of December 2020 for Personal Users, and January 2019 for Commercial Users". (Emphasis mine.)
Here again, it's that phrase, "commercial users" that could ALSO easily confuse people. Most would read that as meaning "corporate" (like was said in the Oracle Jan 2018 blog post mentioned above).
But third and most important, earlier in that very roadmap document, the definition of "commercial user" is made clear: "Commercial Users are entities other than Oracle Customers that use Java SE for free for business, commercial or production purposes as part of a Java application delivered by a third party or developed internally". Again, the underlining emphasis is mine.
Note that it says, "business, commercial or production", so the OR seems clearly to mean not JUST "commercial" but also production use by any kind of entity.
(And as for the phrase, "as part of a java application", lest anyone think that somehow gives them an out, it seems that should read as *REGARDLESS OF WHETHER* the app is "delivered by a 3rd party or developed internally". In other words, it seems further to cover ALL production use.)
At least that's how I read things. Of course, "I am not a lawyer", so I leave all this for your own consideration.
"I thought Java had "commercial features" and only THOSE had to be 'licensed'?"
That is indeed another source of some confusion on this whole question of what is meant by "commercial" use.
Prior to Oracle Java 11, there were in fact certain separate features within the JVM, such as Flight Recorder and Mission Control, as identified in a page introducing these and other features.
And use of those features were indeed limited per the Java license (which applied to Oracle Java prior to 11), called the Oracle "Binary Code License" (BCL) for Java (and which was what one agreed to upon downloading Java before Java 11).
FWIW, the Java 11 license (linked to above in the Java 11 section and which one agrees to upon downloading it) is technically known as the Oracle "Technology Network License Agreement" (TCL) for Java.
To be clear, Oracle has removed those previously "commmercial" features from their Java 11 JDK implementation, and released them as open source.
So again, bottom line: if you are using Java for production purposes (whether "commercial" or not), the new limitations apply to you. You cannot use Oracle's Java 8 updates beyond Jan 2019 for free, and you cannot use Oracle's Java 11 (other than the openJDK implementation) for free. In both cases, you must license those from Oracle (or use an OpenJDK implementation). Again, see my previous (first and second) blog posts in this series, on those alternatives.
If you see things differently, or find other or better information to clarify all this, feel free to share it here.
For more content like this:
- If you may prefer direct help, rather than digging around here/elsewhere or via comments, I can help via my consulting services
- See that for more on how I can help a) over the web, safely and securely, b) usually very quickly, c) teaching you as we go, and d) with satisfaction guaranteed