独家!阿里开源自用OpenJDK版本,Java社区迎来中国力量

InfoQ记者独家获悉:阿里巴巴宣布重磅开源OpenJDK长期支持版本Alibaba Dragonwell。众所周知,Oracle对Java 的策略已经发生系列转变,由于Java 用户群体庞大,导致此事在很长一段时间内都是开发者的讨论焦点。作为世界上最大的Java用户之一,阿里巴巴此时选择开源OpenJDK长期支持版本Alibaba Dragonwell是出于哪些考量呢?

Oracle撒手,宣布对个人用户 (Personal Users) , Java 8 官方支持时间持续到 2020 年 12 月;对商业用户(Commercial Users),2019 年 1 月之后不再提供免费更新。

红帽喊话,计划在2023年之前继续提供对 OpenJDK 8 的支持。

AWS加入,正式推出 OpenJDK 长期支持版本 Amazon Corretto。

如今,阿里巴巴也宣布重磅开源OpenJDK长期支持版本Alibaba Dragonwell。

这不禁让人感叹:Java生态圈碎片化趋势越来越明显。对开发者而言,既不希望冒风险即刻更换,又希望可以使用具有持续安全更新和完备功能的JDK。此时,阿里巴巴宣布开源OpenJDK长期支持版本,出于哪些考虑?这是否可以打动坚守的Java 8群体并解决其燃眉之急?未来,阿里巴巴打算如何处理这一项目与OpenJDK的关系?这家Java代码量上亿(billion lines of Java code )的公司如何看待Java的未来?

针对上述问题,InfoQ记者独家专访阿里云智能基础产品事业部资深技术专家李三红、阿里云智能基础产品事业部研究员Kingsum Chow (周经森),听他们如何看待Alibaba Dragonwell与Java归途。

Alibaba Dragonwell

Java生态圈内的不少开发者想必对AWS开源的OpenJDK长期支持版本Corretto项目名字的来历有所耳闻,Corretto由Caffe Corttto演变而来,这是一种意大利饮料,指含有少量白酒的浓缩咖啡。无独有偶,Alibaba Dragonwell的命名也与饮料颇有渊源。周经森在采访中透露:

“Dragonwell”中文译为龙井,象征着中国的茶文化,又恰好是杭州特色(阿里巴巴总部所在地);“well”一词通常被描述为水源汇聚在一起供大家享用,我们希望可以集合所有开发者的力量不断完善该项目并最终贡献给所有用户。

为何此时开源?

在很大程度上,Java由Oracle长期主导。自2017年底,Oracle就开始陆续转变Java策略,逐渐将Oracle JDK中的商业功能开源给社区,并宣布不再提供免费商业版本更新,不提供安全更新和漏洞修复支持。

这对开发者而言意味着什么?如果你是Oracle JDK 8的用户,原License尚可免费使用,但之后若希望得到持续安全更新则需要为此付费。如今,在Oracle主导下的Java大环境已经发生变化。作为最大的Java的用户之一,阿里巴巴几乎拥有世界最大规模的Java应用集群,肯定需要为此采取一些行动。

在采访中,李三红表示,Oracle的系列转变传递出一个重要讯息:

如果希望继续免费使用Java并获得持续更新,那之后可能就需要转换到社区版本。

基于此,阿里巴巴决定开源OpenJDK长期支持版本Alibaba Dragonwell,一是因为其自身拥有大量Java客户和业务需求,阿里巴巴希望他们可以继续免费享受到JDK的所有功能;二是考虑到不少开发者可能会做出新的选择,阿里巴巴决定开源该项目,为开发者提供一个新的参考。

重要特性

Alibaba Dragonwell是一款免费的 OpenJDK 发行版,其提供长期支持,包括性能增强和安全修复,这部分其实对应于Oracle收费部分的功能。李三红透露,Alibaba Dragonwell目前支持x86-64/Linux平台,主要针对的场景是数据中心大规模Java应用部署情况下,Java应用稳定性、效率以及性能的优化与提高。

此次发布的Alibaba Dragonwell 8预览版本对应OpenJDK 8版本,与Java SE标准兼容。值得重点关注的三大特性如下:

  • 移植上游 Java 11 的 Java Flight Recorder (JFR) 功能。众所周知,JFR功能是Oracle JDK的商业收费功能,需要付费才可使用,虽然后期通过OpenJDK 11开源,但Java 8的用户群体仍然十分庞大,因此阿里巴巴决定将该功能移植到Alibaba Dragonwell 8中供开发者使用。Java 开发人员可以通过 JFR 收集 JVM 运行过程中的详细profiling信息,配合 Java Mission Control (JMC), 提高 Java 应用的问题诊断及性能优化效率;

  • 集成 JWarmup 技术。Warmup问题一直是Java应用的最大难点之一,虽然阿里内部很早就有应对之法,但外部用户很难触达这一方案。如今,JWarmup 已作为 Java Enhancement Proposal(JEP) 在 OpenJDK 立项,未来有望加入 Java 标准发行版。JWarmup 允许用户在数据中心结合应用流量调度时机,动态提前预编译Java 代码,从而有效减少由于传统Just-in-Time预热 (Warmup) 导致的 CPULoad 过高,Response Time 超时等问题;

  • 提供GC问题诊断等Serviceability方面的提高。

想必有心的开发者已经发现,目前Alibaba Dragonwell仅支持Linux平台,这也是大部分数据中心所使用的操作系统。为防止开发者出现误解,此处需要特别说明:这并不影响Java的跨平台特性。因为,跨平台指的是Java应用本身,JDK(包括JVM)只是一个软件,不同平台有不同的版本,只要在对应平台安装好对应的JDK。开发者可以在任意系统上开发Java应用,再部署到相应平台运行字节码文件即可。(开源后,阿里巴巴会提供详细的中英文使用文档说明)

后续规划

未来,阿里巴巴希望每个季度进行一次版本迭代,下一阶段也就是3个月后预计会发布GA版本。除此之外,阿里JDK技术团队会对该项目进行持续维护和更新,并将紧密与OpenJDK社区合作,促进Java技术的发展。

此外,考虑到用户实际需求以及Java 8群体的庞大性,阿里巴巴后续也会考虑继续将OpenJDK 后续版本中的优秀功能移植到Alibaba Dragonwell中,类似于上文提到的Java Flight Recorder功能,供开发者在生产环境中提前使用。

阿里巴巴与Java

2018年,阿里巴巴获邀加入JCP最高执行委员会,任期两年,这也是第一家加入JCP的中国企业。JCP是一个开放的国际组织,是Java最高执行委员会,由Java开发者以及被授权者组成,主要职能是发展和更新Java技术规范,这意味着阿里巴巴在Java标准规范制定中具有一定话语权,并可以参与Java生态重大事件的决策。

据调查,阿里巴巴是全球最大的Java用户之一,其内部拥有数量非常庞大的Java开发人员和服务器,这也是其业务发展使然。提到阿里巴巴,最容易想到的标签就是“双十一”。2018年,天猫双十一的总交易额最终定格在2135亿,不到2小时就破了千亿大关,支撑系统高效运行背后的最大功臣莫过于Java。

随着体量增长和业务需求复杂性的提升,阿里巴巴在2004年决定从PHP语言全面转向Java,并急需更高效的方式来解决生产环境中的问题, 这逼着阿里巴巴不得不基于开源技术自我构建解决方案,指导Java开发人员快速定位并解决问题。
 
互联网企业的节奏非常快,一周内甚至需要迭代很多版本,这其中就会出现很多问题,如果全部依靠官方更新来解决,整个战线瞬间被拉长,业务根本等不起。这也是很多互联网企业选择基于开源版本的一个非常重要原因:自主可控,快速构建匹配业务发展的解决方案。
 
最早于2010年,阿里开始基于OpenJDK 6进行JVM定制优化,这是国内第一个优化、定制且开源的服务器版Java虚拟机。之后,阿里内部多个团队陆续都开始参与了JDK研发(没错,最开始确实是多个团队都在做),随后,阿里巴巴考虑到JDK作为一项重要的基础设施,几乎覆盖了物流、金融、电商、新零售和菜鸟等所有业务场景,长期分开研发肯定是不行的,便将所有JDK团队合并为一个。
 
2015年,统一后的阿里JVM团队开始着手基于OpenJDK 8进行优化和定制工作,并推出了如今众所周知的定制版AJDK (Alibaba/AlipayJDK) ,这几乎承载了淘宝、天猫,蚂蚁,菜鸟的所有核心应用,并经受住了多次双十一考验。
 
那么,如今开源的Alibaba Dragonwell与阿里内部使用的AJDK是一个东西吗?
 
通过阿里的业务运行情况来看,AJDK的功能和性能确实不错,但本次开源的Alibaba Dragonwell与AJDK还是有差异的。李三红表示,Alibaba Dragonwell是AJDK的开源版本,AJDK技术的继承者。目前开源的版本并未包含AJDK的所有功能,比如多租户,Wisp协程,ZenGC等,主要是因为开源一个技术会涉及到比较长时间的准备。
 
就目前公开的Alibaba Dragonwell 8预览版本,阿里内部其实也进行过很多次讨论,反复准备、测试、沟通,确定后又耗费了半年时间才最终将该预览版本开源,之后,阿里会考虑将AJDK的功能逐渐过渡到Alibaba Dragonwell。显然,这一工作需要时间。

各家JDK火热,OpenJDK咋办?

不同于Oracle JDK,OpenJDK 是基于 GPL v2/a Classpath Exception的开源项目,从Java 7开始就是Java SE的官方参考实现。曾有OpenJDK Committer在接受采访时表示,OpenJDK 有一个约定成俗的做法,经过多年免费支持后,Oracle JDK版本的生命周期就进入结束期,之后由社区接手并主导后续更新。在此之前,Oracle已经为JDK 8免费提供了五年支持,也是时候进入社区维护阶段了。
 
如今,国际不少主流厂商都在使用OpenJDK,比如Google、Twitter、Amazon和阿里巴巴,并研发了基于此构建的JDK版本,这让不少生态圈内的开发者出现担忧:在不少用户开始考虑选择OpenJDK的时候,这些大厂是否还有心思参与整个社区的维护?

从阿里巴巴层面来看,李三红在采访中反复强调一个观点:

Alibaba Dragonwell一定是OpenJDK的下游,每个Alibaba Dragonwell发行版都会同步上游最新更新,并经过阿里巴巴内部大规模的应用集群测试。同时,阿里巴巴也会积极将AJDK上的技术积累贡献到OpenJDK,积极参与社区的项目更新和维护。

AWS方面与这一观点也颇为类似,AWS首席开源技术专家Arun Gupta曾在 AWS 开源博客上发布公告称:

我们期待与 OpenJDK 社区密切合作,共同开发 OpenJDK 8 和 11 的未来增强功能。

就笔者看来,这一状态下,各大厂商推出的JDK势必会与OpenJDK存在些许差异,这很容易理解:客户生产环境所遇到的实际问题未必适合OpenJDK的改进;面对同一问题,OpenJDK的解决方案未必与各大厂商的想法一致,这就需要多方进行友好协商,并逐渐形成良性机制,现在只是迈出了推动OpenJDK的第一步。

Java归途

选择多了,生态似乎更“碎”了,坚守Java 8的开发者未来有意愿向OpenJDK迁移吗?

坚守的Java 8群体

既然Java 8和Oracle JDK 8存在这样那样的问题,为什么开发者不大规模迁移至更新的版本呢?为什么Alibaba Dragonwell依旧从基于OpenJDK 8开始呢?这个问题的答案很简单:

Java 8 是目前最被广泛使用的版本,并且其群体非常坚守!

在Java圈内,你会发现一个很有趣的现象:无论新版本给出的更新多么诱惑,大部分Java开发者似乎并不感兴趣,依旧坚持自己的选择。确实,Java 8是一个非常成功的版本,以至于很多开发者并不认为需要更新其他版本,这可能与长期养成的习惯和固有信任有关系。
 
对此,李三红认为,Java这么多年发展过来,大多数开发者已经习惯信任官方Oracle JDK,对社区OpenJDK版本关注不够,所以从Oracle JDK到OpenJDK的切换需要一个过程。但随着这些国际科技大厂的努力,OpenJDK的生态一定会越来越完善,功能也会更加齐备,面对持续的安全更新和众多大厂的深度参与,这个项目应该会成为Java生态中的重要公共资源。

越来越“碎”的生态

很早之前,Java生态就开始出现碎片化趋势,这在Oracle收费之后似乎得到了加剧。此前,为了减少对碎片化问题的潜在担忧,AdoptOpenJDK曾强烈鼓励所有OpenJDK提供商将补丁提交给OpenJDK。
 
对此,周经森认为,就开发者而言,目前的选择越来越多,这不见得一定是件坏事。并且,不同版本之间的兼容性其实非常高,迁移成本几乎为零,这不会给用户使用造成额外负担。不同的版本在性能优化、平台支持等方面确实存在些许差异,开发者可以根据需要进行选择,但阿里巴巴正在努力将这些技术推向上游,也就是整个OpenJDK生态,这一问题应该会在未来得到缓解。

3月21日,阿里巴巴将宣布开源Alibaba Dragonwell。届时,开发者可通过阿里云开发者中心及Github社区下载使用。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值