50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

Amazon Corretto 技术细节探秘

  • 2018-11-27
  • 本文字数:3418 字

    阅读完需:约 11 分钟

Amazon Corretto技术细节探秘

在比利时安特卫普举行的 Devoxx BE 大会上,亚马逊发布了Corretto预览版,这是 Java 的一个参考实现,一个“免费、跨平台、生产就绪”的 OpenJDK 版本。在开幕主题演讲中,Java 语言创始人 James Gosling 宣布 Corretto 可以作为所有 Java SE 发行版的直接替代品,但使用了 OpenJDK 中没有的功能的场景除外(例如Java Flight Recorder)或当前正在非 HotSpot JVM 上运行的工作负载。亚马逊计划在 2019 年将 Corretto 作为亚马逊 Linux 2 的默认 OpenJDK。


Corretto 8 的预览版本对应于 Java 8,二进制安装文件目前可在 Amazon Linux、macOS 和 Windows 上安装。GA 版本计划于 2019 年第一季度推出,并将增加对 Ubuntu 和 Red Hat Enterprise Linux 的支持。亚马逊将至少在 2023 年 6 月之前为 Corretto 8 提供免费的安全更新。对应于 OpenJDK 11 的 Corretto 11 将于 2019 年上半年推出。亚马逊至少在 2024 年 8 月之前为 Corretto 11 提供每季度更新。



AWS 首席开源技术专家 Arun Gupta 在 AWS 开源博客上发布公告称,Java 是 AWS 客户使用的最流行的语言之一,亚马逊致力于支持 Java 并保持 Java 免费。


我们正在向客户提供免费、长期支持的 Java,并提供季度更新,包括错误修复和安全补丁。AWS 还将在季度计划之外为客户提供紧急修复。


在 Oracle 最近宣布改变 Java 产品支持策略之后——主要是移除 Java 的免费长期支持(LTS)——很多亚马逊客户开始担心他们必须为 LTS 版本的 Java 支付费用才能运行他们的工作负载。之前,亚马逊确认亚马逊 Linux 中的 LTS 版本 Java 将继续获得支持,现在开始跟进 Corretto 的预览版。


在 Devoxx BE 的分组讨论会上,Gupta 与 AWS JDK 团队经理 Yishai Galatzer 进行了交谈。两人谈到,Corretto 8 包括来自较新 OpenJDK 版本的反向移植,以及来自社区和亚马逊新开发的增强功能。发布过程包括对数千种 Amazon 生产服务进行测试,因此修复程序可以在发现问题后的几天内发布。亚马逊还在每个 Corretto 版本上运行Java技术兼容性工具包(TCK),以确保与 Java SE 平台的兼容性。


Corretto 中包含的额外补丁和改进是在当前的 OpenJDK 上游代码库之外,这些改进让亚马逊能够“解决真实的大规模服务问题,满足高性能和可扩展性需求”。这些补丁包括:[C8-1]当长时间运行的本机调用导致 G1 GC 挂起,防止过早抛出 OutOfMemoryException;[C8-2]从 OpenJDK 10 反向移植,修复了JDK-8177809:“File.lastModified()丢失毫秒精度(总是以 000 结尾)”;[C8-17]在使用 gcc7 时,提高 JVM 源代码的可移植性。


亚马逊最近已经开始参与贡献 OpenJDK,Gupta 的博文称“我们期待与 OpenJDK 社区密切合作,共同开发 OpenJDK 8 和 11 的未来增强功能”。他说,“我们在下游为 OpenJDK 提供修复,根据我们自己的经验和需求添加增强功能,然后构建成 Corretto”。不过,这确实增加了上游 OpenJDK 代码库和 Corretto 之间存在微妙差异的可能性。


如果针对这些补丁的努力被延迟或不适合 OpenJDK 项目,我们会将它们提供给我们的客户,只要能够为客户带来价值。如果在 OpenJDK 中使用了不同的方式解决问题,我们将在安全的情况下采用他们的解决方案。


在安装好 Corretto 二进制文件后,用它来运行 Java 应用程序,“现有的命令行选项、调整参数、监控和其他内容将继续像以前一样保持不变”。但前提是需要通过 HotSpot JVM 执行应用程序,并且如果当前正在使用其他的 JVM,例如Eclipse OpenJ9,那么一些命令行选项可能不兼容,需要做出修改。Devoxx 的参会者问在未来是否支持其他 JVM,Galatzer 表示,目前只有 HotSpot 将与 Corretto 捆绑在一起。


Corretto 的源代码可以通过 GitHub 获得,InfoQ 与 Gupta 取得了联系,问他该项目是否接受来自社区中的提取请求和补丁。


是的。有关 Corretto 的拉取请求可以通过https://github.com/corretto提交。任何与 OpenJDK 相关的问题都需要根据 OpenJDK 贡献者协议提交到相应 OpenJDK 代码库中,让整个社区都可以从修复中受益。在向 OpenJDK 提交代码后,我们建议再与 Corretto 团队就提交的问题展开讨论,并确定创建新的 Corretto PR 是否有助于加速修复。


他还指出在 Corretto 和 OpenJDK 上提交 bug 的公开程序:


OpenJDK 相关的 bug 应该提交到 OpenJDK 代码库中,然后在 Corretto 上提供该 bug 的链接。这是为了让整个社区都知道与这个 bug 相关的代码或想法。如果存在只与 Corretto 相关的构建脚本、文档和工件相关的问题,那么应该将问题提交到https://github.com/corretto


HackerNews 和 Twitter 上针对发布公告的讨论,例如,Java Champion 及 Joda-Time 的作者 Stephen Colebourne 比较关注 Corretto 版本的发布周期。Gupta 证实,目前只支持与 OpenJDK 的 LTS 版本相对应的 Corretto 版本:


目前,我们计划遵循 Oracle 的 LTS 发布周期。因此,除了 Corretto 8 和 Corretto 11 之外,下一个 LTS 版本将是 Corretto 17。


OpenJDK 的其他版本也可用,包括Oracle的JavaRed Hat的OpenJDK构建版本,以及来自AdoptOpenJDK组织的社区构建版本。AdoptOpenJDK 致力于促进 OpenJDK 的采用,一股来自民间社区的力量,由一系列商业组织、Java 用户组和 Java 开发者组成。InfoQ 联系到了 Java Champion、LJC 和OpenJDK Build Farm项目的负责人 Martijn Verburg,询问了他对发布公告的看法:


亚马逊宣布 Corretto 是对 OpenJDK 作为生产环境中可行的运行时的额外认可!我认为很多保守组织会看到这一点,他们会说“如果亚马逊、IBM、Red Hat 等正在使用 OpenJDK,那么我也就没有什么疑虑了!”


InfoQ 还问到亚马逊是否与 AdoptOpenJDK 合作,Verburg 回答说:


“亚马逊曾经与 AdoptOpenJDK 合作,使用我们的一些脚本和专业知识解决他们的 Windows 和 Mac 安装程序问题,并改进他们的测试。AdoptOpenJDK 的精神一直是关于 Open Infrastructure As Code(请参阅https://adoptopenjdk.net/about.html的第3个要点),我们欢迎亚马逊使用这些资源,我们期待继续与他们合作。”


AdoptOpenJDK 项目的一级赞助商包括 Azul Systems、IBM、LJC、微软 Azure、Ocado 和 Packet,InfoQ 还问到了亚马逊对社区的参与情况以及 Java 生态系统发生碎片化的可能性:


AdoptOpenJDK 还在与亚马逊和其他 OpenJDK 提供商讨论进一步的举措,以缓解对碎片化的担忧。例如,AdoptOpenJDK 有一个开放的测试套件和测试管道(40-60,000 个测试),可用于测试任意的二进制文件。这为所有的 OpenJDK 提供商提供了一个他们可以达成的公共质量标准基础。

为了减少对碎片化的一些潜在担忧,AdoptOpenJDK 将强烈鼓励亚马逊和其他 OpenJDK 提供商将他们的补丁提交给 OpenJDK。亚马逊在他们的常见问题解答中也提到了这种担忧(https://aws.amazon.com/corretto/faqs/


Verburg 还指出 Java 生态系统在商业和业余爱好者中都有广泛的应用,并且认为有必要提供透明的构建过程。


AdoptOpenJDK 仍然是供应商中立的,社区可以生成经过严格测试的 OpenJDK 构建版本,最终用户可以清楚地看到他们所使用的每个二进制文件的构建过程。


他继续说道,亚马逊目前以 Corretto 为目标的平台之外还存在很多其他的硬件架构、操作系统和 Java 版本:


AdoptOpenJDK 将继续支持整个生态系统,提供广泛的平台支持(ARM32/64、Win 32、AIX、Linux s390、PPC 以及 Win、Mac OS X 和 Linux x86)和版本变体(Eclipse OpenJ9 VM、OpenJDK 8,9,10,11、Project Amber 等)。


最后,Verburg 鼓励社区通过为 AdoptOpenJDK 这样的项目作出贡献来共同参与共建 Java 的未来。


我们已经有几百万的下载量,社区成员,如 IBM、Red Hat、Azul、Ocado、SAP、LJC(以及亚马逊)每天都参与其中。在人们看来,这个项目是一个对软件行业具有长久意义的重要公共资源。


现在让我们回到 Gosling 在 Devoxx 上介绍 Corretto 这个话题上,Gosling 向 Java 的咖啡主题历史致敬——Caffè corttto是一种意大利饮料,含有少量白酒的浓缩咖啡——并向 Devoxx 与会者表达了他的激动心情:


亚马逊在 Java 方面有着悠久而深厚的历史。我很高兴看到我们内部的任务关键型 Java 团队的努力正在走向世界。


用户可以在aws.amazon.com/corretto上下载Corretto 8,同时还提供了文档,其中包含一个入门指南,指南中包含了所有受支持平台的完整说明。用户也可以在 stackoverflow 或 Twitter(@awsopen)上提出相关问题。


查看英文原文Amazon Release Corretto: A Multiplatform Java OpenJDK Build with No-Cost Support


2018-11-27 09:472398
用户头像

发布了 731 篇内容, 共 480.2 次阅读, 收获喜欢 2008 次。

关注

评论 1 条评论

发布
暂无评论
发现更多内容

解Bug之路-主从切换”未成功”?

无毁的湖光

数据库 主从环境

在华为云专属月中,寻觅互联网更需要的云味道

脑极体

Edge 修改使用的默认搜索引擎

HoneyMoose

趁早

小天同学

个人感悟 成功 4月日更 恋爱 趁早

从零开始写游戏服务器①:前期了解

Integer

c

揭开MySQL索引神秘面纱

咔咔

MySQL 索引

众盟科技:直播浪潮下,医美行业的私域营销之变

脑极体

百度联合研究成果登上《自然》子刊 推动人才管理大数据智能化转型

百度大脑

百度 AI

MySQL查询优化必备

咔咔

MySQL 查询优化

MVCC:听说有人好奇我的底层实现

咔咔

MySQL MVCC

学习笔记

山@支

你对JVM垃圾收集器了解多少?面试官夺命13问谁碰谁不迷糊啊!

北游学Java

Java JVM 垃圾回收

我叫小M,立志建立MySQL帝国。

yes

MySQL

知乎高赞:为什么同样是分布式架构的Kafka需要Leader而Redis不需要

中间件兴趣圈

分布式 raft 一致性 数据分片

7.1 Go语言从入门到精通:Cobra介绍

xcbeyond

cobra Go 语言 4月日更

Airtest入门及多设备管理总结

行者AI

自动化测试

webrtc stream,source,track

webrtc developer

如何避免成为一个油腻的中年猥琐男?

石云升

读书笔记 中年 28天写作 4月日更

Wireshark数据包分析学习笔记Day28

穿过生命散发芬芳

Wireshark 数据包分析 4月日更

2021 优质前端资源精选 —— 持续更新,欢迎共建

清秋

大前端 教程 资源 社区 4月日更

优秀程序员必备技能之如何高效阅读源码

中间件兴趣圈

方法论 源码解读

如何保护您的SaaS应用程序?

龙归科技

网络安全 SaaS 远程工作 单点登录

聪明人的训练(八)

Changing Lin

4月日更

Python OpenCV 泛洪填充,取经之旅第 21 天

梦想橡皮擦

Python OpenCV 4月日更

霸榜GitHub!银四匠心之作:拼多多/蚂蚁/百度面经分享

Java 编程 程序员 架构 面试

starforce源码解读二:游戏入口

风翱

Unity 源码解读 4月日更

c 语言思维地基搭建(vis2013编译+第一个c语言程序)

-jf.

4月日更

webrtc 开启新特性

webrtc developer

上来就问MySQL事务,瑟瑟发抖...

咔咔

MySQL 事务

来学Python啦,用Python详细讲解温度转换器

Bob

Python Python 游戏编程 4月日更

容器&服务: ClickHouse与k8s架构

程序员架构进阶

Kubernetes Prometheus Clickhouse 28天写作 4月日更

Amazon Corretto技术细节探秘_编程语言_Daniel Bryant_InfoQ精选文章