杨晓峰:开发者其实不太需要关注 Java 收不收费

作者 : 开心源码 本文共5091个字,预计阅读时间需要13分钟 发布时间: 2022-05-12 共221人阅读

作为继 Java 8 之后的第一个 LTS 版本,Java 11 的发布引起了广泛关注,一方面是由于这个版本带来了少量重要的新特性,比方热议的 ZGC、HTTP/2 Client、Flight Recorder 等,在内存管理与 JVM 诊断/Profiling 等方面都有很强的能力突破。

另一方面是由于 Oracle 针对 Java 的一系列动作,比方宣布变更版本迭代周期、修改了商业支持方式,推出订阅模式、在两种不同的 License 下提供 JDK ****发布版……这持续性的变化让大家不断困惑,开发者不知道还能不能愉快地免费使用 Java,也不清楚接下来将会面对少量什么。

尽管 Oracle 官方有解释,并且也有 30 几位 Java 社区领袖与专家联名发表了一篇文章,详细分析了 Java 其实还是免费的等相关问题,但是由于普遍存在语言与网络障碍,并且也有了解上的偏差,再加上少量自媒体的过度制造焦虑,使得本身就复杂的问题变得更加难以了解。

在前阵子开源中国举办的技术会议“源创会年终盛典”上,资深 Java 专家杨晓峰为与会者带来了针对 Java 11 的最新解读,带领大家重新认识了现代 Java。

杨晓峰是 OpenJDK Committer,目前在京东担任大数据中心架构师,曾领导 Oracle 北京 Java 核心类库等团队,参加甚至负责过 Java 8~11 核心类库等部分新特性的相关任务。

我们借此机会邀请他为大家把 Java 这令人困扰的事理清楚了。

杨晓峰一开始就直接来了一句:Java 还是免费的。话是这么说,但实际上这并不足以打消疑虑,也存在少量更加具体的问题需要解释,具体是怎样回事呢?

相关概念

首先要理清少量概念,一方面是 Oracle JDK 面向的客户类型:

  • Oracle用户,主要是指那些购买了 Oracle Java SE 相关服务支持的客户,比方,通过前边讲到的订阅模式购买服务的用户。
  • 商业****客户,免费使用 Java 用于商业目的的实体。
  • 个人客户,在个人电脑上,免费使用 Java SE,以及不用于商业目的开发人员。

当前大部分使用 Oracle Java 的开发者/所在公司是属于哪一种类型的客户呢?是第二种——****商业****客户。

再来看看关于“Oracle 的 Java”。一方面,Oracle 主导着 OpenJDK 社区,它本身自己做了一个叫 Oracle JDK 的产品,这是它的商业产品,也是目前最为广泛使用的 JDK;另一边,Java SE 9 以来,Oracle 也提供 Oracle 的 OpenJDK 发行版 Oracle’s OpenJDK,而这个 Oracle’s OpenJDK 就是完全开源免费的,可以用于商业用途。

杨晓峰解释:

OpenJDK 是基于 GPL v2 的开源项目,从 Java 7 开始,就是 Java SE 的官方参考实现。狭义上的 OpenJDK 往往是指基于 OpenJDK 构建的发行版,各个主流厂商的 JDK 产品基本上都是基于 OpenJDK 源码,或者多或者少添加自己的定制内容。

Oracle JDK 是 Oracle 提供的商业 JDK 实现,是目前应用最广泛的 JDK,在 JDK 11 之前,Oracle JDK 与 Oracle’s OpenJDK 除了少量强大的商业特性,还有 CA 根证书等便利性内容和细微差别。

从 JDK 11 开始,Oracle JDK 使用原来的商业 BCL License,而 Oracle’s OpenJDK 开始独立改用GPL v2+CPE License,二者提供同样的功能,本质上没有不同,但是不同的 License ****针对不同客户****。

Java 8 升级不再免费

像前边所说,关于 Java 的使用困惑是一波接一波的,首先是 Oracle 声明从 2019 年 1 月以后,将不再为商业客户提供免费的 Java SE 8 升级服务。商业客户可以使用 Oracle Java SE 订阅模式继续享受升级支持;而个人客户不受影响,还可以继续享受免费升级到 2020 年 12 月。

杨晓峰解释:

这原本其实就是一个正常的软件生命周期结束(EOL),不必过度解读,Oracle 已经免费支持了 5 年 JDK 8 了****。

OpenJDK 有一个商定成俗的做法,就是经过多年免费支持以后,Oracle JDK 版本会进入 End of Life,也就是生命周期结束 EOL,而后由社区接手并主导后续升级事务。

之所以目前只有这个 Java 8 的 EOL 导致恐慌,主要是由于这个 Java 8 太成功了,相当多客户还没有准备好,也没有足够动力去更新 JDK,这就像目前还使用 Windows XP 的客户,无法获取官方升级,但是还是很多客户停留在上面。

另外一个不容忽视的起因是,Oracle 明显缩短了其提供后续 JDK 版本的免费支持周期(目前建议为半年),社区会承担长期支持版本(LTS,Long-Term-Support)的后续升级工作。

所以实际上,开发者其实不太需要去关注 Java 8 收不收费这么一个问题,真正需要关注的人是企业 IT 决策者。一方面,个人开发者使用 Java 8 还是一样免费,还是一样可以取得升级支持;另一方面,所谓的收费,其实指的是在 2019 年 1 月之后的升级要收费支持,Java 8 本身就还是免费的,而要不要使用订阅模式去继续取得升级这是 IT 决策者要考虑的。

那么企业 IT 决策者可以怎样考虑呢?

杨晓峰详情:

  • 付费的选项,除了 Oracle,还有其它厂商也提供了商业的 JDK 发行版,包括 Azul、IBM等,具体选择要看企业自己的判断。
  • 不希望付费的客户,Java SE 9 以来,Oracle 也提供 Oracle 的 OpenJDK 发行版 ,基于 GPL v2 协议,总体免费升级周期比较短,AdoptOpenJDK 会提供更长期的免费支持。当然,也有个别厂商公告会提供长期的 JDK 8 升级,可以参考 Amazon Corretto。

同时我们也注意到,由于目前已经是 2019 年 1 月份,也就是到了 Java 8 免费升级结束的日子,有少量公司的响应也被公布出来,比方这个:

image

杨晓峰表示:“这个声明比较专业也比较谨慎,我认为 8u201/202 是最后的一个免费 Oracle JDK 8 升级。涉及到 License 相关的决策,严格来说这不仅是个技术决定,更是个法务相关的决定。”

所以,总结下来,真正需要关注 Java 免费问题的是企业 IT 决策者,而且他们目前有上边讲的几种方案可选:

  • 使用订阅服务,花钱取得 Java 8 升级
  • 花钱使用其它厂商提供的商业 JDK
  • 选一个 OpenJDK 发行版迁移过去,由开源社区提供升级支持
  • 保持在 8u201/202 或者者之前版本

杨晓峰还强调:“受权(License)和付费是商业行为,是企业的 IT 决策,本就应该是由专业人士来做的,耐心、客观少量,不要被自媒体收智商税。”

发布周期变化

其实 Oracle 早在 2017 年 9 月份就宣布改变 JDK 版本发布周期,这之后也陆续发布了 Java 10 与 11,12 也快要到来。

杨晓峰详情,新的版本发布周期中,改变了以特性驱动的方式,变成以时间驱动版本变化。每 6 个月就会发布一个新的 Java 版本,也就是“大版本”,同时每 3 年会出现一个 LTS 版本,Java 11 作为这个新模式的第一个 LTS。

image

引用相关材料可以大概看到,新的版本周期与旧有模式的变化:

image

这其实是一件好事,而且也没有什么好困惑的。对于企业来说,技术栈的未来可预测性和可靠性是非常重要的,它可以保证研发投入的安全性和能力。对于 Java 来说,这一点其实也已经在过去 20 多年其生态圈的长期持续投入中取得了印证。

“Java 新的发布模式中,因为 LTS 的存在,对于企业 IT 决策提供了清晰的指引”,杨晓峰表示:“与此同时,新的模式加快了新技术迭代和落地,以便更加敏捷地适应云计算等新浪潮,这事实上提高了企业的参加度和生态活力。”

为什么不直接用 Java 11?

既然 Java 11 新特性强悍,并且也是集万千关注,那为什么那么多人都不愿意从 Java 8 更新到 Java 11 呢?直接不用 Java 8 的话,也就没有上边那些升级问题了

其实关于 Java 还有一件事情挺神奇的,在关于目前正在使用哪个版本的 Java 的各种大大小小的调查中,很多人都表示公司正在使用很落后的版本,管你 Java 11 最新特性多厉害,反正就是要坚守 Java 1.4、5.1……这是一种比较普遍的现象,实际上调查数据显示目前 Java 8 是最被广泛使用的版本

对此杨晓峰认为软件更新本就不是一蹴而就的事,尤其是基础软件,就像服务器操作系统的更新,也是一个缓慢的过程,他解释:“尽管 Java 在兼容性上总体做得很好,但更新总是需要人力等成本的,未必是企业的当务之急。相信未来这种情况肯定会持续下去。”

但是与之形成比照的是,除了这些“滞后”的现象,当然也有在相关方面积极投入的公司企业,比方谷歌、亚马逊与阿里等,与其被动接受变化,不如自己主动往前一步,去引导变化。杨晓峰以其所在的京东大数据平台部为例详情:

京东大数据平台有业界少有的超大规模 Hadoop、Spark、Kafka 等集群,承载着海量的数据和计算负载,在 Java/JVM 领域有少量比较深入的工作,例如:

  • 通过 JVM 层调优,不断获取通用性的计算资源效率提升,节省大量资源。例如,通过对 Spark Streaming 运行情况的深入分析,我们进行了 JVM 调优,在内存等计算资源减少 20% 的情况下,吞吐量还提高了 10+%。
  • 对于 Java 相关代码实践的持续改进,提高研发、运维效率和产品质量。
  • 通过对大数据基础引擎等代码层面优化,相对于开源社区产品,我们获得了大百分比甚至是倍数级别的性能等提升 。以 Kafka 为例,大数据中心团队通过 Profiling 技术,进行代码层面的一个深度改进,就使得吞吐量提高 40%,CPU 消耗降低 5%。整个集群 1400 多台,按照通常每台服务器 48 核/256 G 内存来计算,单是这个优化的经济效益就是千万级人民币。

由于并未刻意进行宣传,也许很少有人知道,我们已经签订了 OCA 协议,并积极参加到了 OpenJDK 等社区贡献中,目前已经贡献了若干性能和功能性的加强到 OpenJDK 等开源社区。

Java 在新时代

关于继续使用 Java 接下来将会面对少量什么,除了上边讲到的版本周期变化、商业支持方式改变和开源许可的变化等,其实还有一个方面值得关注,那就是技术上的东西:Java 当前的问题与未来的方向

Java 多年来在各个编程语言排行榜上一直是稳坐第一把交椅,但是最近有少量榜单上 Python 都已经走在 Java 之前,并且在逐步拉开差距。这其中很大一部分起因可以归为 AI 以及相关的数据挖掘、分析等领域的快速崛起。

同时,另一方面,随着云时代不断发展,像 Golang 这样原生具备高并发、语法易学等各方面优势的语言也在不断壮大势力、完善能力。

那这就带来了问题:AI 与云计算等领域当下快速发展,会不会对 Java 造成冲击?Java 在这样的新时代可以与其它编程语言区分开的显著优势有哪些?

对于这些问题,杨晓峰认为目前 Java 庞大的生态系统,包括最庞大的开发者群体、海量的类库/工具等、主流厂商的参加和投入,都是其显著的优势。

比方据不完全统计,目前 Java 开发者超过了 1200W,活跃的 JVM 有 380 亿+,同时连接到云的 JVM 有 210 亿+。

image

很多人认为 Java 慢,但是杨晓峰反驳:“抛开场景说快慢是没有意义的。”

他解释:“目前来说,长时间运行的服务器端场景下,Java 是处于没有争议的霸主地位的;而在微服务等新型架构下,Java/JVM 仍然还是首选;并且,当前云计算时代,Java 也是 No.1 的编程语言,它覆盖了电商、大数据、企业软件、移动,甚至 IoT 等领域;此外,各个大公司也都在相关方面积极投入,包括但不限于谷歌、阿里、亚马逊、IBM、Oracle 与京东。”

除了这些优势,杨晓峰也坦言,目前 Java 还是有面临挑战的,“最大的问题在于 Java 能否能够快速地调整自己的能力,以保证在新场景下的竞争力”,他说:“排行榜/冲击都只是竞争的体现而已,能力才是更加重要的决定成败的关键因素,简单说就是——效率!效率!效率!”

在面对这些挑战的时候,Java 在不断改造自身,以适应新时代的需求,杨晓峰详情 Java 现在快速演进的领域主要有:

  • 更轻量级的 JVM,以适应云端应用需求。微服务与 Serverless 等都是短时间、轻量级的应用;
  • 进一步加强数据密度、数据结构等基本能力的 value types 等;
  • 变得更具开发效率的语法;
  • 更具扩展性和更高开发效率的并发基础设备,如 Java 版协程 Fiber;
  • 此外还有底层、硬件级别开发效率和能力急需的 Panama 等等。

总之,杨晓峰认为,在新时代,尽管还是需要不断跟进,不断去快速调整自己的能力,但是 Java 还是排在第一的编程语言,未来可期。

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 杨晓峰:开发者其实不太需要关注 Java 收不收费

发表回复