ベルギーのアントワープで開催されたDevoxx BEにて、アマゾンがAmazon Correttoのプレビューリリースを発表した。これは、"無償で、マルチプラットフォームに対応し、リリース可能なディストリビューション"であるOpenJDKのビルドで、Javaの参照実装である。開会の基調講演を通して、Java言語の創設者であるJames Gosling氏は、Java SEの全ディストリビューションからCorrettoへ、すぐに変更できると述べている。ただし、OpenJDKで利用できない機能 (たとえば、Java Flight Recorder) や、HotSpotでないJVMで現在動作させている処理を含んだユースケースは例外である。アマゾンは、2019年にCorrettoをAmazon Linux 2でのデフォルトのOpenJDKにする計画をしている。
Corretto 8のプレビューリリースバージョンは、Java 8に対応しており、インストール用バイナリは、現時点でAmazon LinuxとmacOS、Windowsに対して利用できる。GAリリースは、2019年の第1四半期に計画されている。その際には、UbuntuとRed Hat Enterprise Linuxのサポートも追加される。アマゾンは、少なくとも2023年6月まで、Corretto 8に対して無償のセキュリティアップデートを提供する予定である。OpenJDK 11に対応したCorretto 11は、2019年の上半期に提供される。アマゾンは、Corretto 11を、四半期ごとの更新をしつつ、少なくとも2024年8月までサポートする予定である。
Amazon Web ServicesのプリンシパルオープンソーステクノロジストであるArun Gupta氏は、AWS Open Sourceブログへの発表に関する投稿で、JavaはAWSの顧客が使うものの中で、もっとも人気のある言語の1つであり、アマゾンは、Javaをサポートし、今後もJavaが無償であるように尽力する、と述べている。
私たちは[これを]無償の、長期間のサポートがあるものにして、バグフィックスやセキュリティパッチを含め四半期ごとの更新をしつつ、顧客に提供します。AWSは、四半期のスケジュール外の緊急修正も、顧客に提供します。
オラクルが、Javaのサポートの提供方法を変更すると、主にJavaの無償の長期間サポート (LTS) を削除すると発表したあと、アマゾンの顧客の多くは、処理を実行するには、JavaのLTSバージョンに対して支払いをしなければならないのかと不安になった。当初アマゾンは、Amazon Linux上のJavaはLTSであると再確認していた。このことは、Amazon Correttoのプレビューリリースでさらに固められた。
さらに、Devoxx BEで、Gupta氏は、AWSのJDKチームのマネージャであるYishai Galatzer氏とともに、ブレイクアウトセッションをした。2人は、関連するコミュニティとアマゾン自身が新規に開発した拡張に加え、より新しいOpenJDKのリリースから対象としたバックポートを、Corretto 8に入れると説明した。リリースプロセスには、アマゾンの何千ものプロダクションサービス上でのテストが含まれており、このおかけで、問題発見から数日で修正をリリースできるようになっている。アマゾンは、各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 8と11に対する今後の拡張に関し、OpenJDKコミュニティと密接に連絡を取って作業ができることを楽しみにしている"と述べている。続けて彼は、"私たちは、OpenJDKになされた修正をダウンストリームし、私たち自身の経験とニーズに基づいて拡張を追加し、それからCorrettoのビルドを作る"と述べた。しかしこれは、アップストリームのOpenJDKリポジトリとCorrettoで微妙に異なる可能性がある、ということをもたらす。
このようなパッチに対するアップストリームの取り組みがどれもうまくいかなかったり、遅れたり、OpenJDKプロジェクトにふさわしくない場合、それらが価値を付け加えるものである限り、私たちは、自分たちの顧客にそれを提供します。OpenJDKで問題が異なる方法で解決された場合、そうすることが安全であるとわかればすぐに、その解決策に移ります。
Correttoのバイナリがホスト上にインストールされ、Javaアプリケーション実行のために正しく呼び出されれば、"既存のコマンドラインオプションやチューニングパラメータ、モニタリング、適切な場所にあるその他どんなものも、以前と同じように動作する"。しかし、これはアプリケーションをHotSpot JVMで実行しているものと仮定している。目下Eclipse OpenJ9といった他のJVMを使っているなら、このJVMで利用できるコマンドラインオプションとは互換性がないか、変更が必要かもしれない。Devoxxの聴衆は、プラットフォームで今後他のJVMをサポートする可能性について質問したが、Galatzer氏は、Correttoにバンドルされるのは、現段階ではHotSpotだけであると述べている。
CorrettoのソースコードはGitHubにある。InfoQは、Gupta氏に接触し、プロジェクトが広くコミュニティからのプルリクエストやパッチに対してオープンなのか、質問した。
もちろんです。Corretto固有のプルリクエストは、https://github.com/correttoから送れます。OpenJDK関連のあらゆる問題は、OpenJDK contributor agreementの下で、対応するOpenJDKのリポジトリにその問題を登録する必要があります。そうすれば、コミュニティ全体で、修正から恩恵を得られます。このようなコントリビューションがOpenJDKに提出されたあと、その問題に対してCorrettoチームと議論し、CorrettoへのPRが修正の反映を促進する手助けとなるかを判断するよう勧めています。
また彼は、CorrettoとOpenJDKにバグを登録する公開プロセスについて、懸命に述べた。
OpenJDK関連のバグは、OpenJDKのリポジトリに登録されるべきで、そのバグへのリンクは、Correttoでも同様に管理します。これは、そのバグに関するコードやアイデアはすべて、コミュニティ全体で利用できるようにするためです。Correttoに関連するビルドスクリプトやドキュメント、他の成果物といったものだけに結びつく課題であれば、https://github.com/correttoの適切なリポジトリに登録されるべきでしょう。
HackerNewsでの発表とTwitter、たとえばJavaチャンピオンでJoda-Time作者のStephen Colebourne氏のところでの議論では、Correttoのバージョンのリリースサイクルがどのようなものかについて、頻繁に注目していた。Gupta氏は、現時点では、OpenJDKのLTSリリースに対応するCorrettoのバージョンのみをサポートすると追認した。
現時点では、私たちはオラクルのLTSのリリースサイクルに追随するつもりです。そのため、Corretto 8とCorretto 11に加えて、次のLTSリリースはCorretto 17となるでしょう。
他のOpenJDKのビルドも利用できる。オラクルのJavaやレッドハットのOpenJDKビルド、AdoptOpenJDKによるコミュニティの成果などだ。AdoptOpenJDKは、OpenJDKの採用を促進する草の根の取り組みであり、多数の営利団体、Javaユーザグループ、個人のJava開発者から構成される。InfoQは、Javaチャンピオン、かつLJCとOpenJDKビルドファームプロジェクトのリーダである、Martijn Verburg氏に接触し、この発表に関する彼の見解を聞いた。
アマゾンがCorrettoを発表したことで、OpenJDKは本番環境での利用もできるランタイムとして、さらに認知されることとなりました!多くの保守的な組織がこれを見て、"アマゾンがIBMやレッドハットなどと同様にOpenJDKを使っているなら、もう問題はない!"と言っていると思います。
InfoQは、アマゾンがAdoptOpenJDKと連携するかどうかについても質問し、Verburg氏はこう返答している。
"アマゾンはAdoptOpenJDKと連携しています。私たちのスクリプトと技術のいくつかを、WindowsとMacのインストーラの欠陥を解決したり、テスト周りの話を改善するために使っています。AdoptOpenJDKの信念は、オープンなInfrastructure As Code (https://adoptopenjdk.net/about.htmlの3番目の項目を見てください) についてであり、その手助けとなるアマゾンは大歓迎でした。私たちは、彼らと継続して連携し、彼らがまたコントリビューションしてくれることを楽しみにしています。"
AdoptOpenJDKプロジェクトの第一層のスポンサーは、Azul SystemsやIBM、LJC、Microsoft Azure、Ocado、Packetであることに注意してほしい。InfoQは、アマゾンのコミュニティとの関わり合いと、Javaエコシステムの分裂の可能性についても質問した。
AdoptOpenJDKはまた、アマゾンや他のOpenJDKプロバイダと、分裂の不安を鎮めるため、さらなる取り組みについて議論しています。たとえば、AdoptOpenJDKは、あらゆるバイナリに適用できるオープンなテストスイートとテストパイプライン (40-60,000テスト) を持っています。これで、あらゆるOpenJDKプロバイダが達成しようとする、共通の品質基準の基礎を形成できるのではないでしょうか。このような、準備中のアイデアが他にもいくつかあります。
[...]
分裂への潜在的な不安をいくらか鎮めるため、AdoptOpenJDKは、アマゾンや他のあらゆるOpenJDKプロバイダに、パッチをOpenJDKにアップストリームするよう、強く働きかけるでしょう。アマゾンは、彼らのFAQ (https://aws.amazon.com/corretto/faqs/) で述べているように、この意見に同意しています。
Verburg氏はまた、Javaのエコシステムが、商業的にも趣味で熱中している人にも、広範囲に及んでおり、透過的なビルドプロセスを提供することが必要であると懸命に述べた。
AdoptOpenJDKの最後の[コメント]は、私が思うに重要です。AdoptOpenJDKは、ベンダ中立な、複数ベンダによるコミュニティである、ということを継続します。このコミュニティが、極めてよくテストされたOpenJDKビルドを作り、そこではエンドユーザは、バイナリがどのようにビルドされるかを、始めから終わりまで、O/Sパッチレベルから使っている各ライブラリまで、すべて見れます。
続けて彼は、より多くのハードウェアアーキテクチャやオペレーティングシステム、Javaのバージョンが、アマゾンが現時点でCorrettoの対象としているプラットフォームの他にも存在する、と警告した。
AdoptOpenJDKは、プラットフォーム (WinやMac OS X、Linux x86だけでなく、ARM32/64、Win 32、AIX、Linux s390、PPCも) やバージョン/別形 (Eclipse OpenJ9 VM、OpenJDK 8、9、10、11、Project Amberなど) を幅広くサポートし、エコシステム全体を支援し続けます。
結びに、Verburg氏は、コミュニティに対し、AdoptOpenJDKが推進しているこうしたオープンソースプロジェクトにコントリビュートして、Javaの未来に関わってほしいと述べた。
私たちは、すでに数百万ダウンロードを得ており、日々活動している、IBMやレッドハット、Azul、Ocado、SAP、LJC (もちろんAmazonも) といった非常に幅広いコミュニティメンバがいます。 これは、ソフトウェア産業にとって、長期間に渡り重要な共同資産となるプロジェクトであると、人々は思うでしょう。
DevoxxでのGosling氏のCorrettoの紹介に戻ると、Javaのコーヒーをテーマにした歴史に相づちを打っておこう。Caffè correttoはイタリアの飲み物で、1ショットのエスプレッソと少量のお酒で構成されているそうだ。彼はDevoxxの聴衆に、Correttoのオープンソースリリースを見せることができてうれしい、と伝えた。
アマゾンには、Javaを使った長く、深い歴史があります。私たちのような、内部のミッションクリティカルなJavaチームの成果が、全世界で利用できるようになり、私はとてもワクワクしています。
Corretto 8はaws.amazon.com/correttoからダウンロードできる。このページには、サポートされる全プラットフォームでの利用手順一式が掲載されたはじめの一歩を含むドキュメントがある。質問は、stackoverflow、またはTwitterの(@awsopen)からできる。
Rate this Article
- Editor Review
- Chief Editor Action