当我在码头化项目在我目前的工作,我得到了这个疑问:我可以使用哪种Java?
这种怀疑是由于:
所以经过一番研究,我得出了这样的结论:
- 自2019年4月16日8u221的Java 8更新以来,(Java 8、9、10、11和13)的所有版本和更新均免费仅用于个人使用和开发目的。任何其他用途,均需要商业许可证
- 7之前的旧版本,没有也不会有任何更新。如果旧系统支持需要更新这些版本,也许销售联系人可以提供解决方案。
- 如果我想将Java 8 oracle版本用于商业用途和免费,我需要使用之前版本的2019年4月16日8u221更新
问题
根据我的结论:
- 如果我的开发严格需要JDK 8或使用JDK 8开发,我是否可以仅将Oracle Java SE 8 JDK 8u202 and earlier versions用于免费和商业用途,接受问题和安全问题?
- 如果我可以改变我的开发和我仍然希望免费,和我希望有改进和安全更新,我必须使用这些java open implementations之一?
参考文献
- 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
5条答案
按热度按时间5rgfhyps1#
更新2021年9月
在我第一阅读时,这个新的许可证似乎使生产使用免费(沿着开发、测试和培训使用),除了捆绑Oracle JDK产品的付费产品。但我不是律师,所以请您自己阅读条款,并根据需要咨询法律的建议。
请记住,许多其他供应商继续提供Java规范的实现,如下面的流程图所示。其中一些供应商出售支持计划,或者是可选的,或者是作为使用其产品的一项要求。永远不要想当然,总是阅读您获得的任何分发版的详细要求。
2021年又一更新:将Microsoft添加到下面的供应商列表中。
多家供应商提供了Java实现选项
Answer by Speakjava是正确的和信息。
此外,我还制作了一个流程图,用于指导您选择Java实现的供应商。
或者换一种方式来看:你的特殊动机或情况。
ha5z0ras2#
在JDK 9发布的同时,Oracle对Java平台的开发、分发和更新方式进行了大量重大更改。
回答您问题的关键事实如下:
1.从JDK 11开始,许可证更改为Oracle技术网络许可协议(OTNLA),要求您购买Java SE订阅以用于商业生产。自4月起,此许可证也适用于JDK 8的更新(更新211/212)。
1.从JDK 11开始,Oracle消除了Oracle JDK与纯粹从OpenJDK源代码构建的二进制文件之间的所有功能差异。Oracle JDK 11中不再重要的东西是浏览器插件、Java Web Start和JavaFX。
1.您可以继续在生产环境中使用JDK 7(及更早版本)的任何Oracle公共二进制文件,而无需订阅Java SE,因为许可证仍然是OBCL(尚未进行追溯性更改)。您还可以如您所说,免费使用JDK 8更新OBCL下的202。
1.有几个选项可以继续使用JDK 8并提供免费更新,阿苏尔的Zulu Community就是其中之一这是一个免费的、经过TCK测试的二进制文件,具有一些附加的后端口特性(TLS 1.3和Java飞行记录器)。由于这通过了TCK,所以从功能的Angular 来看,它与Oracle JDK相同。除非您使用的是Applet或Web Start,否则您的应用程序将以与Oracle JDK相同的方式工作。
1.如果您想迁移到JDK 11(当前的长期支持版本,由Oracle定义,但随后是所有其他JDK提供程序),则需要选择一个免费发行版(如Zulu Community)。
强烈建议确保您的JDK是最新的,并且包含所有相关的安全修补程序。继续使用旧版本可能会使您面临严重的安全漏洞。
wsewodh23#
总结
如果您需要在生产服务器中免费使用java,您有两种选择
OpenJDK是Java SE规范的开源参考实现,但它只是源代码https://github.com/openjdk
其中之一是https://jdk.java.net/java-se-ri/19,由Oracle维护:
来源:https://whichjdk.com
OTN与BCL的许可证数量
Oracle JDK 8(又名1.8)不再使用BCL(二进制代码许可证),从2019年4月16日起,Oracle JDK 8使用OTN(Oracle技术网)许可证,需要创建Oracle账户才能下载JDK 8并支付!!
它实际上只是为了保护甲骨文的知识产权,并在发现漏洞时保护他们不被起诉。
来源:https://www.quora.com/In-short-what-does-the-Oracle-Binary-Code-License-Agreement-for-Java-SE-actually-say-or-prohibit/answer/Jon-Harley
总结如下:不承担风险,不存在Oracle的任何过错
总结如下:与BCL和FREE相反,仅在笔记本电脑上开发。对于企业,必须PAY
OpenJDK和Oracle JDK
OpenJDK和Oracle JDK目前都仅由Oracle创建和维护。
OpenJDK和Oracle JDK是通过了TCK(Java技术认证工具包)的相同Java规范的实现。
大多数JDK供应商都是在OpenJDK的基础上编写的,他们在不破坏TCK兼容性的情况下对组件进行了一些调整[主要是替换许可的专有部分/替换为只在特定操作系统上工作的更高性能的项目]。
来源:Differences between Oracle JDK and OpenJDK
免费官方选项
在这里我将列出并保持更新的官方链接,准备下载最常用的java版本
打开jdk 19
打开jdk 17
打开jdk 11
Oracle Java 8更新202
只有Java SE 8 JDK8u202和早期版本可免费用于开发和生产部署。您可以从以下网址下载:
Openjdk 8(已弃用)
您可以从here下载最新的v8版本。最新版本:
按照this使用curl下载
从https://openjdk.java.net/install/开始
Oracle Java 1.4、5、6和7(已弃用)
Oracle不显示任何与Java 1.4、5、6和7下载许可证更改相关的消息。因此,我们可以将它们用于开发和生产部署,接受问题和安全问题,因为这些版本太古老了!!
7之前的遗留版本,没有也不会有任何更新。如果您有一个遗留系统运行在这个java旧版本上,也许销售联系可以是一个解决方案。
不受可信第三方影响
祖鲁语社区(Java 6、7、8、11、13、14、15)
亚马逊科雷托(Java 11)
Eclipse开放式J9
更多第三方
以下实现(按字母顺序列出)是开源的,可以免费使用:
非免费选项
您应该为这些版本付费,但作为回报,您将拥有Oracle或其他第三方支持的许多功能
Oracle Java语言
https://www.oracle.com/java/technologies/downloads/
Oracle Java 8更新221
自2019年4月16日8u221的java 8更新以来,(java 8,9,10,11,14)的所有版本和更新都是免费的仅用于个人使用和开发目的。任何其他用途,需要商业许可证。
来源:https://www.baeldung.com/oracle-jdk-vs-openjdk
专有实现
还有其他私人或商业实施:
来源:https://www.baeldung.com/oracle-jdk-vs-openjdk
注解
更多参考资料
wgmfuz8q4#
Oracle JDK 17及更高版本在free-to-use license下提供,有效期至后续LTS版本发布后一年。此后,Oracle JDK将使用OTN许可证。
下面是一个相关的FAQs页面,其中解释了更多内容,但下面是从该页面中提取的摘要:
资料来源:
https://blogs.oracle.com/java/post/free-java-license
https://www.oracle.com/uk/java/technologies/javase/jdk-faqs.html
ars1skjm5#
现在,你可以使用JDK/Java 17,在JDK/java7下载页面(https://www.oracle.com/java/technologies/downloads/),你可以得到这个评论:
Java 17 LTS是Java SE平台的最新长期支持版本。JDK 17二进制文件可在Oracle免费条款和条件许可证下免费用于生产和重新分发。
JDK 17将根据这些条款接收更新,至少到2024年9月。