最近亚马逊 发布 了 Corretto 8 GA 版本,这是一个“免费、跨平台、生产就绪”的 OpenJDK 版本。
去年 11 月,在比利时举行的 Devoxx 大会 上,来自亚马逊的 Arun Gupta 和 Yishai Galatzer 介绍了 Corretto 8 预览版。Arun Gupta 和 Yishai Galatzer 分别是 AWS 部门的首席开源技术专家和高级研发经理。令人惊喜的是,杰出工程师、Java 之父 James Gosling 也现身 Devoxx 大会,并 发表了一个主题演讲 ,专门介绍了 Corretto。James Gosling 目前同样就职于 AWS 部门。下图是在 Devoxx 大会上展示的 Coroundto 8 和 Corretto 11 GA 版本时间表。
亚马逊加入了 Oracle 、 Azul 、 Red Hat 和 BellSoft 等供应商的行列。这些供应商和 AdoptOpenJDK 团队领导的社区力量一起,提供一系列免费且具有商业支持的 OpenJDK 下游发行版本。AdoptOpenJDK 团队还推出了一个开放式构建场(build farm),用于创建免费的预构建 OpenJDK 二进制文件。
由于 Java 社区越来越担忧 Oracle 会不再免费提供对 JDK 的长期支持 ,亚马逊开发了 Corretto,将保持 Java 免费的承诺往前推进了一步。
Martijn Verburg 是 jClarity 联合创始人兼首席执行官、AdregOpenJDK 联合创始人和 伦敦 Java 社区负责人 。之前 InfoQ 在 报道 Corretto 预览版时 曾采访过他。在谈及对亚马逊加入 OpenJDK 供应商行列的看法时,他说:
亚马逊发布 Corretto 是对 OpenJDK 作为可运行生产环境运行时的额外认可!我认为,很多保守组织在看到这个时会说“如果亚马逊、IBM、Red Hat 等公司也在使用 OpenJDK,那么我们也就没有什么顾虑了!”
自去年 11 月 Corretto 亮相以来,人们对它的兴趣与日俱增。根据 Java 社区的初步反馈,亚马逊已经在 GA 版本中完成了许多改进,并加入了一些安全补丁,就像 变更日志 和 补丁 文档中所提到的那样。
亚马逊对 Corretto 的长期支持(LTS)包括“安全修复、性能增强(例如,提升常用功能的性能)、垃圾回收调度、防止内存溢出、以及改进的监控、报表和线程管理“。这些更新每季度发布一次或者会按需发布。
最近举行了一次 Java Champions 远程会议,讨论了即将发布的 Corretto 8 和 Corretto 11 的 RC 与 GA 版本。InfoQ 从这次会议了解到,Coretto 将会带来:最新的安全补丁、Corretto 识别工具、支持通过 SDKMAN! 安装和官方 Docker 镜像 。会议的问答环节重点提到了 Coretto 是否支持 OpenJDK 功能版本的问题。针对这个问题的回答是:
我们不打算支持 JDK 9 或 JDK 10。目前,我们也不打算支持 JDK 12、JDK 13 和 JDK 14,因为 Corretto 存在的主要目的是提供长期支持,其次才是增加特性和改进。
虽然我们只在亚马逊内部构建和发布“功能版本”,但它们与可公开发布的标准差距并不大。 我们所能做到的是确保版本的质量。 因此,目前我们专注于 Corretto 8 和 Corretto 11。我们将听取反馈,如果有足够多的用户对功能版本感兴趣,我们也会为他们提供支持。到目前为止,几乎没有用户想在生产环境中部署功能版本。少数用户想获得功能版本,仅仅是为了测试它,并为下一个版本做好准备,并非要在生产环境使用它。所以答案是“也许”。
Corretto 8 与 OpenJDK build 8u202 保持一致。Corretto 11 仍处于预览版本阶段,计划于今年上半年发布 GA 版本。
Gupta 向 InfoQ 介绍了 Corretto GA 版本的一些最新情况。
Arun Gupta:我是亚马逊首席开源技术专家。我与亚马逊的不同团队合作,帮助他们确定开源策略。我拥有二十多年的 Java 经验,是一名 Java Champion,正积极与 Corretto 团队合作,帮助他们明确自己的社区职责工作。
Gupta:在亚马逊,我们总是从客户需求出发。亚马逊在大量使用 Java。2016 年,我们意识到我们不能再依赖二进制版本。有数千个 Java 应用程序在我们的生产环境中运行。JDK 季度安全更新经常会引入微妙的破坏性变更,并可能带来重大影响。与此同时,为了解决安全问题,更新一发布我们就迫切需要将其应用到生产环境中。但是,我们无法修复二进制版本 JVM 或库中的问题。因此,我们决定从源代码构建 Java,在满足我们的需求的同时摆脱这些限制。
一开始是几个团队试着使用 Corretto ,随后我们构建了一个工具进行推广。借助这个工具,团队只要单击一下就能切换到 Corretto。在积累了足够的信心后,我们开始进行大规模的自动化迁移。我们在几个月的时间内迁移了数千个服务,这个过程是全自动化的。但是,为了控制未知问题的影响范围,我们仍然采用增量方式进行迁移。 整个过程进展得很顺利,在数千个迁移的服务中,只有一个实例需要修复。
这就是 Corretto 在我们内部的使用情况。 我们构建它的最初目的是自用。但随后 Oracle 宣布将停止 Oracle JDK 8 的公共更新,并从 Java SE 9 开始执行每半年一个版本的发布计划。就是在那个时候,亚马逊开发者和 Java 社区对 Corretto 的需求开始成为一个焦点。
客户纷纷联系我们,表达对 Java 应用程序支持问题的担忧。这些客户还担心不同二进制版本的测试问题。每个版本都有各自的限制。客户要求我们提供一个版本,既能支持他们的工作负载,又没有任何限制。
很多客户明确要求我们提供一个解决方案。我们的客户和社区当然不仅仅在 AWS 上运行服务,他们还需要在笔记本电脑、本地环境、各种操作系统上运行 Java,但每一种解决方案都需要付出代价。我们从那时起就开始考虑将 Corretto 引入到整个 Java 社区。
亚马逊将 OpenJDK 打包进 AmazonLinux 已经有很长一段时间了。我们看到了客户的需求,而且挥之不去。很明显,我们没有理由再将其限制在 Amazon Linux 或 AWS 上,或对其施加任何其它限制。今天,Corretto 可用于所有主流操作系统,并且免费提供长期生产环境支持。你可以在你选择的云上、本地环境或台式机上运行它,也可以把它打包在你的软件中。
Gupta:Corretto 是一个有趣的名字,它在意大利语中的意思是“正确”。Corretto 也可以指一种含有少量白酒的浓缩咖啡。
Gupta:客户告诉我们,现有的每个版本都有某种限制 ——要么你需要付费,要么仅支持某些平台,或者可以用于开发环境,但不能用于生产环境。 这阻碍了客户的进展,因为他们中的许多人都需要支持多平台。 客户希望节省开发时间、测试时间以及不同平台上的认证工作。 因此,我们决定把内部的成果贡献出来,用于解决这些问题。 然后我们把它回馈给 OpenJDK,并且没有任何附加条件。
此外,我们希望使它保持简单,因此 Corretto 可以直接替代其它 OpenJDK 版本。除非你使用了开源版本所不具备的商业特性,否则不会有什么问题。当然,如果一个现有的 OpenJDK 版本适合你,我们可能会建议你继续使用它。
Gupta:是的,我们一直在和 AdoptOpenJDK 合作来托管 Corretto 二进制文件,并为他们提供计算资源。Amazon 和 AdoptOpenJDK 还相互协作,交流 OpenJDK 版本构建和测试的逻辑细节。*
Gupta:我们计划继续改进、支持 Corretto,并支持上游项目。路线图中大约有 90~95%的内容是由客户驱动的。与 OpenJDK 8 相对应的 Corretto 8 已于今年初正式发布。在撰写本文时,与 OpenJDK 11 相对应的 Corretto 11 尚处于候选版本阶段。我们正在努力推进 Corretto 11 GA 版本的发布。
许多客户都在使用 JDK 8,并且近期不打算升级到 JDK 11。在接下来的很多年中,他们甚至会继续使用 JDK 8。我们希望继续改进 Corretto,在提升其性能的同时确保依赖它的现有系统可以运行正常。我们对 Corretto 8 的免费长期支持至少会延续到 2023 年 7 月,对 Corretto 11 的支持至少会延续到 2024 年 8 月。
一个成功且维护良好的上游项目对 Corretto 来说至关重要。Corretto 团队正在 Red Hat 的带领下投入对 OpenJDK8u 项目的维护。该项目是其它 OpenJDK 社区版本的上游项目。这是我们季度发布的基础。Corretto 团队正在招募负责人和个人贡献者,来提升我们改进和支持这些项目的能力。
我们还与 Oracle、Red Hat 以及其他参与安全补丁、错误修复的伙伴合作,将这些补丁和修复反向移植到 OpenJDK 更新项目。我们需要与 Oracle 同步发布它们,来确保所有 OpenJDK 发布版本安全补丁的一致性。
Corretto 由两部分组成。 其中一部分是 OpenJDK,即位于 openjdk.java.net 的源代码,另一部分是补丁、构建指令和系统以及测试和文档。如果你对 Corretto 有任何反馈,请在 github.com/corretto 提交问题或创建 PR。如果它是 OpenJDK 代码本身的修改——无论是上游还是补丁——我们希望每一个贡献都可以进入上游项目,所以请从那里开始。 如果它与构建系统、文档或 Corretto 特定测试相关,请将它们提交到 GitHub 存储库。
查看英文原文: https://www.infoq.com/news/2019/03/amazon-releases-corretto-8