learningoracle 2018-09-26
在去年的 Java One 上,Mark Cavage 当时宣布 Oracle 将逐步开源 Oracle JDK 的专有功能(商业特性)。Oracle Java 平台产品管理高级总监 Donald Smith 曾在一篇博客文章中写道,他们的目的是让 OpenJDK 版本和 Oracle JDK 二进制文件之间没有技术差异。
但关于 OpenJDK 和 Oracle JDK 以及其他服务商提供的变种版本,各自的许可证是什么,又都提供哪些服务和支持,让许多 Java 开发者理不清头绪,容易混淆。Oracle 7 月份启用新的 Java SE 订阅模式的消息一出,更是让许多开发者认为是不是代表 Java 以后要收费?
为解答 Java 社区的疑惑,超过30位 Java 社区领袖和专家共同创建了一个 Google 文档,里面详细描述了各版本之间的区别,并对一些常见问题进行了答疑。文档分为“短版本”和“长版本”,建议所有 Java 开发者研读。
文档中强调,开发者仍然可以免费获得 Oracle JDK、Oracle 的 OpenJDK ,以及其他服务商提供的 OpenJDK:
OpenJDK 社区创建并维护 (GPLv2+CE 许可) Java SE 规范的开源参考实现(RI),受 JCP(Java Community Process)管理,并根据 JSR(Java Specification Request)发布未来每个版本。
有不同服务商提供不同的 Java SE 实现(如 Azul、Eclipse、IBM、Red Hat、Oracle、SAP 和其他公司),其中最通用的是 Oracle JDK 。
虽然 Java 11 LTS 已发布,但更多的开发者还停留在上一个 LTS 版本 —— Java 8 。关于开发者最为关注的 Java 8 的许可问题,文档给出了解答:
Oracle 将在2020年12月前为个人桌面用户继续提供 Oracle JDK 8 的公共更新。若是商业用途,则在2019年1月之后不会再有免费的商业版本更新。但是,自 Java SE 9 以后,Oracle 还提供了 OpenJDK 版本,可免费用于商业用途,并且还有其他服务商提供的免费 OpenJDK 版本可供选择,如 AdoptOpenJDK、Azul、IBM、Red Hat、Linux distros 等。
也就是说,如果届时你想继续免费使用 Java 8,你可以:
不再更新,继续无限期地使用 Oracle JDK 8 ;
使用来自其他服务商的免费 Java SE 8 / OpenJDK 8 二进制分发版。
上面也有提到,由于 Oracle 在7月份改变了 Java SE 的商业支持模式,所以从 Java 11 开始,支持方式有所不同:
Oracle OpenJDK - 使用 GPLv2 + CE 许可,可用于商业用途;
Oracle JDK - 使用付费商业许可(个人和非商业使用免费)。
最后附上各版本支持路线图: