LoginSignup
0
1

Jakarta EE 10 で API と実装が分離された Specification の一覧

Posted at

2022 年 9 月、Jakarta EE 10 がリリースされました。

Jakarta EE となって初めての機能追加リリースですが、アプリケーションサーバの EoL 都合で Java / Jakarta EE 8 からジャンプアップを迫られるケースがありそうです。たとえば Red Hat JBoss EAP の場合、Jakarta EE 8 互換の 7.x は Full support が 2023 年 12 月 31 日に終了しています。Maintenance support ends も 2025 年 6 月 30 日に控えており、最近 GA となった 8.x は Jakarta EE 10 互換ですから、デッドラインは近いです。1

GA Full support Maintenance support ELS-1 ELS-2
8.x 2024-02-05 2028-02-05 2031-02-05 2033-02-05 2034-02-05
7.x 2016-05-01 2023-12-31 2025-06-30 2027-10-31 2030-10-31

また、Red Hat による OpenJDK 8 サポートは 2026 年 11 月に Full support が終了します。2 EAP 7.x は Java SE 8 / 11 が前提ですので、ELS-1 でも実質的にここが潮時でしょう。

だからといって Jakarta EE 10 対応を急いでも、簡単にはコンパイルさえ通らない場合があります。単純に名前空間を置換するだけでは終わらないということですね。本稿ではその具体例として、Jakarta EE 10 から API と実装が分離された Specification を紹介します。これらをライブラリとして使用している場合、実装も依存に追加しなくてはなりません。なお、Jakarta EE 10 から参照実装(Reference Implementations)でなく互換実装(Compatible Implementations)と呼ぶことになっています。

Jakarta Activation 2.1

互換実装は Eclipse Angus Activation です(GitHub)。

<dependency>
    <groupId>org.eclipse.angus</groupId>
    <artifactId>angus-activation</artifactId>
    <version>2.0.2</version>
</dependency>

Eclipse Angus は Jakarta Activation および Jakarta Mail に実装を提供するプロジェクトです。Sun の時代から JAF (JavaBeans Activation Framework)JavaMail はセットでしたから、そのままお引越ししたような形ですね。

Jakarta JSON Binding 3.0

互換実装は Eclipse Yasson です(GitHub)。

<dependency>
    <groupId>org.eclipse</groupId>
    <artifactId>yasson</artifactId>
    <version>3.0.3</version>
</dependency>

Yasson という名前は古代ギリシャ神話のイアーソーン(英語ではジェイソンと発音)に由来するそうです3。 JSON-B をもじって Jason Bourne と名付けたかったところ、法的な制限のため採用されなかったのだとか。ジェイソン・ボーン、私も好きな映画です。

Jakarta JSON Processing 2.1

互換実装は Eclipse Parsson です(GitHub)。

<dependency>
    <groupId>org.eclipse.parsson</groupId>
    <artifactId>parsson</artifactId>
    <version>1.1.6</version>
</dependency>

Parsson という名前の由来は見つけられませんでしたが、Persson(スウェーデンで一般的な姓)と JSON-P をかけたものでしょうか。

Jakarta Mail 2.1

互換実装は Eclipse Angus Mail です(GitHub)。

<dependency>
    <groupId>org.eclipse.angus</groupId>
    <artifactId>angus-mail</artifactId>
    <version>2.0.3</version>
</dependency>

Jakarta EE 10 を利用したい場合は自然と Java SE 11 以上を選択することになります。このとき、JEP 320 の影響により API および互換実装を依存に追加する必要があるケースで注意が必要です。

おまけ: Commons FileUpload 2.0

Commons FileUpload を利用している場合、Jakarta Servlet 6.0 に対応するため Commons FileUpload 2.0 への移行が必要となります。詳細は移行ガイドに従ってください。依存先が org.apache.commons:commons-fileupload2-jakarta-serverl6 に変更され、commons-fileupload2-core にも依存します。

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-fileupload2-jakarta-servlet6</artifactId>
    <version>2.0.0-M2</version>
</dependency>

なお、本稿投稿時点で Commons FileUpload 2.0 はマイルストーン 2 (M2)であり、正式版ではないことに注意してください。

参考リンク

  1. https://access.redhat.com/ja/support/policy/updates/jboss_notes#Life_cycle_dates

  2. https://access.redhat.com/ja/articles/1457743

  3. Dmitry Kornilov氏のブログ

0
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
0
1