大约2021年9月初,看到新闻说Oracle JDK17免费下载,可以免费商用,这就有些奇怪了,因为8月1日时,JDK8的升级还提示要遵守新的不可商用的许可协议(http://www.brofive.net/?p=8924)。于是怀着将信将疑的心情去看了一下新的许可协议。
1.、JDK17确实可以免费商用,时间截止到2024年9月,共计3年。完整的许可协议在这里(NFTC,https://www.oracle.com/downloads/licenses/no-fee-license.html),我把权利和义务放到附录1。里面说的比较清楚,在符合美国进出口限制的情况下,开发者既可以在内部使用JDK17,也可以发布给客户使用。需要指出这个许可协议是通用的,并不针对JDK17,只有在JDK17的下载页中给出了说明(https://www.oracle.com/java/technologies/downloads/),内容如下。也就是说JDK17是Oracle Java中的一个特例,之前的版本维持原状。注意这个免费是没有订阅服务的,Oracle的订阅服务是要收费的,参见(2)。此外Oracle启动了LTS长期版本设计,目前看是3年(以后是2年),在下一个LTS版本出现后,前一个NFTC许可的LTS会至少保持1年。LTS最少8年(前3年免费商用,后5年不免费)。在Oracle的FAQ中指出:JDK17之后的版本都遵守NFTC协议(免费),但是有时间期限,免费期之后会收费(OTN)。非NFTC协议的JDK,例如JDK18,6个月内可以免费。
Java 17 LTS is the latest long-term support release for the Java SE platform. JDK 17 binaries are free to use in production and free to redistribute, at no cost, under the Oracle No-Fee Terms and Conditions License. JDK 17 will receive updates under these terms, until at least September 2024。
The NFTC is the license for Oracle JDK 17 and later releases. Subject to the conditions of the license, it permits free use for all users – even commercial and production use. There is no click through license so automating downloads of it has never been easier.
Oracle will use the NFTC for JDK 17 and later releases. LTS releases, such as JDK 17, will receive updates under this license for one year after the release of the subsequent LTS. After the free use license period, Oracle intends to use the OTN License, the same currently used for Java 8 and 11 LTS releases, for subsequent updates. Non-LTS releases such as JDK 18 will be available for their entire planned six months support life under the NFTC.
2、Oracle Java SE 订阅是要收费的,网页上说的很清楚。每个订阅收费单位是按照每个处理器每年收费的模式。数量3000及以上,每个单位是1227人民币,Oracle认为这是一个低价。数量2万以上可以联系销售获得更低折扣。(https://www.oracle.com/java/java-se-subscription/)。Java订阅的主要内容包括:JMS、AMC、GraalVM,以及7×24开发支撑等。
Java SE Subscription is a simple, low-cost yearly subscription that includes Java SE Licensing and Support for use on Desktops, Servers or Cloud deployments. It follows a commonly used model, popular with Linux distributions. The subscription provides access to tested and certified performance, stability, and security updates for Java SE, directly from Oracle. It also includes access to My Oracle Support 24×7, support in 27 languages, Java SE 8 Desktop management, monitoring, and deployment features, among other benefits. To order quantities of 20,000 or greater, please contact an Oracle Sales Representative.
3、JDK8的什么版本是免费商用的?2019年JDK8 u221之前的版本是可以免费商用的。此后需要Oracle的商用许可才能商用。
Since the Java 8 update at April 16, 2019 8u221, all versions and updates for (Java 8, 9, 10, 11 and 13) has no cost just for personal use and development purposes. Any other use, needs a Commercial License
- End of Public Updates for Oracle JDK 8
- The Oracle JDK License has changed for releases starting April 16, 2019.
- Official List of updates and release versions
- Java official supported versions
- Oracle Java 8 download alert
- Oracle Java 8 unsupported but free version
- Java 4 legacy official download page
- Java 5 legacy official download page
- Java 6 legacy official download page
- Java 7 legacy official download page
小结:JDK17之后的版本可以免费分发和商用,但是仅有3年时间,3年后无法免费商用。看起来,这是一个套路:JDK用户持续下降,Oracle又不想放弃收费的机会。JDK17的免费和JDK8u221之前的免费有一个巨大的区别:JDK8u221之前只要不升级可以无限期免费。而JDK17只有3年免费,以后必然收费,除非用户升级到新的LTS(前提是Oracle保持承诺,所有LTS都免费3年)。所以在Twitter、StackOverflow等国内外开发者网站看,开发者都表现的比较谨慎和理智。
相关信息:
1、JDK8的更新版本也要服从新的许可协议:http://www.brofive.net/?p=8924
2、Java 17 available now:https://www.oracle.com/java/technologies/downloads/#jdk17-windows
3、Oracle No-Fee Terms and Conditions (NFTC):https://www.oracle.com/downloads/licenses/no-fee-license.html
4、Java 17 发行说明:https://www.oracle.com/java/technologies/javase/17all-relnotes.html
5、Oracle Java SE 订阅:https://www.oracle.com/java/java-se-subscription/
6、OpenJDK 的几个版本:http://jdk.java.net/
7、OpenJDK国内镜像:https://www.injdk.cn/
8、JDK17 Blog:https://blogs.oracle.com/cloud-infrastructure/post/introducing-free-java-license
9、Java SE 许可FAQ:https://www.oracle.com/java/technologies/javase/jdk-faqs.html
10、https://ondro.inginea.eu/index.php/new-features-in-java-versions-since-java-8/
11、https://github.com/graalvm/graalvm-ce-dev-builds/releases
12、https://twitter.com/java/status/1437785745163497479?s=19
附录1:Oracle No-Fee Terms and Conditions (NFTC):
Oracle grants to You, as a recipient of this Program, subject to the conditions stated herein, a nonexclusive, nontransferable, limited license to:
(a) internally use the unmodified Programs for the purposes of developing, testing, prototyping and demonstrating your applications, and running the Program for Your own personal use or internal business operations; and
(b) redistribute the unmodified Program and Program Documentation, under the terms of this License, provided that You do not charge Your licensees any fees associated with such distribution or use of the Program, including, without limitation, fees for products that include or are bundled with a copy of the Program or for services that involve the use of the distributed Program.
You may make copies of the Programs to the extent reasonably necessary for exercising the license rights granted herein and for backup purposes. You are granted the right to use the Programs to provide third party training in the use of the Programs and associated Separately Licensed Technology only if there is express authorization of such use by Oracle on the Program’s download page or in the Program Documentation.
Your license is contingent on compliance with the following conditions:
– You do not remove markings or notices of either Oracle’s or a licensor’s proprietary rights from the Programs or Program Documentation;
– You comply with all U.S. and applicable export control and economic sanctions laws and regulations that govern Your use of the Programs (including technical data);
– You do not cause or permit reverse engineering, disassembly or decompilation of the Programs (except as allowed by law) by You nor allow an associated party to do so.
For clarity, any source code that may be included in the distribution with the Programs is provided solely for reference purposes and may not be modified, unless such source code is under Separate Terms permitting modification.
附录2:Oracle Technology Network License Agreement for Oracle Java SE
License Rights and Restrictions Oracle grants You a nonexclusive, nontransferable, limited license to use the Programs, subject to the restrictions stated in this Agreement and Program Documentation, only for:
(i) Personal Use,
(ii) Development Use,
(iii) Oracle Approved Product Use, and/or
(iv) Oracle Cloud Infrastructure Use.
You may allow Your Contractor(s) to use the Programs, provided they are acting on Your behalf to exercise license rights granted in this Agreement and further provided that You are responsible for their compliance with this Agreement in such use. You will have a written agreement with Your Contractor(s) that strictly limits their right to use the Programs and that otherwise protects Oracle’s intellectual property rights to the same extent as this Agreement. You may make copies of the Programs to the extent reasonably necessary to exercise the license rights granted in this Agreement.
You may not:
- remove or modify any Program markings or any notice of Oracle’s or a licensor’s proprietary rights;
- make the Programs available in any manner to any third party (other than Contractors acting on Your behalf as set forth in this Agreement);
- assign this Agreement or distribute, give, or transfer the Programs or an interest in them to any third party, except as expressly permitted in this Agreement for Contractors (the foregoing shall not be construed to limit the rights You may otherwise have with respect to Separately Licensed Third Party Technology);
- cause or permit reverse engineering (unless required by law for interoperability), disassembly or decompilation of the Programs; and
- create, modify, or change the behavior of, classes, interfaces, or subpackages that are in any way identified as “java”, “javax”, “sun”, “oracle” or similar convention as specified by Oracle in any naming convention designation.
The Programs may contain source code that, unless expressly licensed in this Agreement for other purposes (for example, licensed under an open source license), is provided solely for reference purposes pursuant to the terms of this Agreement and may not be modified.
All rights not expressly granted in this Agreement are reserved by Oracle. If You want to use the Programs for any purpose other than as expressly permitted under this Agreement, You must obtain from Oracle or an Oracle reseller a valid Program license under a separate agreement permitting such use.
OwnershipOracle or its licensors retain all ownership and intellectual property rights to the Programs.