Amazon Corretto 和 OpenJDK 的区别

Posted

技术标签:

【中文标题】Amazon Corretto 和 OpenJDK 的区别【英文标题】:Differences Amazon Corretto and OpenJDK 【发布时间】:2019-04-17 18:11:11 【问题描述】:

Amazon Corretto 和OpenJDK(和Oracle's OpenJDK - 但已经有一张关于this 的票)有什么区别? Corretto 是 OpenJDK 版本 8 的实现。两者都是免费的,并且似乎可以在大多数系统(Linux、Mac OS 和 Windows)上运行。到目前为止,Corretto 仅处于预览阶段,但很快就会改变。 Corretto 的documentation 并没有说太多关于差异的内容。是否有差异?性能,垃圾收集?为什么我更喜欢其中之一?您会在 AWS 之外使用 Corretto 吗?

【问题讨论】:

这几天也有coretto 11... 【参考方案1】:

除了任何性能优势之外,使用 Corretto 的一个重要原因是其对其版本的长期支持,包括安全漏洞

OpenJDK 与其他几家供应商(如 Amazon Corretto)的重要区别之一是它们的发布和支持周期。

OpenJDK 的发布周期为 6 个月,并且仅在此期间支持每个版本。下一个版本后,上一个版本将停止接收补丁。这意味着要保持最新状态,您必须每 6 个月升级一次。

另一方面,Corretto 为其 JDK 构建提供 LTS(长期支持)。

Amazon Corretto 是一款免费的多平台生产就绪型产品 分发随附的 Open Java Development Kit (OpenJDK) 长期支持 (LTS)。 LTS 包括亚马逊的承诺 免费提供性能增强和安全更新,直到 至少是相关发布版本的指定日期(例如 5 月 2026 年 Corretto 8)。更新计划每季度发布一次。 亚马逊还计划在外部应用紧急修复(包括安全性) 定期季度周期,当它们可用时并准备好 使用。

总而言之,您有 3 个选择:

    免费使用 OpenJDK,但每 6 个月升级一次以获得更新 使用 Oracle 或其他供应商提供的付费 JDK 免费使用 Corretto,并获得几年的免费更新

如您所见,如果您想保持安全和保持最新状态、不想花钱并且不想不断升级到新版本,Corretto 是一个不错的选择。

以下是 Corretto 当前的生命周期结束日期:

版本 8 LTS 2026 年 6 月 版本 11 LTS 2027 年 9 月

也提供非 LTS 版本,但支持时间较短。

那里有各种各样的 JDK 供应商,因此对于免费和更新的 JDK 可能还有其他替代方案,但请务必仔细阅读供应商网站以了解他们的支持和补丁政策。个人认为 Corretto 是个不错的选择,有信心的东西会及时修补。

【讨论】:

谢谢!我不知道 OpenJDK 的支持时间很短。您会在 AWS 之外使用 Corretto 吗? 是的,它可以安装在包括 Windows、Mac 和 Linux 在内的多个平台上,并且在 DockerHub 上有一个可以用于容器的映像。【参考方案2】:

我可以告诉你,我们发现了一些细微的差别。我们尚未确定差异的根本原因,但我们知道使用 Corretto 生成的 Jasper 报告在某些偏移量上存在细微差异,例如 corretto 中的leadingOffset="-2.9667969" 与 Oracle JVM 中的 "-2.737793"。没有视觉差异,但导致金大师测试失败。此外,不包括一些非常旧的弃用工具,例如文本到 tiff 渲染。除此之外,我们已将许多项目顺利转换为 Corretto。

【讨论】:

【参考方案3】:

应用的补丁列在以下页面中:

https://docs.aws.amazon.com/corretto/latest/corretto-8-ug/patches.html https://docs.aws.amazon.com/corretto/latest/corretto-8-ug/change-log.html

我不会复制,因为列表会随着时间的推移而增加,但重点似乎是错误修复和性能修复补丁和向后移植。

【讨论】:

【参考方案4】:

来自Amazon's description:

“Corretto 中的补丁和改进使 Amazon 能够解决大规模、现实世界的服务问题,满足严格的性能和可扩展性需求。我们将向客户提供这些免费的长期支持,每季度提供一次包括错误修复和安全补丁在内的更新。AWS 还将在季度计划之外向客户提供紧急修复”

因此,Corretto 具有特定于性能的调整(例如,针对服务器或云应用程序),以及用户可以利用的其他错误修复,这些修复不一定在 OpenJDK 中。此外,亚马逊也在为其构建提供适当的 LTS 支持,正如其他商业公司开始为 JDK 做的那样(我想到了 Oracle 和 Azul 以及其他公司)。

【讨论】:

是否认为在 AWS 之外使用 Corretto 有意义? 当然,我没有问题。我刚刚在 github (github.com/corretto/corretto-8/commits/preview-release) 上仔细阅读了他们的项目,看起来他们正在将某些错误修复从更高的 Java 版本反向移植到他们的 Java 8 版本中。如果你真的很喜欢某个错误修复,那就去做吧。 我认为链接已损坏? ^ 这里是更改日志的工作链接:docs.aws.amazon.com/corretto/latest/corretto-8-ug/…。他们似乎经常支持移植。 我们还没有(也没有计划)针对 AWS 进行修复。正如运行 Amazon 服务的应用程序所观察到的或用户将来报告的那样,所有修复都是一般的 Java 改进。此外,所有修复(除了反向移植)都贡献给 OpenJDK 的上游。我们还计划加入维护 OpenJDK8u 和 OpenJDK11u 的团队(与 Red Hat 和希望其他人一起)

以上是关于Amazon Corretto 和 OpenJDK 的区别的主要内容,如果未能解决你的问题,请参考以下文章

又一种JDK选择——Amazon Corretto

又一种JDK选择——Amazon Corretto

好消息,亚马逊推出了Oracle Jdk的替代品 —— Corretto

如何从命令行查找有关OpenJDK Provider的详细信息

Amazon Linux2 - java-1.8.0-openjdk-devel 如何设置 JAVA_HOME?

在 Amazon Linux 中切换到 JDK 7