前言
如果以20年的时间为限,让我们选出一个影响力最大的程序语言,我的答案应该只有一个 – 那就是 Java。这个1995年诞生的全新的计算机语言,以“一次编写,到处运行”的跨平台特性以及面向对象、泛型编程等现代语言的特性迅速成为了企业级应用乃至移动应用开发的首选。
伴随着 Java 的普及,用以开发并提供 JVM 支持的 Java Development Kit (JDK) 就成为了最重要的一个开发工具包。历史上曾经出现过许多 JDK 的发行版,例如 IceTea、Blackdown、JRockit、Apache Harmony 等等至今都已成为历史。
Java 是全球应用最广泛的语言技术栈。据统计,全球 Java 开发工程师超过1000万名。而 JDK 作为 Java 语言的软件开发工具包,是整个 Java 应用的核心。当前,在 JDK 全球市场份额中,Oracle JDK 占 70%、OpenJDK 约占 21%。但2019年1月之后,Oracle 不再提供 Oracle JDK 8 免费商业版本更新。
亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术,观点,和项目,并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏,看到这里请一定不要匆匆划过,点这里让它成为你的技术宝库! |
Amazon Corretto 是开放 Java 开发工具包 (OpenJDK) 的免费、多平台、生产就绪型发行版。Corretto 提供长期支持,其中包括性能增强和安全修复。亚马逊在内部的数千种生产服务上运行 Corretto,并且 Corretto 已被证明能够兼容 Java SE 标准。借助 Corretto,您可以在常用操作系统(包括 Linux、Windows 和 macOS)上开发和运行 Java 应用程序。
今天,当我们面对 OpenJDK、Azul、Oracle Java SE 等许多 JDK 的选项的时候,我们又该如何取舍呢?
什么是 Amazon Corretto ?
咖啡爱好者都知道,Correto 是一种意大利浓缩咖啡掺入类似白兰地的烈酒调和而成的咖啡。抿上一口,酒与咖啡共饮带来的刺激口感和浓郁气氛使人沉醉。
Amazon Corretto 就是一个,让你仅使用一次,就会沉醉其中的 OpenJDK,下面的内容带你一品它的特色:
Amazon Corretto 支持多种平台,使您能够在云计算环境、私有数据中心、本地的机器或者容器中运行。
与 OpenJDK 相对应的 Corretto 现在可以用于:
Linux x64
https://docs.aws.amazon.com/zh_cn/corretto/latest/corretto-8-ug/generic-linux-install.html?trk=cndc-detail
Linux aarch64
https://docs.aws.amazon.com/zh_cn/corretto/latest/corretto-8-ug/generic-linux-install.html?trk=cndc-detail
Windows x64
https://docs.aws.amazon.com/corretto/latest/corretto-8-ug/windows-7-install.html?trk=cndc-detail
Windows x86
https://docs.aws.amazon.com/corretto/latest/corretto-8-ug/windows-7-install.html?trk=cndc-detail
macOS x64
https://docs.aws.amazon.com/corretto/latest/corretto-8-ug/macos-install.html?trk=cndc-detail
Amazon Linux 2 x64
https://docs.aws.amazon.com/corretto/latest/corretto-8-ug/amazon-linux-install.html?trk=cndc-detail
Amazon Linux 2 aarch64
https://docs.aws.amazon.com/corretto/latest/corretto-8-ug/amazon-linux-install.html?trk=cndc-detail
等多个平台或者操作系统以及云计算环境之上。目前发布的版本有与 Open JDK 8 相对应的 Corretto 8 以及与 OpenJDK 11 对应的 Corretto 11。
为确保与 Java SE 平台的兼容性,对于每个 Corretto 版本上运行技术兼容性工具包(TCK),以确保 Corretto 可作为所有 Java SE 发行版的完全替代,除非您使用的是 OpenJDK 中不可用的特性 (例如,Java Flight Recorder)。Corretto 安装完毕以运行 Java 应用程序现有的 Java 命令行选项、调优参数、监控和其他任操作都将可以继续工作。
作为一家成功的以技术驱动的企业,Amazon 在其25年的历史中构建起来了一套庞大的 IT 系统。数以千计的生产服务都是基于 Java 语言而开发的,而运行这些应用的基础就是 JDK。这个过程,使得 Amazon 积累了丰富的 JDK 应用的经验。在知识问答网站Quora 曾经有这样一个问题,
我统计了一下答案,被提到的最多的开发语言大概就是 Java 了。在这里我想引用 James Gosling 的一句评价。众所周知,James Gosling 是 Java 语言的奠基人,也是我非常尊敬的前辈。他目前在亚马逊云科技担任 Distinguished Engineer ,因工作之便我得以有幸曾与他共进晚餐,听他聊起当年的八卦,这大概也算是一种福利吧。
“Amazon has a long and deep history with Java. I’m thrilled to see the work of our internal mission-critical Java team being made available to the rest of the world”
— James Gosling hljs-right
这句话翻译出来就是“亚马逊在 Java 方面有着悠久而深厚的历史。我很高兴看到我们的内部关键任务 Java 团队的工作可以提供给世界其他地方。
为什么需要 Amazon Corretto ?
回答这个问题需要回顾过去几年围绕着 Java 发生的一系列动荡。
熟悉 Java 的开发者都应该知道 Java SE。我们熟悉的 Java SE 定义了一系列通用的 Java API,还包括了 Java 语言的规范和 Java 虚拟机 (JVM) 的规范。Java SE 最著名的实现之一就是:Oracle Corporation’s Java Development Kit (JDK)。
以往,Java SE 规范受 JCP (Java Community Process https://jcp.org/?trk=cndc-detail) 管理。JCP 决定了哪些新的规范可以加入,哪些需要删除。原则上任何人都可以去实现 Java 的语言规范。如果这个实现通过了 TCK(测试兼容性套件),则通常被认为是兼容的 JDK。但是,因为两件事的发生,围绕着 JDK 的争吵与混乱开始了 –
Java 开始每六个月发布一个新的主要版本
Oracle 更改了其对 Java 的支持模型。简单说来,Oracle 现在分发两个JDK构建:Oracle JDK 和 Oracle OpenJDK。Oracle JDK免费提供开发和测试,但如果在生产中使用它,则必须付费。Oracle的OpenJDK在任何环境下都是免费的。
为了给这个混乱火上浇油,Oracle 宣布 Java SE 8 将在2019年1月结束 Java SE 8 的公共更新:
https://blogs.oracle.com/java-platform-group/end-of-public-updates-is-a-process%2c-not-an-event?trk=cndc-detail
按照我的理解,这个变化很大程度上与 Oracle 的商业策略有关。但是,每个 Java 用户、社区、企业等都对未来 Java 是否免费使用感到困惑。我相信,大部分 Java 的用户都没有打算为此而付费。此外,尽管 JDK 11 已日趋成熟,JDK 12 正紧锣密鼓的开发中。但现实世界中的大部分Java 应用,尤其是强调稳定性、可靠性的企业应用目前还是建立在 JDK 8 之山。更有许多企业,至今仍将 JDK 8 作为首选的 Java 环境。
这张图是2019年初的一个统计数据,让我们得以了解市场中各个不同版本的现状,由其凸显了当下 Java 8 的重要性。
来源:
https://aspiresoftware.in/blog/wp-content/uploads/2019/01/10824654-screen-shot-2018-12-05-at-91642-am.png?trk=cndc-detail
尽管 OpenJDK 将保持免费状态并且可以在生产中使用,但是 Oracle 仅承诺在发行后六个月内支持和更新 Oracle Java 11 OpenJDK。所有后续支持和更新都归于开源社区。但众所周知,OpenJDK 社区的响应速度、更新频度等并不能够很好的满足企业关键业务支持的需要。
关于这个看法,我想引用 Micah Silverman ,一个拥有24年 Java 开发经验的 Java 老兵的一段话 –
“OpenJDK 构建给我带来的最大痛苦是,他们悲惨地落后于 Oracle JDK的 TLS 密码套件和 TLS 版本(1.1、1.2)的实现。但是,我从事的开源项目有一个大量暴露于各种加密算法和反向代理类型的工作负载,这些工作负载充分利用了这些东西,因此很可能无法代表其他人在尝试OpenJDK 时可能遇到的标准 Web 应用程序或微服务所遇到的问题类型,尤其是在 OpenJDK 11 和后来的版本更符合 Oracle JDK 版本。”
来源:https://aspiresoftware.in/blog/wp-content/uploads/2019/01/10824654-screen-shot-2018-12-05-at-91642-am.png?trk=cndc-detail
尽管 OpenJDK 将保持免费状态并且可以在生产中使用,但是 Oracle 仅承诺在发行后六个月内支持和更新 Oracle Java 11 OpenJDK。所有后续支持和更新都归于开源社区。但众所周知,OpenJDK 社区的响应速度、更新频度等并不能够很好的满足企业关键业务支持的需要。
关于这个看法,我想引用 Micah Silverman ,一个拥有24年 Java 开发经验的 Java 老兵的一段话 –
“OpenJDK 构建给我带来的最大痛苦是,他们悲惨地落后于 Oracle JDK的 TLS 密码套件和 TLS 版本(1.1、1.2)的实现。但是,我从事的开源项目有一个大量暴露于各种加密算法和反向代理类型的工作负载,这些工作负载充分利用了这些东西,因此很可能无法代表其他人在尝试OpenJDK 时可能遇到的标准 Web 应用程序或微服务所遇到的问题类型,尤其是在 OpenJDK 11 和后来的版本更符合 Oracle JDK 版本。”
来源:https://developer.okta.com/blog/2019/01/16/which-java-sdk?trk=cndc-detail
于是,在这样的局面之下 Amazon Corretto 应需而生。一方面是Amazon 自身对于数量巨大的 Java 应用的需要。在 Amazon 的系统框架之下,数千种生产服务上运行着 Corretto。这就要求 Corretto 的补丁程序和改进功能够满足 Amazon 解决大规模的、现实环境中的服务问题,从而满足强大的性能和可扩展性的需求。
此外也可以通过这个开源项目回馈给开源社区以及为数众多的 Java 开发者。Amazon 通过免费且长期的支持为用户提供这些功能,并每个季度更新一次,包括了错误修复和安全补丁。亚马逊云科技甚至还承诺在季度计划之外向客户提供紧急的修复。需要强调的是,Correto 承诺是长期支持(Long-term support,LTS)。这个长期支持包括了 Amazon 承诺至少在相关发行版本的指定日期(例如 Corretto 8 的承诺是2023年6月)之前免费提供性能增强和安全更新。
许多 Java 的用户已经表示出了对 Corretto 的极大兴趣,并有许多已经开始了迁移之旅。例如 FICO,这是一家位于加州圣何塞的数据分析公司,专注于信用评分服务。它的 FICO score,衡量消费者信贷风险的指标,已经成为美国消费者贷款的一个固定指标。他的的工程副总裁 Jeet Kaul 就这样表示过 –
“在 FICO,我们已经在很多服务中使用了 OpenJDK。有了 Amazon Corretto,我们不仅可以为云部署 Java,还可以跨所有部署和多个操作系统部署 Java,因为我们知道 Amazon 和社区支持 OpenJDK。我们从预览版开始就一直在评估 Corretto,并无缝地替换了我们的 Java 运行时。”
Amazon Corretto 启动
启动 Amazon Corretto 的最简单方法是在选择所需要平台并下载安装软件包。要注意 Java 的版本,Java 8 或者 Java 11:
Amazon Corretto 官网
https://aws.amazon.com/cn/corretto/?trk=cndc-detail
Amazon Corretto 8 的下载
https://docs.aws.amazon.com/zh_cn/corretto/latest/corretto-8-ug/downloads-list.html?trk=cndc-detail
Amazon Corretto 11 的下载
https://docs.aws.amazon.com/zh_cn/corretto/latest/corretto-11-ug/downloads-list.html?trk=cndc-detail
Amazon Corretto 8 源代码
https://github.com/corretto/corretto-8?trk=cndc-detail
Amazon Corretto 11 源代码
https://github.com/corretto/corretto-11?trk=cndc-detail
java -version
openjdk version “11.0.3” 2019-04-16 LTS
OpenJDK Runtime Environment Corretto-11.0.3.7.1 (build 11.0.3+7-LTS)
OpenJDK 64-Bit Server VM Corretto-11.0.3.7.1 (build 11.0.3+7-LTS, mixed mode)
Amazon Corretto 和 Open JDK 的合作
Amazon 在以往已经为 OpenJDK 8 做出了许多的贡献,并将在今后会与 OpenJDK 社区进行更紧密的合作,以实现 OpenJDK 8 和11的完善与增强。
如果针对 JDK 的修补程序在上游项目不能获得批准、延迟或不适合于 OpenJDK 项目,Amazon 将在提供增值服务的前提下将其提供给Corretto 的用户。如果在 OpenJDK 中以其他方式解决了此类问题,Amazon 也将在安全的前提下尽快解决该问题。
至于亚马逊云科技,在2019年已经让 Corretto 成为 Amazon Linux 上的默认 JDK。
结语
最后,总结一下 Amazon Corretto 的特性-
免费,开源,多平台和可用于生产的JDK (GPL-2.0)
OpenJDK的下游发行版本
免费长期支持 (LTS)
至少每季度发布一次更新
直接替换(直接替换现有的OpenJDK)
多平台— Linux、Windows、macOS、Docker
启用了技术兼容性套件(TCK),以确保与 Java SE 平台的兼容性
我们鼓励您使用 Corretto 来运行 Java 应用程序。预祝各位的 Amazon Corretto 体验愉快!
本篇作者:费良宏
费良宏,亚马逊云科技 Principal Developer Advocate。在过去的20多年一直从事软件架构、程序开发以及技术推广等领域的工作。他经常在各类技术会议上发表演讲进行分享,他还是多个技术社区的热心参与者。他擅长 Web 领域应用、移动应用以及机器学习等的开发,也从事过多个大型软件项目的设计、开发与项目管理。目前他专注与云计算以及互联网等技术领域,致力于帮助中国的 开发者构建基于云计算的新一代的互联网应用.
文章来源:https://dev.amazoncloud.cn/column/article/62b5200829f7d21bb15e04aa?sc_channel=CSDN