原副标题:穆萨开放源码另有 OpenJDK 版,Java 街道社区迎我国精神力量
穆萨开放源码另有 OpenJDK 版,Java 街道社区迎我国精神力量
3 月 21 日,腾讯将正式宣布宣布开放源码 Alibaba Dragonwell。下周,开发人员可通过穆萨云开发人员中心及 Github 街道社区浏览采用。InfoQ 记者独家代理访谈了穆萨云智能化此基础商品销售部现职控制技术研究者李三红、穆萨云智能化此基础商品销售部副研究员 Kingsum Chow (周经森),听他们怎样审视 Alibaba Dragonwell 与 Java 归程。译者 | 赵钰莹
投书来宾 | 穆萨云智能化此基础商品销售部现职控制技术研究者 李三红
穆萨云智能化此基础商品销售部副研究员 Kingsum Chow (周经森)
腾讯将要备受瞩目开放源码 OpenJDK 长年全力支持版 Alibaba Dragonwell。不可否认,Oracle 对 Java 的立场已经发生系列产品变革,由于 Java 用户社会群体巨大,预计该事件在极短一两年内都是开发人员的探讨关注点。作为世界上最大的 Java 采用者之一,腾讯这时选择开放源码 OpenJDK 长年全力支持版 Alibaba Dragonwell 是所致什么样权衡呢?
Oracle 搭理,正式宣布宣布对个人采用者 (Personal Users) , Java 8 非官方全力支持时间稳步到 2020 年 12 月;对商业性采用者(Commercial Users),2019 年 1 月之后无须提供更多完全免费预览。 Hat开炮,计划在 2023 年之前继续提供更多对 OpenJDK 8 的全力支持。 AWS 重新加入,正式宣布面世 OpenJDK 长年全力支持版 Amazon Corretto。如今,腾讯也正式宣布宣布备受瞩目开放源码 OpenJDK 长年全力支持版 Alibaba Dragonwell。
这不由得让人感慨:Java 闭环碎片化态势愈来愈明显。对开发人员来说,既不期望乔尔纳迳自更改,又希望能采用具有稳步SP2和完整机能的 JDK。这时,腾讯正式宣布宣布开放源码 OpenJDK 长年全力支持版,所致什么样考虑?这与否能触动固守的 Java 8 社会群体并化解其解困?今后,腾讯急于怎样处置这一工程项目与 OpenJDK 的关系?另一家 Java 标识符量上亿 (billion lines of Java code ) 的公司怎样审视 Java 的今后?
Alibaba Dragonwell
Java 闭环内的不少开发人员总之对 AWS 开放源码的 OpenJDK 长年全力支持版 Corretto 工程项目英文名字的出处略有听闻,Corretto 由 Caffe Corttto 演变而来,这是一种意大利饮料,指含有少量白酒的浓缩咖啡。无独有偶,Alibaba Dragonwell 的命名也与饮料颇有渊源。周经森在采访中透露:
“Dragonwell”中文译为龙井,象征着我国的茶文化,又恰好是杭州特色(穆萨巴巴总部所在地);“well”一词通常被描述为水源汇聚在一起供大家享用,我们期望能集合所有开发人员的精神力量不断完善该工程项目并最终贡献给所有采用者。为何这时开放源码?
在很大程度上,Java 由 Oracle 长年主导。自 2017 年底,Oracle 就开始陆续变革 Java 策略,逐渐将 Oracle JDK 中的商业性机能开放源码给街道社区,并正式宣布宣布无须提供更多完全免费商业性版预览,不提供更多SP2和漏洞修复全力支持。
这对开发人员来说意味着什么?如果你是 Oracle JDK 8 的采用者,原 License 尚可完全免费采用,但之后若期望得到稳步SP2则需要为此付费。如今,在 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
移植上游 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,对街道社区 Ope和众多大厂的深度参与,这个工程项目应该会成为 Java 生态中的重要公共资源。
愈来愈“碎”的生态
很早之前,Java 生态就开始出现碎片化态势,这在 Oracle 收费之后似乎得到了加剧。此前,为了减少对碎片化问题的潜在担忧,AdoptOpenJDK 曾强烈鼓励所有 OpenJDK 提供更多商将补丁提交给 OpenJDK。
对此,周经森认为,就开发人员来说,目前的选择愈来愈多,这不见得一定是件坏事。并且,不同版本之间的兼容性其实非常高,迁移成本几乎为零,这不会给采用者采用造成额外负担。不同的版在性能优化、平台全力支持等方面确实存在些许差异,开发人员能根据需要进行选择,但腾讯正在努力将这些控制技术推向上游,也就是整个 OpenJDK 生态,这一问题应该会在今后得到缓解。
Alibaba Dragonwell 工程项目地址:https://developer.aliyun.com/opensource/project/alibabadragonwell?spm=a2c4e.11153940.blogcont694319.9.589f2f44QF4qdz
本文译者:amber涂南
原文链接:https://yq.aliyun.com/articles/694319?utm_content=g_1000048857
本文为云栖街道社区原创内容,未经允许不得转载。