Amazon Corretto技术细节探秘

\u003cp\u003e在比利时安特卫普举行的Devoxx BE大会上,亚马逊发布了\u003ca href=\"https://aws.amazon.com/corretto\"\u003eCorretto\u003c/a\u003e预览版,这是Java的一个参考实现,一个“免费、跨平台、生产就绪”的OpenJDK版本。在开幕主题演讲中,Java语言创始人James Gosling宣布Corretto可以作为所有Java SE发行版的直接替代品,但使用了OpenJDK中没有的功能的场景除外(例如\u003ca href=\"https://docs.oracle.com/javacomponents/jmc-5-4/jfr-runtime-guide/about.htm#JFRUH170\"\u003eJava Flight Recorder\u003c/a\u003e)或当前正在非HotSpot JVM上运行的工作负载。亚马逊计划在2019年将Corretto作为亚马逊Linux 2的默认OpenJDK。\u003c/p\u003e\n\u003cp\u003eCorretto 8的预览版本对应于Java 8,\u003ca href=\"https://docs.aws.amazon.com/corretto/latest/corretto-8-ug/downloads-list.html\"\u003e二进制安装文件\u003c/a\u003e目前可在Amazon Linux、macOS和Windows上安装。GA版本计划于2019年第一季度推出,并将增加对Ubuntu和Red Hat Enterprise Linux的支持。亚马逊将至少在2023年6月之前为Corretto 8提供免费的安全更新。对应于OpenJDK 11的Corretto 11将于2019年上半年推出。亚马逊至少在2024年8月之前为Corretto 11提供每季度更新。\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://static001.geekbang.org/resource/image/db/fe/db66cabbd8d97db9c59972fe097e6efe.jpg\" alt=\"\" /\u003e\u003c/p\u003e\n\u003cp\u003eAWS首席开源技术专家Arun Gupta在AWS开源博客上发布公告称,Java是AWS客户使用的最流行的语言之一,亚马逊致力于支持Java并保持Java免费。\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e我们正在向客户提供免费、长期支持的Java,并提供季度更新,包括错误修复和安全补丁。AWS还将在季度计划之外为客户提供紧急修复。\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e在Oracle最近宣布改变Java产品支持策略之后——主要是移除Java的免费长期支持(LTS)——很多亚马逊客户开始担心他们必须为LTS版本的Java支付费用才能运行他们的工作负载。之前,亚马逊确认亚马逊Linux中的LTS版本Java将继续获得支持,现在开始跟进Corretto的预览版。\u003c/p\u003e\n\u003cp\u003e在Devoxx BE的分组讨论会上,Gupta与AWS JDK团队经理Yishai Galatzer进行了交谈。两人谈到,Corretto 8包括来自较新OpenJDK版本的反向移植,以及来自社区和亚马逊新开发的增强功能。发布过程包括对数千种Amazon生产服务进行测试,因此修复程序可以在发现问题后的几天内发布。亚马逊还在每个Corretto版本上运行\u003ca href=\"https://jcp.org/en/resources/tdk\"\u003eJava技术兼容性工具包\u003c/a\u003e(TCK),以确保与Java SE平台的兼容性。\u003c/p\u003e\n\u003cp\u003eCorretto中包含的额外补丁和改进是在当前的OpenJDK上游代码库之外,这些改进让亚马逊能够“解决真实的大规模服务问题,满足高性能和可扩展性需求”。这些补丁包括:[C8-1]当长时间运行的本机调用导致G1 GC挂起,防止过早抛出OutOfMemoryException;[C8-2]从OpenJDK 10反向移植,修复了\u003ca href=\"https://bugs.openjdk.java.net/browse/JDK-8177809\"\u003eJDK-8177809\u003c/a\u003e:“\u003ccode\u003eFile.lastModified()\u003c/code\u003e丢失毫秒精度(总是以000结尾)”;[C8-17]在使用gcc7时,提高JVM源代码的可移植性。\u003c/p\u003e\n\u003cp\u003e亚马逊最近已经开始参与贡献OpenJDK,Gupta的博文称“我们期待与OpenJDK社区密切合作,共同开发OpenJDK 8和11的未来增强功能”。他说,“我们在下游为OpenJDK提供修复,根据我们自己的经验和需求添加增强功能,然后构建成Corretto”。不过,这确实增加了上游OpenJDK代码库和Corretto之间存在微妙差异的可能性。\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e如果针对这些补丁的努力被延迟或不适合OpenJDK项目,我们会将它们提供给我们的客户,只要能够为客户带来价值。如果在OpenJDK中使用了不同的方式解决问题,我们将在安全的情况下采用他们的解决方案。\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e在安装好Corretto二进制文件后,用它来运行Java应用程序,“现有的命令行选项、调整参数、监控和其他内容将继续像以前一样保持不变”。但前提是需要通过HotSpot JVM执行应用程序,并且如果当前正在使用其他的JVM,例如\u003ca href=\"https://www.eclipse.org/openj9/\"\u003eEclipse OpenJ9\u003c/a\u003e,那么一些命令行选项可能不兼容,需要做出修改。Devoxx的参会者问在未来是否支持其他JVM,Galatzer表示,目前只有HotSpot将与Corretto捆绑在一起。\u003c/p\u003e\n\u003cp\u003eCorretto的源代码可以通过GitHub获得,InfoQ与Gupta取得了联系,问他该项目是否接受来自社区中的提取请求和补丁。\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e是的。有关Corretto的拉取请求可以通过\u003ca href=\"https://github.com/corretto\"\u003ehttps://github.com/corretto\u003c/a\u003e提交。任何与OpenJDK相关的问题都需要根据OpenJDK贡献者协议提交到相应OpenJDK代码库中,让整个社区都可以从修复中受益。在向OpenJDK提交代码后,我们建议再与Corretto团队就提交的问题展开讨论,并确定创建新的Corretto PR是否有助于加速修复。\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e他还指出在Corretto和OpenJDK上提交bug的公开程序:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eOpenJDK相关的bug应该提交到OpenJDK代码库中,然后在Corretto上提供该bug的链接。这是为了让整个社区都知道与这个bug相关的代码或想法。如果存在只与Corretto相关的构建脚本、文档和工件相关的问题,那么应该将问题提交到\u003ca href=\"https://github.com/corretto\"\u003ehttps://github.com/corretto\u003c/a\u003e。\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eHackerNews和Twitter上针对发布公告的讨论,例如,Java Champion及Joda-Time的作者Stephen Colebourne比较关注Corretto版本的发布周期。Gupta证实,目前只支持与OpenJDK的LTS版本相对应的Corretto版本:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e目前,我们计划遵循Oracle的LTS发布周期。因此,除了Corretto 8和Corretto 11之外,下一个LTS版本将是Corretto 17。\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eOpenJDK的其他版本也可用,包括\u003ca href=\"https://www.oracle.com/java/\"\u003eOracle的Java\u003c/a\u003e、\u003ca href=\"https://developers.redhat.com/products/openjdk/overview/\"\u003eRed Hat的OpenJDK构建版本\u003c/a\u003e,以及来自\u003ca href=\"https://adoptopenjdk.net/\"\u003eAdoptOpenJDK\u003c/a\u003e组织的社区构建版本。AdoptOpenJDK致力于促进OpenJDK的采用,一股来自民间社区的力量,由一系列商业组织、Java用户组和Java开发者组成。InfoQ联系到了Java Champion、LJC和\u003ca href=\"https://www.infoq.com/news/2018/03/AdoptOpenJDKMar18\"\u003eOpenJDK Build Farm\u003c/a\u003e项目的负责人Martijn Verburg,询问了他对发布公告的看法:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e亚马逊宣布Corretto是对OpenJDK作为生产环境中可行的运行时的额外认可!我认为很多保守组织会看到这一点,他们会说“如果亚马逊、IBM、Red Hat等正在使用OpenJDK,那么我也就没有什么疑虑了!”\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eInfoQ还问到亚马逊是否与AdoptOpenJDK合作,Verburg回答说:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e“亚马逊曾经与AdoptOpenJDK合作,使用我们的一些脚本和专业知识解决他们的Windows和Mac安装程序问题,并改进他们的测试。AdoptOpenJDK的精神一直是关于Open Infrastructure As Code(请参阅\u003ca href=\"https://adoptopenjdk.net/about.html%E7%9A%84%E7%AC%AC3%E4%B8%AA%E8%A6%81%E7%82%B9\"\u003ehttps://adoptopenjdk.net/about.html的第3个要点\u003c/a\u003e),我们欢迎亚马逊使用这些资源,我们期待继续与他们合作。”\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eAdoptOpenJDK项目的\u003ca href=\"https://adoptopenjdk.net/sponsors.html\"\u003e一级\u003c/a\u003e赞助商包括Azul Systems、IBM、LJC、微软Azure、Ocado和Packet,InfoQ还问到了亚马逊对社区的参与情况以及Java生态系统发生碎片化的可能性:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eAdoptOpenJDK还在与亚马逊和其他OpenJDK提供商讨论进一步的举措,以缓解对碎片化的担忧。例如,AdoptOpenJDK有一个开放的测试套件和测试管道(40-60,000个测试),可用于测试任意的二进制文件。这为所有的OpenJDK提供商提供了一个他们可以达成的公共质量标准基础。\u003c/p\u003e\n\u003cp\u003e为了减少对碎片化的一些潜在担忧,AdoptOpenJDK将强烈鼓励亚马逊和其他OpenJDK提供商将他们的补丁提交给OpenJDK。亚马逊在他们的常见问题解答中也提到了这种担忧(\u003ca href=\"https://aws.amazon.com/corretto/faqs/\"\u003ehttps://aws.amazon.com/corretto/faqs/\u003c/a\u003e)\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eVerburg还指出Java生态系统在商业和业余爱好者中都有广泛的应用,并且认为有必要提供透明的构建过程。\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eAdoptOpenJDK仍然是供应商中立的,社区可以生成经过严格测试的OpenJDK构建版本,最终用户可以清楚地看到他们所使用的每个二进制文件的构建过程。\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e他继续说道,亚马逊目前以Corretto为目标的平台之外还存在很多其他的硬件架构、操作系统和Java版本:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eAdoptOpenJDK将继续支持整个生态系统,提供广泛的平台支持(ARM32/64、Win 32、AIX、Linux s390、PPC以及Win、Mac OS X和Linux x86)和版本变体(Eclipse OpenJ9 VM、OpenJDK 8,9,10,11、Project Amber等)。\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e最后,Verburg鼓励社区通过为AdoptOpenJDK这样的项目作出贡献来共同参与共建Java的未来。\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e我们已经有几百万的下载量,社区成员,如IBM、Red Hat、Azul、Ocado、SAP、LJC(以及亚马逊)每天都参与其中。在人们看来,这个项目是一个对软件行业具有长久意义的重要公共资源。\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e现在让我们回到Gosling在Devoxx上介绍Corretto这个话题上,Gosling向Java的咖啡主题历史致敬——\u003ca href=\"https://en.wikipedia.org/wiki/Caff%C3%A8_corretto\"\u003eCaffè corttto\u003c/a\u003e是一种意大利饮料,含有少量白酒的浓缩咖啡——并向Devoxx与会者表达了他的激动心情:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e亚马逊在Java方面有着悠久而深厚的历史。我很高兴看到我们内部的任务关键型Java团队的努力正在走向世界。\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003ca href=\"http://xn--aws-vs9dj4uqlfeoxlu8a.amazon.com/corretto%E4%B8%8A%E4%B8%8B%E8%BD%BDCorretto\"\u003e用户可以在aws.amazon.com/corretto上下载Corretto\u003c/a\u003e 8,同时还提供了文档,其中包含一个入门指南,指南中包含了所有受支持平台的完整说明。用户也可以在stackoverflow或Twitter(@awsopen)上提出相关问题。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e查看英文原文\u003c/strong\u003e:\u003ca href=\"https://www.infoq.com/news/2018/11/amazon-corretto-java\"\u003eAmazon Release Corretto: A Multiplatform Java OpenJDK Build with No-Cost Support\u003c/a\u003e\u003c/p\u003e\n

你可能感兴趣的:(Amazon Corretto技术细节探秘)