Red Hat で Solution Architect として OpenJDK を担当している伊藤ちひろ(@chiroito)です。
この記事は、Red Hat Developerのブログ記事、Introducing the Red Hat build of the OpenJDK Universal Base Images—now in Red Hat Enterprise Linux 8.2 | Red Hat Developer の翻訳記事です。
最近リリースされたRed Hat Enterprise Linux 8.2では、OpenJDK Universal Base Imagesの最初のRed Hatビルドも追加されました。OpenJDK 8およびOpenJDK 11用のこれらのGA(General Availability)イメージは、コンテナ内で実行されるJavaアプリケーションを安全かつ安定的にテストされた方法で開発したいと考えている人にとって、新たな開始地点となります。
この記事では、新しいOpenJDK Universal Base Imagesを紹介し、Java開発者にとってのメリットを説明します。その前に、一般的なUBIについて知っていることを簡単におさらいしましょう。
Universal Base Imagesについて
Red Hat Universal Base Images (UBIs) は:
OCI に準拠したコンテナベースのオペレーティングシステムイメージで、自由に再配布可能な補完的なランタイム言語とパッケージを備えています。これまでのベースイメージと同様に、Red Hat Enterprise Linux (RHEL)の一部から構築されています。UBI イメージは Red Hat コンテナカタログから入手でき、どこでもビルドしてデプロイできます。
言い換えれば、UBIは、アプリケーション開発者が、安全で安定した移植しやすいコンテナの世界に到達するのを助けるものです。これらのイメージは、Podman/BuildahやDockerなどのよく知られたツールを使ってアクセスできます。また、Red Hat Universal Base Imagesでは、Red Hat OpenShiftやRed Hat Enterprise Linuxでサポートされているエンタープライズ品質の小さな基盤の上に、ユーザが独自のアプリケーションを構築して配布できます。
Red HatがビルドしたOpenJDK
OpenJDKのRed Hatビルドは、アップストリームのOpenJDK 8uとOpenJDK 11uのコミュニティ主導のプロジェクトをベースにしています。Red Hatは、両プロジェクトに重要な貢献者を提供し、Red Hatのビルドに新しい機能を追加しています。
このバージョンには
- 超低停止時間のガベージ・コレクタ「Shenandoah」を搭載。
- RPM、MSIインストーラ、およびZIPバージョンを含む、いくつかのインストールオプション。
- Java Web Startのサポート(Windowsのみ、Linuxの場合はRed Hat Enterprise LinuxのRPMを使用してください)。
Red HatビルドのOpenJDKは、セキュリティやその他のバグフィックスの強化のため、少なくとも四半期に一度は更新されます。Red Hat は、OpenJDK の主要バージョンに対して、規定の期間のサポートとメンテナンスを提供しています。今回のケースでは、バージョン8は2026年6月まで、バージョン11は2024年10月までの長期サポート(LTS)バージョンを提供しています。(OpenJDK ライフサイクルとサポートポリシーもご参照ください。)
詳細については、Red Hat Ecosystem Catalog の新しいイメージをご覧ください。
OpenJDK UBIイメージ入門
OpenJDK UBIイメージには、アプリケーションのJARを自動的に検出してJavaを起動するデフォルトの起動スクリプトがあります。このスクリプトの動作は、環境変数を使ってカスタマイズできます。詳しくは、コンテナ内の/help.mdをご覧ください。
一方で、OpenJDK 11 UBI8 Imageにtestubi.jarというアプリケーションを追加するDockerfileの例を簡単に紹介します。
FROM registry.access.redhat.com/ubi8/openjdk-11 COPY target/testubi.jar /deployments/testubi.jar
Universal Base ImageのEULAを拡張
2019年5月にユニバーサルベースイメージを導入した際、エンドユーザー使用許諾契約書(EULA)を盛り込みました。これにより、Red Hat パートナーは相当数の RHEL パッケージを自由に使用し、再配布できるようになりました。これは、Red Hat と非 Red Hat の両方のプラットフォームに展開できます。この契約により、開発者は安全でセキュア、かつ移植が容易なコンテナベースのソフトウェアを構築し、どこにでも展開できるようになりました。いただいたご意見は圧倒的にポジティブなものばかりで、感謝しています。また、より多くのものを必要とされていることも分かりましたので、お客様向けのパッケージセットを拡充しました。
Red Hat Partner Connect プログラムのアプリケーション開発者は、Red Hat Enterprise Linux (RHEL) のユーザスペースパッケージ (非カーネル) のフルセットからコンテナアプリを構築し、選択したコンテナレジストリを通じて再配布できるようになりました。この拡張機能により、UBI のみの場合と比べて利用可能なパッケージの数が約 3 倍になります。
こちらもご覧下さい:Red Hat simplifies container development and redistribution of Red Hat Enterprise Linux packages.
結論
コンテナでJavaアプリケーションを開発したいと考えており、さらにセキュリティ、信頼性、安定性の面で基盤となるベースを信頼できるようにしたいと考えているなら、OpenJDK UBI8イメージは、あなたが求めているソリューションになるかもしれません。ハイブリッドクラウドでコンテナ型のJavaアプリケーションを構築するために、新しいOpenJDK Universal Base Imagesを試してみてください。
今後数週間は、このアップデートを継続し、OpenJDK UBIでの作業についてより詳細に紹介していきます。それには、OpenJDK UBI8のコンテナ・イメージを扱う方法についてのより多くの例が含まれます。ご期待ください。