orangeitems’s diary

クラウドではたらくエンジニアの日々の感想です。

OpenJDK完全互換、Amazon Correttoは信用できるのか

f:id:orangeitems:20181115101700j:plain

 

AWSが、OracleJDK互換提供に手を挙げる

OracleJDKはバージョン11以降完全に有償サブスクリプションモデルに契約が変更され、バージョン8は2019年1月でOracleのサポートが終了します。また、9や10はすでにサポート切れです。かたや、無償版と言われるOpenJDKはサポート期間が半年しかないとされ、法人を中心にJavaとどうやってつきあっていくかが大きな課題となっています。

 

この状況で、AWSがOpenJDK互換、しかも長期サポート(LTS)を約束するAmazon Correttoを出すというニュースが飛び込んできました。

 

dev.classmethod.jp

「無償」かつ「AWS以外でも使えるマルチプラットフォーム」かつ「LTS(Long-Term Support)」つきのOpenJDKをAWSが提供するとのことです。
現在はプレビュー版ですが、対応プラットフォームには、現在、Amazon Linux 2以外に、Microsoft Windows、macOS、Dockerイメージが用意されており、正式リリース時には、UbuntuやRed Hat Enterprise Linuxも対応予定とのこと。
まぁ、もうJavaいれるときは全部これでええやん的な気持ちになる、ごついアナウンスです。

 

少なくともRed HatやRed Hat互換OSはRed HatがリリースするOpenJDKでいいんじゃないのかなあと思いつつ、WindowsやmacOSが含まれているところが戦略的に感じます。

 

AWSの真意を原文から読み砕く

さて、おいしい話には裏があるのが常ですが、今回のCorrettoは本当に信用できるのでしょうか。AWSが出している限りのドキュメントを日本語で確認していきたいと思います。

 

概要

aws.amazon.com

 

見出し

Amazon Correttoは、Open Java Development Kit(OpenJDK)の無償、マルチプラットフォーム、プロダクション対応の配布物です。Correttoには、パフォーマンスの向上とセキュリティの修正を含む長期サポートが付属しています。AmazonはCorrettoを何千ものプロダクションサービスで内部的に運営しており、CorrettoはJava SE標準と互換性があると認定されています。Correttoを使用すると、Amazon Linux 2、Windows、macOSなどの一般的なオペレーティングシステムでJavaアプリケーションを開発して実行できます。Amazon Corretto 8はプレビュー版です。

こちらは聞いている通りの内容です。

 

利点

Amazonによる支援

Amazon Correttoには、Amazon から無料で長期間サポートが提供されるため、必要なときにのみバージョンをアップグレードできます。AmazonはCorrettoに取り組んでおり、何千ものプロダクションサービスで内部的に運用しています。

プロダクションレディ

Amazon CorrettoはJava SE標準を満たすことが認定されており、多くのJava SEディストリビューションの代替として使用できます。Amazonは、エンタープライズアプリケーション開発に不可欠なパフォーマンスの向上とバグ修正を含む四半期のアップデートをリリースする予定です。

マルチプラットフォームのサポート

Amazon Correttoでは、クラウド、閉域、ローカルマシンで同じ環境を実行できます。プレビュー中も、CorrettoはAmazon Linux、Windows、macOS、Dockerをサポートし、一般から利用できます。

コストがかからない

Amazon Correttoは無料でダウンロードして使用できます。追加の有料機能や制限はありません。

Java SE標準を満たすことが認定される、とは何かを確認したいと思います。

アップデートは四半期ごととのこと。

また、プレビュー中は、Red Hatを外してあるあたりが戦略的に思います。

 

FAQs

aws.amazon.com

 

一般

Q:Amazon Correttoとは何ですか?

A:CorrettoはAmazonからの長期サポートを受けたOpen Java Development Kit(OpenJDK)のビルドです。CorrettoはJava Technical Compatibility Kit(TCK)を使用してJava SE標準を満たしていることを証明しており、Linux、Windows、およびMacOSで利用できます。これにはAmazonのパッチが含まれており、独自のサービスの実行に役立つことが証明されています。

 

Q:なぜCorrettoを使うべきですか?

A:CorrettoはOpenJDKの信頼できるビルドであり、長期間にわたるサポートを無償で提供します。AmazonはCorrettoを数千の制作サービスで社内で運用しています。Correttoが行うすべての変更は、OpenJDKを実行している問題を修正または緩和します。Amazonはまた、定期的な四半期サイクルの外で、利用可能ですぐに使用できるようになると、緊急の修正(セキュリティを含む)を適用する予定です。

 

Q:CorrettoとOpenJDKの違いは何ですか?

A:CorrettoはAmazonが含まれているOpen JDKのディストリビューションであり、まだ対応するOpenJDKアップデートプロジェクトに統合されていません。私たちはOpenJDKのパフォーマンスや安定性を向上させるパッチに焦点を当てます.OpenJDKは、大規模なサービスを実行するAmazonの観測に基づいて選択されています。

 

Q:AmazonはCorrettoにどのようなパッチを含めるつもりですか?

A:セキュリティ修正、頻繁に使用される機能の高速化などのパフォーマンス強化、ガベージコレクションのスケジューリング、メモリー不足の防止、監視機能、レポート機能、スレッド管理機能の改善がパッチに含まれます。

 

Q:Correttoの使用に伴う費用はありますか?

A:Correttoは無料でオープンソースライセンスでAmazonから配布されています。これは、クラスパス例外(CPLを伴うGPLv2)とともに GNU Public Licenseバージョン2の条件の下でライセンスされています。Amazonは、その使用または配布に料金を請求しません。

 

Q:Correttoの長期サポートには何が含まれていますか?

A:Amazonは、少なくとも2023年6月までCorretto 8のセキュリティアップデートを提供します。アップデートは四半期ごとにリリースされる予定です。OpenJDK 11に対応するCorretto 11は、2019年前半に利用可能となります。Amazonは、少なくとも2024年8月まで、Corretto 11を四半期ごとに更新する予定です。

まずはバージョン8に焦点を当てていることがわかります。2019年1月の期限切れまでにリリースを間に合わせてくる雰囲気ではあります。また、11については来年前半とのこと。とりあえずはOpenJDK 11を利用して開発し、Corretto 11を待てといったところでしょうか。

Linuxをサポートと言いつつ、Amazon Linux 2を前面に押し出しているところにAWSらしさが現れていると思います。

また、ライセンスが、クラスパス例外が含まれているGPLv2ということで、ここは安心材料かと思います。

 

Amazon Correttoを使用する

Q:Correttoを他のJDKの完全互換として使用できますか?

A:Correttoは、OpenJDKで利用できない機能(例:Java Flight Recorder)を使用していない限り、すべてのJava SEディストリビューションの完全互換として設計されています。Correttoバイナリがホストにインストールされ、Javaアプリケーションを実行するために正しく呼び出されると(Linux のalternativesコマンドを使用するなど)、既存のコマンドラインオプション、チューニングパラメータ、監視、その他のものは以前と同じように動作します。

 

Q:AWSでCorrettoを使用するにはどうしたらいいですか?

A:
Amazon Linux 2 - Amazon Linux 2 AMIを起動し、Corretto RPMをインストールします。
Docker - Docker HubからECRにイメージ(Amazon Linux 2ベース)をインストールします。
Windows - Windows AMIを起動し、Corretto Windowsパッケージをインストールします。

 

Q:AWS以外でCorrettoを使用するにはどうすればよいですか?

A:

Amazon Linux 2 - マシン上の端末を開き、Corretto RPMをインストールします。
Docker - Docker Hubから画像をダウンロードして実行します。
Windows - Corretto Windowsパッケージをダウンロードしてインストールします。
macOS - Corretto macOSパッケージをダウンロードしてインストールします。

 

Q:Correttoはどのオペレーティングシステムをサポートしていますか?

A:プレビュー中、Correttoのインストールパッケージは、Amazon Linux 2、Windows、およびmacOS用にAmazonによって配布されます。さらに、Dockerイメージ(Amazon Linux 2ベース)はDocker Hubでホストされています。

Windowsビルドは、バージョン7,10、Server 2008、Server 2012、およびServer 2016でサポートされています。

Mac OS Xのビルドは、10.10(Yosemite)以降でサポートされています。

 技術的にはいたってシンプルで、特にコメントはありません。

 

 

ライセンスとオープンソース

Q:Correttoのライセンス条項は何ですか?

A:CorrettoはOpenJDKと同じオープンソースライセンスでリリースされています。OpenJDKはGNU Public Licenseバージョン2のClass Path Exception(GPLv2 with CPE)でライセンスされています。

 

Q:AmazonはOpenJDKにどのように貢献していますか?

A:Amazonは2017年にOpenJDKに貢献し始めました。私たちは、数と複雑さの両方で寄付を増やす予定です。

 

Q:Correttoにはどのように貢献できますか?

A:AmazonはCorrettoにコードを入手する方法としてOpenJDKプロジェクトへの貢献を奨励しています。このようにして、OpenJDKコミュニティ全体があなたの変更から利益を得ます。あなたの貢献がビルドロジックのようなCorrettoに特有のものである場合、コードはGitHubで利用できます。GitHubでは、問題を確認し、要求を引き出す予定です。

Amazon Linuxと同じような戦略を取って、オープンソースとコードレベルで向き合って行きたいというところでしょうか。Amazon社内のシステム群でもJavaをたくさん使っているので、これを無償で取り組むことにメリットがあるというように読めます。

 

考察:Correttoとどう向き合うか

Amazon Linux 2も、Corretto同様、AWS以外の環境にも無償で入れられるようになっていますから、Javaも同様の戦略だと言えます。

 

Amazon Linux 2

Amazon Linux 2 は、Amazon Elastic Compute Cloud (Amazon EC2) で使用する Amazon Machine Image (AMI) として提供されます。KVM (Kernel-based Virtual Machine)、Oracle VM VirtualBox、Microsoft Hyper-V、および VMware ESXi の Docker コンテナイメージおよび仮想マシンイメージとしても使用できます。仮想マシンイメージは、オンプレミスでのデプロイとテストに使用できます。Amazon Linux 2 では Amazon EC2 の最新機能がサポートされており、AWS と簡単に統合できるパッケージが含まれています。Amazon Linux 2 のセキュリティアップデートとメンテナンスアップデートは継続的に提供されます。

 

では、世の中のSI案件で、積極的に他環境でAmazon Linux 2が使われているかというとそうではありません。

 

japan.zdnet.com

 

世界で見るとubuntuが大変人気のようなのですね。日本だとまた事情が違っていて、少なくとも私の経験では「有償であれはRed Hat Enterprize Linux、無償だとCentOS」というのが暗黙の了解です。

この記事内でも、AWSであってもUbuntuが断然トップだと記載されておりました。

 

個人的な意見としては、AWSによるベンダーロックインがJavaというアプリケーションの中核でも進んでしまうことの解釈が問題の焦点だと思います。

 

www.itmedia.co.jp

同社の今野芳弘パートナーアライアンス本部長

「(中略)もしベンダーロックインがもたらすリスクに対する懸念があるとすれば、そこはぜひともAWSを信用していただきたい」

 

信用する、しないの問題になるので、「信用する」とすれば使うでしょうし、「信用しない」となれば使わない、ということです。ロックインしようと思えばロックインできるけれども、それはしないので信用してほしい、ということです。

AWSを主業とするベンダーが、「Amazon Linux 2、Correttoはタダで長期サポート!、これはすごい!」と強くポジティブに反応するのはわかるのですが、第三者的な立場からすると、そうはいかないよなあというのが本音です。

経営的にAWSと強くコミットすることを決断した企業は、それはもう使いに使うと思いますしそのような企業も増えているのでAWSは成長しています。一方で「そうではない」というのも一理あると思いますし、これは一概には言えない話です。

 

・・ということで、私の予想としては、今のAmazon Linux 2のように、CorrettoはAWSに限定して使われると思っています。予想が当たるか外れるかはともかく、客観的な評価視点は持ち続けるべきだとクラウドの世界にいて思う次第です。