Amazon Corretto技術細節探祕

weixin_34319999發表於2018-11-27

在比利時安特衛普舉行的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

相關文章