阿里开源 OpenJDK 发行版 Dragonwell

近日有消息显示,阿里将于 21 日重磅发布其 OpenJDK 发行版 Alibaba Dragonwell。

我们知道 OpenJDK 是基于 GPL v2/Classpath Exception 的 JDK 开源版本,有许多公司都在 OpenJDK 的基础上提供了自己的发行版,比如 Oracle、AdoptOpenJDK、Azul、IBM 与 Red Hat,一般这些供应商会将自行衍生的 OpenJDK 版本加入一些商业/非商业支持选项。

去年 AWS 也推出了自己的 OpenJDK 发行版 Corretto,背后甚至有 Java 之父 James Gosling “站台”,一时间引起不小反响。

常规理解,AWS 搞 Corretto 也算是一种“造轮子”,但是它提供的长期支持包括安全修复、常用功能增强、GC 调度、防止内存溢出,以及改进的监控、报表和线程管理等,这样的能力再加上 AWS 强大的客户和社区生态依赖,有理由让人相信 Corretto 这轮子是具有较高实际意义的。

阿里此次将发布的 Alibaba Dragonwell 也声称 LTS,并且阿里的客户与开发社区体量自然也无庸赘述,那么同为“造轮子”,Alibaba Dragonwell 这个 OpenJDK 发行版会带来些什么呢?

阿里云智能资深技术专家李三红向开源中国提前透露了 Alibaba Dragonwell 的一些信息。

***印象是 Dragonwell 这个名字,龙井茶?是寓意像龙井一样的品质吗?分享一下背后的想法吧。

Java 本身就是一种咖啡的名字,AWS 开源的 Corretto 也是一种咖啡名。

在取名字的时候,我们也考虑了很多。中国的 Java 开发者将是 Alibaba Dragonwell 重要的用户群体,所以我们想从一些有中国特色的饮品名中寻找灵感,既能代表中国的文化,同时也希望这个名字中能有非常宏大的意愿,能够诠释她包容一切。最终想到了杭州的绿茶——龙井。

另一方面,龙井的英文名字 Dragonwell 也正好符合我们想要表达的意思。其中的“well”这个单词,就有着将很多水源汇聚在一起,一同享用的寓意,正好贴合开源协作分享的精神理念。这也是阿里开源 JDK 的初衷,希望将许多开发者的贡献汇聚在一起,让大家能够一起免费使用 Java,一起推动 Java 的进步。

为什么要去做这个东西?请介绍一下相关背景。

大家都知道 Java 一直是由 Oracle 主导的,从 2017 年开始,Oracle 开始陆陆续续转变了一些 Java 的策略。在 2018 年 CodeOne(原 JavaOne)大会上,来自 Java Platform Group 的***架构师 Mark Reinhold 作了“The Future of Java is Today”的主题演讲,重点阐述了 Java 发布模式的变化。

他指出,从 Java 11(包含)以及以后的版本开始,Oracle 将不再提供免费的长期支持,如果你需要长期支持,可以通过向 Oracle 付费的方式获得。而 Java 8 的免费更新也将会在 2019 年一月份停止(目前已经停止)。

所以除非你是 Oracle 或者其它提供商业 JDK 厂商的付费客户,否则唯一的选择就是社区维护的 OpenJDK 版本,可以预见 Java 开发者从 Oracle JDK 切换到开源 OpenJDK 的现象会越来越多。

阿里可以说是全球***的 Java 用户之一,而 JDK 又是 Java 的一个基础设施。我们其实早从 2010 年开始,就已经基于 OpenJDK 开源软件进行开发与定制。9 年来,支撑了阿里经济体内所有的 Java 业务,历经多年的“双11”考验,积累了大量业务场景下的实践经验。

阿里作为一家这么大体量的 Java 用户,我们有一份责任,就是把我们的 JDK 开放出去,给所有 Java 用户一个新的选择。同时,对于阿里自身来说,Alibaba Dragonwell 会针对 LTS 的两个版本 Java 8 和 Java 11 随阿里云 VM 镜像发布,免费提供给阿里云客户使用。

也就是说 Alibaba Dragonwell 会基于 OpenJDK 8 和 11?那么以后会更注重 Java 新特性的跟进还是保证提供支持呢?对它今后的发展有什么设想或者目标?

此次发布的 Alibaba Dragonwell 8 预览版本对应于上游的 OpenJDK 8 的版本。Alibaba Dragonwell 作为 OpenJDK 下游,是一款免费的 JDK 发行版,它将提供长期支持,包括关键修复和安全更新。

Alibaba Dragonwell 支持 x86-64/Linux 平台,它的特点,或者说所注重的是:在数据中心 Java 应用大规模部署的情况下,稳定性、效率以及性能的优化与提高。

Alibaba Dragonwell 的前身是阿里巴巴内部使用的 AJDK,或者换个角度来看,Alibaba Dragonwell 是 AJDK 优势的继承者。作为 AJDK 的开源版本,Alibaba Dragonwell 将沿袭 AJDK 的技术优势以及实践场景累积下来的技术经验。

AJDK 有众多的技术创新,包括多租户、Wisp 协程技术与 ZenGC 等,我们希望逐步把阿里巴巴内部积累的技术创新开源出来贡献给 OpenJDK 社区,并在 Alibaba Dragonwell 中沉淀下来。

什么时候 GA,目前有没有各个阶段具体的发布时间表?

目前发布的版本是 Alibaba Dragonwell 8 Preview 预览版,Alibaba Dragonwell 将每季度发布一个更新,目前计划是 Preview 的三个月后发布 GA。Alibaba Dragonwell 11 预计年底发布。

Alibaba Dragonwell 8 是一个 LTS 版本,它的生命周期具体是怎样的?最近大家对开源协议相关的问题都怕了(也就是开源协议其实可以根据厂商需要作变更),那目前/将来 Dragonwell 会不会加入一些支持限制条款呢?

不会。Alibaba Dragonwell 是 OpenJDK 下游,我们会严格遵循 OpenJDK 社区相关原则及协议。

前阵子 AWS 也推出了自己的 OpenJDK 发行版 Corretto;再往前,其实 Azul 与 Red Hat 等厂商也有提供 OpenJDK 版本。那么阿里的 Dragonwell 有什么优势、特点呢?

前面也提到了,Alibaba Dragonwell 注重的是在数据中心 Java 应用大规模部署的情况下,稳定性、效率以及性能的优化与提高。

具体来说:

紧密与 OpenJDK 社区保持合作,保持对社区工作的跟踪,及时同步上游更新。

Alibaba Dragonwell 发行版与 Java SE 标准兼容。

AJDK 上孵化的创新技术,会逐步贡献 OpenJDK,并在 Alibaba Dragonwell 沉淀。比如这次发布的版本中包含了 JWarmUp 功能,它优化了 JVM 重启后的预热过程,具体技术细节可以参考用户手册。

基于阿里工程实践,Alibaba Dragonwell 会选择移植高版本 Java 的重要功能,这些移植功能已经在阿里内部被大规模部署,用户都可以免费使用,而不用等下一个 LTS 版本。比如这次版本移植了上游 Java 11 的 Java Flight Recorder(JFR) 功能,Java 开发人员可以通过 JFR 收集 JVM 运行过程中的详细的 profiling 信息,配合 Java Mission Control(JMC),大幅提高 Java 应用的问题诊断及性能优化效率。这对于仍然停留在 Java 8 的用户来说,还是非常有意义的。