2022/04/26

AWSのCorrettoとは?特徴や独自パッチについてご紹介します

 
  

AWSとは

Amazon Web Services(AWS)は、アメリカの大手企業「Amazon.com」が提供しているクラウドサービスです。 175を超える製品が提供されており、多種多様なワークロードに対応しています。 日本の他、アメリカや中国、ドイツ、イギリスなど多くの地域にリージョンを展開しており、世界各国に向けた発信が可能です。

AWS Correttoとは

AWS Correttoは、Open Java Development Kit (OpenJDK)の一種です。OpenJDKとしての機能だけでなく、AWSからパフォーマンス向上やセキュリティなどのサポートを受けられます。 現時点で8、11、15の3種類のバージョンがあり、それぞれサポートされている環境や使用できるパッチが異なります。

OpenJDKとは

Open Java Development Kit(OpenJDK)は、アメリカのソフトウェア会社「Oracle」が提供しているJava Platform, Standard Edition(Java SE)のオープンソースです。 Javaを使用したアプリケーション開発をサポートするツールが用意されています。このOpenJDKに、AWSのサポートを足したサービスがCorrettoになります。

AWS Correttoの特徴5つ

この項目では、AWS Correttoの特徴を5つご紹介します。OpenJDKとしての機能に加え、独自のサポートを行うパッチが提供されています。パッチについては、後の項目で詳しく触れていきます。 いずれのバージョンでも基本的な特徴は同じですが、サポート範囲や期間、利用できるパッチなどに違いがあるので、確認しておきましょう。

特徴1:AWSのサポートが受けられる

AWS Correttoは、AWS独自の長期サポート(LTS)を受けられます。 LTSでは、パフォーマンスの向上とセキュリティのアップデートが無償で提供されます。アップデートは原則3カ月ごとにリリースされますが、バグやセキュリティなどの修正は不定期で行われる場合もあります。GitHubでアップデートの確認・入手ができます。 サポート期間は、現時点ではCorretto 8は2026年5月まで、11は2027年9月までとなっています。

特徴2:本番環境で使用できる

AWS Correttoは、本番環境でも使用できます。Correttoは、Java Technical Compatibility Kit(TCK)での検証を通して、Java SEとの互換性が認められています。Amazon社内でも、多くの本番サービスでCorrettoが実行されています。

特徴3:マルチプラットフォームに対応している

AWS Correttoは、マルチプラットフォームに対応しています。クラウド、オンプレミス、ローカルコンピュータで実行できます。OS環境では、Linux、Windows、macに対応しています。この他、Corretto 8および15はDockerでも使用できます。

特徴4:無料で使用できる

AWS Correttoは、無料で使用できます。ダウンロードから使用に至るまで、料金は一切かかりません。制限や有料版の追加機能も存在しないので、使用過程で料金が発生することもありません。

特徴5:他のJDKと互換性がある

AWS Correttoは、他のJDKと互換性を持ちます。 上の項目で、CorrettoはJava SEとの互換性が認められていることをご紹介しました。さらにすべてのJDKと互換性があり、バイナリをインストールすることでCorrettoを適用できます。インストール前の設定もそのまま引き継げます。 ただし、OpenJDK未対応の機能を使用している場合は適用できないので注意しましょう。

AWS Correttoのパッチ

AWS Correttoでは、利便性を高めるパッチが提供されています。 内容としては、セキュリティ修正、パフォーマンス向上、ガベージコレクションおよびメモリ容量の調整、モニタリングなどがあります。新しいバージョンのOpenJDKからバックポートされたものも多くあります。 この項目では、Correttoで適用できるパッチについてご紹介します。現時点では、パッチの大半がCorretto 8専用となっています。

Corretto 8のパッチ

Corretto 8では、約20種類のパッチを適用できます。総数が多いため、ここでは一部を抜粋してご紹介します。すべてのパッチについての詳細は、公式ドキュメントをご覧ください。

メモリ不足の防止

ガベージコレクションの停止によるメモリ不足を防ぎます。 ネイティブセクションの実行に時間がかかると、ガベージコレクションが途中で停止してしまうことがあります。パッチを適用することで待機時間を延長し、中断される可能性を減らせます。

ガベージコレクションのレイテンシー低減

ガベージコレクションのレイテンシーを低減できます。 Parallel型またはCMS型のガベージコレクションで適用できます。ルートスキャンを実行することで、コード処理を一部のみにとどめます。これにより、必要な稼働時間を減らし、高速化できます。

ファイルの変更時間のズレを修正する

ファイルの最終変更時間のズレを修正します。 ファイルの中身が変更されると、その日時が記録されますが、その記録がわずかながらズレてしまう場合があります。これを修正し、より正確な変更時間を取得できるようになります。

RuntimeInvisibleTypeAnnotations属性を修正する

RuntimeInvisibleTypeAnnotations属性が誤って生成されるのを防ぎます。 この属性は、JDKのコンパイラの一つであるjavacによって生成されます。しかし、中身が誤った状態で生成され、Findbugs、JaCoCo、Checker Frameworkなどの解析ツールが正常に動作できなくなることがあります。パッチを適用することで、この問題点を解消できます。

MonitorInUseListsをデフォルトで有効にする

MonitorInUseListsをデフォルトで有効にします。 モニターを処理する時、すべてのモニターに対して実行すると、必要以上の時間がかかってしまう場合があります。MonitorInUseListsを有効にすることで、使用中のモニターのみ処理を行うようにできます。 デフォルトではこれが無効になっていますが、パッチを適用することで有効にできます。

文字列テーブルのクリーンアップ

文字列テーブルが大きくなった時、そのクリーンアップをトリガーします。 クリーンアップを行わずにいると、文字列テーブルが肥大化しメモリ容量を圧迫する可能性があります。パッチを適用すると、文字列テーブルのサイズが大きくなれば自動的にクリーンアップをトリガーするようになり、メモリ容量を節約できます。

Corretto 11のパッチ

Corretto 11では、5種類のパッチを適用できます。 殆どがOpenJDK 12からのバックポートで、readdir_r関数をreaddirに修正するものとなります。この修正は、readdir_r関数がglibc 2.24以上では非推奨となったことによります。 この他、メタデータを更新してAWSをOpenJDKのベンダーとして認識するようにします。

Corretto 15のパッチ

Corretto 15で適用できるパッチは、現在では1種類のみです。11と同様に、メタデータを更新してAWSをOpenJDKのベンダーとして認識するようにします。さらに、問題報告のためのハイパーリンクを追加します。

AWS CorrettoでJavaアプリケーションを開発しよう

この記事では、AWS Correttoについてご紹介しました。 Java SEと互換性を持ち、OpenJDKとしての機能の殆どを備えている他、独自のサポートによってより使いやすいように設計されています。他のJDKからの移植も可能です。さらに、これらの機能をすべて無料で使用できます。 AWS上でJavaアプリケーションの開発をしている、またはこれからしようと考えている方は、一度試してみてはいかがでしょうか。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】