Jakarta EE 10 変更内容総まとめ


はじめに

2022年1Q(予定) 予定の Jakarta EE 10 変更内容の総括になります。

Jakarta EE となって初のまともな機能追加リリースです。今までの流れを簡単に振り返ってみましょう。

2019年09月に Java EE から Jakarta EE となり、移管後初のリリースが Jakarta EE8 でした。中身としては Java EE そのままです。

続く2020年11月 にリリースされた Jakarta EE8 では、著作権問題で、javax. 名前空間を使った変更が行えないこととなったため、名前空間が javax. から jakarta. へビックバン的に変更されました。このリリースは、機能リリースではなく、名前空間のみの変更リリースに留まりました。

その後、2021年05月 に Java11での動作の問題が修正された Jakarta EE 9.1 がリリースされました。

ということで、Jakarta EE 10 は、Jakarta となってから初の、純粋な機能リリースになります。


Jakarta EE 10 全体としては、以下の対応が含まれます。

  • JPMS(Java Platform Module System) 対応として module-info.java の追加
  • 対応 Java バージョンが Java 11 以上となる
  • CDI 対応強化


2022年11月追記

Jakarta EE 10 対応の Payara 6 が出たので、以下のスタータに反映しましたので、合わせて参考にしてください。

github.com


それぞれの仕様の変更を以下に紹介します。


Jakarta Contexts and Dependency Injection 3.0 -> 4.0

Jakarta EE 10 仕様の中で、最も大きな変更が行われたのが CDI 4.0 になるでしょう。と言っても、通常利用に際しては特に今まで通りです。

マイクロサービス化の波を受け、ランタイム指向からビルドタイム指向に切り替えることで、アプリケーション起動時のオーバーヘッドを減らす試みが業界で優位になっています。

CDI 4.0 は、CDI Full と CDI Lite という2つの仕様に分割されました。CDI Lite は CDI Full のサブセットであり、機能を限定したビルドタイム指向の仕様になります。

提供される Jar は単一の Jar となるため、現在のところは特に違いを意識する必要はないでしょう。

地味に嬉しい変更としては、EJBの @Startup に該当する Startup イベントクラスが追加されたことで、起動時の初期化処理がやりやすくなりました(背景としては、こちらも「ビルドタイム指向」の場合にコンテナ初期化イベントが意味をなさなくなったことが契機になります)。

その他の変更内容は以下を参照してください。

blog1.mammb.com


Jakarta Persistence 3.0 -> 3.1

大きな変更はありません。

GenerationType.UUID が追加され、エンティティIDとしてUUIDの自動生成が可能となった点は押さえておくべきでしょう。

その他、 java.time.* 系のサポートも追加されています。

詳細は以下を参照してください。

blog1.mammb.com


Jakarta Annotations 2.0 -> 2.1

全体で共通して利用するアノテーションを定義する本仕様ですが、軽微な変更があります。

中でも、jakarta.annotation.Nonnull Nullable が追加されたことは押さえておきたいポイントです。

詳細は以下を参照してください。

blog1.mammb.com


Jakarta Expression Language 4.0 -> 5.0

大きな変更はありません。

インターフェースのデフォルトメソッドに EL式でプロパティアクセス可能となった点は嬉しい変更になるでしょう。

詳細は以下を参照してください。

blog1.mammb.com


Jakarta Faces 3.0 -> 4.0

毎回多くの機能追加が行われる Faces です。

新しいスコープアノテーション @ClientWindowScoped が追加されたことが特筆すべき点でしょうか。ウインドウ(タブ)別のスコープ管理となります。

また、拡張子(.xhtml)無しの自動マッピングも追加されています。

その他、XML ネームスペースに URN を使うようになったので注意が必要です。

詳細は以下を参照してください。

blog1.mammb.com


Jakarta JSON Binding 2.0 -> 3.0

@JsonbCreator まわりが強化されている他、細かな変更があります。

詳細は以下を参照してください。

blog1.mammb.com


Jakarta JSON Processing 2.0 -> 2.1

細かな修正のみです。直接利用しているケースも少ないと思うので、気にしなくても良いでしょう。

詳細は以下を参照してください。

blog1.mammb.com


Jakarta Standard Tag Library 2.0 -> 3.0

大きな変更はないのですが、Jakarta Faces と同様に、XML ネームスペースに URN を使うようになったので注意してください。

詳細は以下を参照してください。

blog1.mammb.com


Jakarta Batch 2.0 -> 2.1

CDI連携が強化されています(開発チームとしては、依存を少なくしておきたかったようで、渋々対応したような感じでした)。

詳細は以下を参照してください。

blog1.mammb.com


Jakarta RESTful Web Services 3.0 -> 3.1

マルチパート・フォーム用APIが標準化されたことが大きな点でしょうか。

Java SE 環境での利用も強化されています。

詳細は以下を参照してください。

blog1.mammb.com


Jakarta Servlet 5.0 -> 6.0

セッションクッキーへの汎用的な属性(例えば SameSite)サポートが追加になりました。

詳細は以下を参照してください。

blog1.mammb.com


Jakarta WebSocket 2.0 -> 2.1

大きな変更はありません。 Websocket クライアントにクライアント証明の設定が可能となったのは、嬉しい人がいるかも知れません。

詳細は以下を参照してください。

blog1.mammb.com


Jakarta Concurrency 2.0 -> 3.0

Cron形式でのジョブ実行がサポートされた他、CDI ビーンのメソッド非同期実行も追加されています。

また、リソース定義がアノテーションにより可能となっています。

詳細は以下を参照してください。

blog1.mammb.com


Jakarta Security 2.0 -> 3.0

認証メカニズムとして OpenID Connect Annotation がサポートされました。

詳細は以下を参照してください。

blog1.mammb.com

既存の認証メカニズムについては以下を参照してください。

blog1.mammb.com


Jakarta Authentication 2.0 -> 3.0

いくつかの細かい変更が含まれます。

詳細は以下を参照してください。

blog1.mammb.com


Jakarta Server Pages 3.0 -> 3.1

EL式の変更に合わせた修正や細かい変更があります。

詳細は以下を参照してください。

blog1.mammb.com


Jakarta Activation 2.0 -> 2.1

実装が Eclipse Angus Activation として切り出されましたが、利用側からは変更なしと捉えて大丈夫です。

詳細は以下を参照してください。

blog1.mammb.com


Jakarta Authorization 2.0 -> 2.1

軽微な変更のみです。

詳細は以下を参照してください。

blog1.mammb.com


Jakarta Connectors 2.0 -> 2.1

軽微な変更のみで、利用側からは変更なしと捉えてしまって大丈夫です。

詳細は以下を参照してください。

blog1.mammb.com


Jakarta Interceptors 2.0 -> 2.1

依存の整理が行われたのみで、利用側からは変更なしと捉えて大丈夫です。

詳細は以下を参照してください。

blog1.mammb.com


Jakarta Mail 2.0 -> 2.1

実装が Eclipse Angus Mail として切り出されましたが、利用側からは変更なしと捉えて大丈夫です。

詳細は以下を参照してください。

blog1.mammb.com


Jakarta Messaging 3.0 -> 3.1

@JMSDestinationDefinition@JMSConnectionFactoryDefinition@Repeatable としてマークされ、複数定義可能となりました。

詳細は以下を参照してください。

blog1.mammb.com