Open Liberty / WebSphere Liberty最新情報：2023年3月〜2023年6月

Open Libertyおよび製品版のWebSphere Libertyについて，2023年3月にリリースされた22.0.0.3から2023年6月の23.0.0.5までで追加された新機能について紹介します。また，これ以外にも多くのバグやCVE脆弱性が修正されています。

前回の記事はこちらです→　[Liberty最新情報：2022年12月〜2023年2月](https://qiita.com/TTakakiyo/items/ddc61fdf1acb3a5a0d4f)

# API

## Jakarta EE 10対応

2022年9月にリリースされたJakarta EE 10に，3月にリリースされた23.0.0.3で対応しました。

Jakarta EE 10は，エンタープライズJavaの仕様策定がOracle主導のJCPからコミュニティベースのEclipse Foundation参加のJakarta EEプロジェクトに移管されてから，はじめて新機能が追加されたバージョンです。従来から提供されているJakarta EE Platform，Web Profileにくわえ，あらたにCore Profileが追加されました。

Libertyでは，基本的にOptionalの仕様を含めてJakarta EE Platform 10の全ての仕様に対応しています。「Debugging Support for Other Languages」仕様は，追加のFeatureなしで使用可能です。「Transactions」仕様は，トランザクションの管理が可能なFeatureが有効になると，自動的に有効になります。

### Jakarta EE Core Profile 10

| 仕様名 | 更新 | LibertyでのFeature名 |
|:--|:--|:--|
|[Context and Dependency Injection 4.0 Lite](https://jakarta.ee/specifications/cdi/4.0/) |新規追加 |`cdi-4.0` |
|[JSON Binding 3.0](https://jakarta.ee/specifications/jsonb/3.0/) |メジャーVup |`jsonb-3.0` |
|[RESTful Web Services 3.1](https://jakarta.ee/specifications/restful-ws/3.1/) |マイナーVup |`restfulWS-3.1`, `restfulWSClient-3.1` |
|[JSON Processing 2.1](https://jakarta.ee/specifications/jsonp/2.1/) |マイナーVup |`jsonp-2.1` |
|[Annotations 2.1](https://jakarta.ee/specifications/annotations/2.1/) & [Interceptors 2.1](https://jakarta.ee/specifications/interceptors/2.1/) |マイナーVup |`cdi-4.0` |
|[Dependency Injection 2.0](https://jakarta.ee/specifications/dependency-injection/2.0/) |変更なし |`cdi-4.0` |

### Jakarta EE Web Profile 10

| 仕様名 | 更新 | LibertyでのFeature名 |
|:--|:--|:--|
|[Jakarta EE Core Profile 10](https://jakarta.ee/specifications/coreprofile/10/) |新規追加 |- |
|[Authentication 3.0](https://jakarta.ee/specifications/authentication/3.0/) |メジャーVup |`appAuthentication-3.0` |
|[Context and Dependency Injection 4.0](https://jakarta.ee/specifications/cdi/4.0/) |メジャーVup |`cdi-4.0` |
|[Concurrency 3.0](https://jakarta.ee/specifications/concurrency/3.0/) |メジャーVup |`concurrent-3.0` |
|[Expression Language 5.0](https://jakarta.ee/specifications/expression-language/5.0/) |メジャーVup |`expressionLanguage-5.0` |
|[Faces 4.0](https://jakarta.ee/specifications/faces/4.0/) |メジャーVup |`faces-4.0` |
|[Security 3.0](https://jakarta.ee/specifications/security/3.0/) |メジャーVup |`appSecurity-5.0` |
|[Servlet 6.0](https://jakarta.ee/specifications/servlet/6.0/) |メジャーVup |`servlet-6.0` |
|[Standard Tag Library 3.0](https://jakarta.ee/specifications/tags/3.0/) |メジャーVup |`pages-3.1` |
|[Persistence 3.1](https://jakarta.ee/specifications/persistence/3.1/) |マイナーVup |`persistence-3.1` |
|[Server Pages 3.1](https://jakarta.ee/specifications/pages/3.1/) |マイナーVup |`pages-3.1` |
|[WebSocket 2.1](https://jakarta.ee/specifications/websocket/2.1/) |マイナーVup |`websocket-2.1` |
|[Bean Validation 3.0](https://jakarta.ee/specifications/bean-validation/3.0/) |変更なし |`beanValidation-3.0` |
|[Debugging Support for Other Languages 2.0](https://jakarta.ee/specifications/debugging/2.0/) |変更なし |- |
|[Enterprise Beans 4.0 Lite](https://jakarta.ee/specifications/enterprise-beans/4.0/) |変更なし |`enterpriseBeansLite-4.0` |
|[Managed Beans 2.0](https://jakarta.ee/specifications/managedbeans/2.0/) |変更なし |`managedBeans-2.0` |
|[Transactions 2.0](https://jakarta.ee/specifications/transactions/2.0/) |変更なし |- |

### Jakarta EE Platform 10

| 仕様名 | 更新 | LibertyでのFeature名 |
|:--|:--|:--|
|[Jakarta EE Web Profile 10](https://jakarta.ee/specifications/webprofile/10/) | |- |
|[Authorization 2.1](https://jakarta.ee/specifications/authorization/2.1/) |マイナーVup |`appAuthorization-2.1` |
|[Activation 2.1](https://jakarta.ee/specifications/activation/2.1/) |マイナーVup |`mail-2.1` |
|[Batch 2.1](https://jakarta.ee/specifications/batch/2.1/) |マイナーVup |`batch-2.1` |
|[Connectors 2.1](https://jakarta.ee/specifications/connectors/2.1/) |マイナーVup |`connectors-2.1` |
|[Mail 2.1](https://jakarta.ee/specifications/mail/2.1/) |マイナーVup |`mail-2.1` |
|[Messaging 3.1](https://jakarta.ee/specifications/messaging/3.1/) |マイナーVup |`messaging-3.1` |
|[Enterprise Beans 4.0]() |変更なし |`enterpriseBeans-4.0` |
|[XML Binding 4.0](https://jakarta.ee/specifications/xml-binding/4.0/) (optional) |メジャーVup |`xmlBinding-4.0` |
|[XML Web Services 4.0](https://jakarta.ee/specifications/xml-web-services/4.0/) (optional) |メジャーVup |`xmlWS-4.0` |

## Java SE 20対応

Java SE 20に，2023年3月にリリースされた23.0.0.3で対応しました。

# ランタイム

## Liberty InstantOn正式版公開

2023年6月に公開された23.0.0.6から，Liberty InstantOnが正式にサポートされるようになりました。

Liberty InstantOnを使用すると，スループット，メモリ，開発と実稼働の同等性，またはJava言語機能を損なうことなく，アプリケーションを1秒未満，ミリ秒単位の時間で起動できます。

LinuxカーネルのCheckpoint/Restore In Userspace ([CRIU](https://criu.org/)) 機能を使用して，起動後の初期化が終わったサーバープロセスをCheckpointとしてファイルに記録し，そこからプロセスをRestoreすることで高速にアプリケーションサーバーを起動します。

6月時点では，Jakarta EE Web Profile 8.0以降，MicroProfile 4.1以降，および他のいくつかのLiberty Featureをサポートしています。

使用方法については，[OpenLiberty.io上の文章](https://openliberty.io/ja/blog/2023/06/29/rapid-startup-instanton.html)を参照してください。

# 開発ツール

## Liberty Tools正式版公開

コミュニティ・プレビューとして公開されていた，IDE上の開発者ツール，Liberty Toolsが2023年6月から正式版として公開されました。Liberty Toolsは，Visual Studio Code，IntelliJ IDEAおよびEclipse IDEをサポートし，これらのIDE上でLibertyアプリケーションの開発を強力にサポートします。

# パッケージング

## ARM64アーキテクチャーのコンテナイメージの追加

IBM Container Registry（ICR）では，従来からAMD64，PPC64LEおよびS390Xアーキテクチャーの，Open LibertyおよびWebSphere Libertyのコンテナイメージが提供され，4週間ごとに更新されていました。

2023年4月の22.0.0.4から，ARM64アーキテクチャーのイメージの提供も開始されました。Apple Silicon Mシリーズを搭載したmaxOSやAWS Gravitonなど，ARMベースのCPUで実行されるコンテナ環境で，ネイティブ実行できます。

Open Libertyで提供されるコンテナイメージについては，[OpenLiberty.io上のドキュメント](https://openliberty.io/docs/latest/container-images.html)を，WebSphere Libertyで提供されているコンテナイメージについては[WebSphere Application Server Libertyのドキュメント](https://www.ibm.com/docs/ja/was-liberty/base?topic=images-liberty-container)を参照してください。

# ドキュメント

## OpenLiberty.ioのGuideの更新

OpenLiberty.io上では，[ユーザーがLibertyの利用方法を学習できるガイド](https://openliberty.io/guides/)をトピックごとに多数公開しています。2023年5月に，これらのガイドがJakarta EE 10およびMicroProfile 6に対応したガイドにアップデートされました。