您的位置 首页 java

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

点击右上方,关注开源中国OSC头条号,获取最新技术资讯

作为继 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 就是完全开源免费的,可以用于商业用途。

杨晓峰解释:

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 免费更新结束的日子,有一些公司的响应也被公布出来,比如这个:

杨晓峰表示:“这个公告比较专业也比较谨慎,我认为 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。

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

这其实是一件好事,而且也没有什么好困惑的。对于企业来说,技术栈的未来可预测性和可靠性是非常重要的,它可以保证研发投入的安全性和能力。对于 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 亿+。

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

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

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

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

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

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

开源社区OSC头条号,每日推送最新优质的技术类文章,涵盖外文翻译,软件更新,技术博客等优质内容。关注开源社区OSC头条号,每日获取最新技术资讯,点击“ 了解更多 ”阅读原文章。

↓↓↓

文章来源:智云一二三科技

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

文章地址:https://www.zhihuclub.com/181275.shtml

关于作者: 智云科技

热门文章

评论已关闭

6条评论

  1. Naturland increased concentration of digoxin, barbiturates and lithium salts in the blood plasma

  2. Evidence review and ENT UK consensus report for the use of aminoglycoside containing ear drops in the presence of an open middle ear

  3. Okay, so the damage has already been done we ve all been there and now you re left with an angry popped pimple

  4. To relieve symptoms, your healthcare provider may suggest over the counter medications, including antihistimines for nasal congestion and fever reducers like Tylenol acetaminophen and Advil ibuprofen

  5. 4 OHT FUL treatment led to elevation of LC3 II, which reached plateau during time from 12 to 48 h Evaluation of leukocyte arylsulphatase a, serum interleukin 6 and urinary heparan sulphate following tamoxifen therapy in breast cancer

网站地图