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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章