16
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IBM Integration & WebSphereAdvent Calendar 2024

Day 3

WebSphere Liberty/Open Liberty:今年一年の新機能まとめ

Last updated at Posted at 2024-12-02

OSSのJava EE / Jakarta EE / MicroProfileの実行ランタイムであるOpen Liberty,およびその製品版であるWebSphere Libertyは,4週間ごとに新しいFixpackが公開されバージョンが更新されます。ことしは,1月のv24.0.0.1から12月のv24.0.0.12までの12の新しいバージョンが公開されました。

この記事では,今年公開されたFixpackでの新機能をまとめてご紹介します。

Libertyは,継続的シングルストリームで提供されており,メジャーバージョンアップによるFixpackストリームの切り替えはありません。単一のバージョン・ストリームとしてFixpackが提供され続けます。機能追加についても数年の一度のメジャーバージョンアップでとかではなく,それぞれのFixpackごとに,新機能が随時リリースされます。

それでも,ゼロマイグレーション・ポリシーによって,Fixpack適用時のアプリケーションや構成ファイルのマイグレーションは,原則として不要となっています。ただ,このゼロマイグレーション・ポリシーにも例外があり,今年は脆弱性の修正が目的のデフォルトの変更が行われました。

新仕様への対応

Java SE 22対応(v24.0.0.4) / 23対応(v24.0.0.10)

LTSではないJava SE仕様の更新であるJava SE 22/23に,それぞれJava SE仕様の公開直後のLibertyの更新で対応しています。

IBMのOpenJDKディストリビューションであるSemeru Runtimesも,Java 23からは日を置かずに更新されるようになり,新しいJava SE仕様をいち早く試せるようになっています。

MicroProfile Reactive Messaging 3.0対応(v24.0.0.2)

MicroProfile Reactive Messaging 3.0 mpReactiveMessaging-3.0 および MicroProfile Streams Operators 3.0 mpReactiveStreams-3.0 の二つのFeatureがv24.0.0.2で追加されました。

MicroProfile Reactive Messaging 3.0 では,否定応答,エミッター,バックプレッシャーのサポートなど,Libertyが従来提供していたMicroProfile Reactive Messaging 1.0からの多数の新機能と変更が導入されています。また,従来の1.0はJava EEのjavax名前空間で提供されていましたが,3.0はJakarta EE 9以降のjakarta名前空間と互換性があります。

またLibertyではMicroProfile Reactive Messagingで使用するKafkaコネクターを提供し,Kafkaを仲介してメッセージを送受信することができます。

詳細については,v24.0.0.2公開時のBlog日本語英語)を参照ください。

MicroProfile Telemetry 2.0対応(v24.0.0.9)

MicroProfile Telemetry 2.0 (mpTelemetry-2.0) Featureがv24.0.0.9で追加されました。このFeatureでは,OpenTelemetryを使用して標準化された方法でログ,メトリクス,トレースを収集およびエクスポートすることで、Javaアプリケーションの可観測性を向上させます。以前のバージョンのMicroProfile Telemetryは,分散トレースのみを管理できました。

詳細については,v24.0.0.9公開時のBlog日本語英語)を参照ください。

MicroProfile 7.0対応(v24.0.0.12)

8月に公開されたMicroProfile 7.0に対応しました。

MicroProfile 7.0では,v24.0.0.9で対応したMicroProfile Telemetry 2.0のほか,Open API 4.0Rest Client 4.0Fault Tolerance 4.1の更新が含まれています。

また,(おそらくJakarta EE 11仕様の公開の遅れに対応するためですが)特定のバージョンのJakarta EE Core Profileに依存しなくなりました。MicroProfile 7.0は,Jakarta EE 10以降のCore Profileに対応するようになっています。

MicroProfile 7.0の新機能についてはOpenLiberty.ioのBlog(英語)を参照ください。

コンテナ対応の強化

InstantOn対応Featureの追加(v24.0.0.1/24.0.0.6/24.0.0.11)

Liberty InstantOnは,コンテナ環境でLibertyの起動を高速化する機能です。LinuxカーネルのCheckpoint/Restore In Userspace(CRIU)機能を使用して,起動済みのLibertyプロセスの状態をコンテナイメージ内のファイルに保存(Checkpoint)し,ファイルからプロセスを復帰(Restore)することで数十〜数百ミリ秒でのサーバーの起動を可能にします。Nativeアプリケーションにコンパイルする高速起動技術と異なり,InstantOnはJavaの全機能を利用できるという大きなメリットがあります。

InstantOnは,2023年の6月に正式版となり,現在icr.ioで公開されているOpen Libery/WebSpehre Libertyのオフィシャルイメージで利用が可能になっています。

昨年の初期のバージョンではWeb ProfileのAPIを中心とした一部のFeatureのみがInstantOn対応でしたが,今年の更新で何度か利用可能なFeatureが追加されています。

1月のv24.0.0.1では,以下のFeatureが利用可能になりました。

6月のv24.0.0.6では,以下のFeatureが利用可能になりました。

11月のv24.0.0.11では,以下のFeatureが利用可能になりました。

SpringBootアプリケーションのInstantOn対応(v24.0.0.6)

Spring Bootバージョン3.2以上およびSpring Framework 6.1以上は,Coordinated Restore at Checkpoint (CRaC) サポートをふくみ,CRIUをつかった起動の高速化に対応できるようになっています。Libertyでは新たにCoordinated Restore at Checkpoint (CRaC) (crac-1.4) Featureを提供し,Liberty InstantOnとSpring Bootを組合わせることができるようになりました。

たとえばSpring Boot 3.2を使用したアプリケーションをLiberty InstantOnで使用するには,以下のように構成します。なお,Spring Boot 3.xの実行にはJava 17以降のJDK/JREが必要です。

server.xml
<features>
   <feature>springBoot-3.0</feature>
   <feature>servlet-6.0</feature>
   <feature>crac-1.4</feature>
</features>

Spring BootのInstantOn有効化についての詳細な情報は,Liberty Blogの記事(英語)を参照ください。

コンテナイメージの追加(v24.0.0.1)

昨年9月に公開されたLTSのJava SE仕様,Java 21を使用したコンテナイメージが今年1月から追加されました。Java 21を使用したコンテナイメージは,Universal Base Image(UBI)のminimal版が使用されるようになり,使用されているJREも(JDKより)サイズをスリム化した結果,400Mバイト強と従来のイメージよりもサイズが小さくなっています。

% podman images                                                        
REPOSITORY                        TAG                               IMAGE ID      CREATED       SIZE
icr.io/appcafe/websphere-liberty  kernel-java8-ibmjava-ubi          d9cd90e97007  35 hours ago  487 MB
icr.io/appcafe/websphere-liberty  kernel-java8-openj9-ubi           2c2aa97d4152  35 hours ago  545 MB
icr.io/appcafe/websphere-liberty  kernel-java11-openj9-ubi          3f826214acbe  35 hours ago  707 MB
icr.io/appcafe/websphere-liberty  kernel-java17-openj9-ubi          2e316242c4a7  35 hours ago  714 MB
icr.io/appcafe/websphere-liberty  kernel-java21-openj9-ubi-minimal  d3066edad595  35 hours ago  406 MB

サーバー機能の更新

冗長ガーベッジコレクションのデフォルトの有効化(v24.0.0.3)

IBM SDK for Java Technology Edition version 8.x(いわゆるIBM Java 8)を使用している環境,およびIBM Semeru Runtimesを使用している環境で,冗長ガーベッジコレクションの構成をしていない場合,デフォルトで冗長ガーベッジコレクションが記録されるようになりました。

冗長ガーベッジコレクションは,OutOfMemoryErrorをはじめとしたメモリ系の問題の解析にあたって必須の資料です。かならず有効にしておくようにガイドされていましたが,デフォルトで有効になりました。一つのログファイルに1024回分のGCの情報が記録され,ローテートしながら最新10世代のファイルが保存されます。

冗長ガーベッジコレクションの構成が明示的にされている場合には,その設定内容は変更されません。また,HotSpot VMなどを使用している場合は,別途構成を追加して有効にしてください。

MicroProfile Metrics 3.0 および 4.0でのヒストグラムとタイマー メトリックの強化(v24.0.0.7)

MicroProfile Metrics 3.0 および 4.0(javax名前空間に対応したバージョン)で,取得できる情報が追加されました。この追加情報は,MicroProfile Metrics 5.1(jakarta名前空間に対応したバージョン)で取得できるようになったものがバックポートされたものです。

詳細については,v24.0.0.7公開時のBlog日本語英語)を参照ください。

Feature指定時のバージョンレス機能(v24.0.0.8)

Java EE仕様やJakarta EE仕様は,それぞれ多くの仕様の集合として定義されており,個々の仕様ごとに独立したバージョン番号がつけられています。原則としてLibertyでは,異なるJava EE/Jakarta EEバージョンに属する仕様を混在させることはできません。

Servlet JSP CDI JAX-RS
Java EE 7 servlet-3.1 jsp-2.3 cdi-1.2 jaxrs-2.0
Java EE 8 servlet-4.0 jsp-2.3 cdi-2.0 jaxrs-2.1
Jakarta EE 9.1 servlet-5.0 pages-3.0 cdi-3.0 restfulWS-3.0
Jakarta EE 10 servlet-6.0 pages-3.1 cdi-4.0 restfulWS-3.1

例えばJava EE 8に属するservlet-4.0jsp-2.3と組合わせることができるのは,同じJava EE 8に属するcdi-2.0jaxrs-2.1であり,Jakarta EE 10に属するcdi-4.0やJava EE 7に属するjaxrs-2.0と組み合わせることはできません。

この正しいバージョンの組み合わせを見つけるために,詳細なドキュメントの調査が毎回必要となっていたのですが,この負担を軽減するため,v24.0.0.8からバージョンレス機能をつかった構成が可能になりました。<platform>javaee-8.0</platform>のような指定をすれば,個々の仕様ごとにバージョンを記入する必要がなくなります。

server.xml
<!-- Enable features -->
<featureManager>
    <platform>javaee-8.0</platform>
    <feature>servlet</feature>
    <feature>jsp</feature>
    <feature>cdi</feature>
    <feature>jaxrs</feature>
</featureManager>

また,MicroProfileについても,同様の記述が可能になります。

server.xml
<!-- Enable features -->
<featureManager>
    <platform>microProfile-5.0</platform>
    <feature>mpHealth</feature>
    <feature>mpMetrics</feature>
</featureManager>

バージョンレスFeatureについては,v24.0.0.9やv24.0.0.10でも,機能改善(バージョンを省略できるFeatureの追加)が行われています。

セキュリティ機能の更新

OpenID Connectでバックチャネル・ログアウトのサポート(v24.0.0.3)

Open LibertyのOpenID Connectクライアントとサーバーがバックチャネルログアウトに対応しました。バックチャネルログアウトは,OpenID ConnectサーバーがユーザーのログアウトをOpenID Connectクライアントに直接通知し,各OpenID Connectクライアントもローカルでユーザーをログアウトできるようにします。

詳細については,v24.0.0.3公開時のBlog日本語英語)を参照ください。

不要なRESTハンドラーレコードの生成を避けるためのAudit 2.0(v24.0.0.8)

v24.0.0.8からaudit-2.0 Featureが追加されました。このFeatureはaudit-1.0と同様の監査レコードを提供しますが,RESTハンドラ・アプリケーションのレコードは生成しません。RESTハンドラ・アプリケーションを使用していないユーザー向けに提供されています。

サードパーティCookieをブロックする制限を緩和するCHIPSへの対応(v24.0.0.9)

Google Chromeなどのブラウザでは,段階的にサードパーティCookieを廃止する方針を打ち出しています。これを緩和する方法としてCHIPS(独立したパーティション状態を持つCookie)という手法が提案されています。

Libertyが利用するセッションIDやLTPA,JWTセキュリティのCookieについてCHIPS対応する手段がv24.0.0.9から提供されています。

詳細については,v24.0.0.9公開時のBlog日本語英語)を参照ください。

サードパーティCookieの送信を制御するSameSite属性を設定する手段の追加(v24.0.0.12)

サードパーティCookieの送信を制御するCookieヘッダーの属性として,SameSite属性が追加されています。最近のGoogle Chromeの更新で,このSameSite属性がついていない場合のデフォルトの動作が変更され,いままで送信されていたサードパーティCookieが送信されなくなるケースが出てきました。

現在のServlet APIで提供されているCookieクラスでは,SameSite属性を扱うことができないので,アプリケーションでこの属性を追加することは容易ではありません。そのため,Libertyの構成として,CookieにSameSite属性を追加する手段が提供されました。またLiberty自身が送信するセッションIDやLTPA/JWTセキュリティのCookieにもSameSite属性を設定する構成ができるようになりました。

詳細については,OpenLiberty.ioのBlog(英文)を参照してください。

WASからのSSL接続でホスト名チェックがデフォルトで有効に(v24.0.0.9)

従来型のWebSphere Application ServerやLibertyは,外部へのSSL接続する際のサーバー証明書検証において,サーバー名の検証を行っていませんでした。これは脆弱性であるとの指摘を受け,CVE番号が割り当てられました。この対応のため,デフォルトでサーバー名を検証するように修正されました。

これによりLibertyがクライアントとなり別のサーバーにSSL/TLS接続を行っている環境で,SSL/TLS接続する際に指定したホスト名が,サーバー側が使用している証明書のCN(Common Name)やSAN(Subject Alternative Name)のいずれとも一致していないと,接続に失敗するようになります。

対処方法などについては,この修正について解説したTechnical Flashを参照ください。

Libertyでは,ゼロマイグレーション・ポリシーによって原則としてデフォルト値などは変更されません。ですが,脆弱性の修正などが目的の場合は例外となります。このような変更は,たとえばWebSphere LibertyのFixpackのページではKnown Side Effectsとして紹介されています。今回の件は,3年ぶり3つめのKnown Side Effectsの追加となります。

その他の機能

配布パッケージに署名ファイル(pem)を添付(v24.0.0.1)

Open Libertyの配布パッケージに,配布アーカイブの信頼性と整合性を確認するための署名ファイル(pemファイル)が添付されるようになりました。こちらのページの手順で,ダウンロードしたパッケージを確認することができます。

ガイドの拡充

Open Libertyのサイトでは,各種シナリオにそった「実際に試せるガイド」を公開しています。このガイドにたいしても,今年は多くのコンテンツが追加されました。

また,7月にはcognitiveclass.aiサイトで,Open Libertyを使用したクラウドネイティブJavaアプリケーション開発の基本コースが公開されています。

まとめ:2025年に向けて

以上が,2024年に公開されたOpen Liberty/WebSphere Libertyでの新機能となります。

また2025年にも,米国時間1月28日公開予定のv25.0.0.1から12回のFixpack公開が予定されています。来年は延期されていたJakarta EE 11の公開,MicroProfile仕様のさらなる更新,次期LTSであるJava 25の公開など,大型の更新がいくつも予定されています。

これからも,Libertyは業界最速で新仕様への対応をすすめていくとともに,ゼロマイグレーション・ポリシーによって,既存のアプリケーションをより長くお使いいただけるランタイムとして,進化を続けていきます。

16
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?