Jakarta EE Platform 11 変更点まとめ(2023年11月現在)


Jakarta EE 11 における変更の概要

  • Java レコードのサポート
  • バーチャルスレッドのサポート
  • Jakarta Data 1.0 追加
  • Managed Beans 2.0 仕様の削除
    • CDIによる置き換え
  • SecurityManager の使用をすべて削除
    • JEP411への対応
  • オプション仕様の削除
    • SOAP with Attachments 4.0
    • XML Binding 4.0
    • XML Web Service 4.0
  • Java 17 以上


Jakarta Annotations 2.1 -> 3.0


Jakarta Authentication 3.0 -> 3.1


Jakarta Authorization 2.1 -> 3.0


Jakarta Concurrency 3.0 -> 3.1


Jakarta Contexts and Dependency Injection 4.0 -> 4.1


Jakarta Config 1.0


Jakarta Data 1.0

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

blog1.mammb.com

Jakarta NoSQL 1.0


Jakarta Expression Language 5.0 -> 6.0


Jakarta Interceptors 2.1 -> 2.2

public interface InvocationContext {
  default Set<Annotation> getInterceptorBindings() {...}
  default <T extends Annotation> T getInterceptorBinding(Class<T> annotationType) {...}
  default <T extends Annotation> Set<T> getInterceptorBindings(Class<T> annotationType) {...}
}


Jakarta MVC 2.1 -> 3.0


Jakarta Pages 3.1 -> 4.0


Jakarta Persistence 3.1 -> 3.2

  • Java レコードのサポート(embeddable クラスとして)
  • 主キークラスが public serializable である必要がなくなった
  • java.time APIへの置き換え
    • Calendar Date Time Timestamp Temporal MapKeyTemporal TemporalType が非推奨
    • java.time.Instant java.time.Year のサポート追加
    • @Version プロパティに LocalDateTimeInstant が利用可能に
  • @EnumeratedValue アノテーションにてenumのマッピング値をカスタマイズ可能となった
  • FindOption RefreshOption LockOption の追加
    • EntityManager.find() EntityManager.refresh() EntityManager.lock() で指定可能
  • テーブルアノテーションやカラムアノテーションでチェック制約とコメントの定義が可能となった
  • SchemaManager API追加(テスト時などにスキーマ管理が可能)
  • EntityManager#runWithConnection EntityManager#callWithConnection でJDBCに直接アクセス可能に
  • スタティックメタモデルの増強
    • ManagedType の参照が追加(EntityType<Book> bookType = Book_.class_;)
    • 名前付きクエリやエンティティグラフ、リザルトセットマッピングの定数追加
  • https://jakarta.ee/specifications/persistence/3.2/
  • https://github.com/jakartaee/persistence

詳細な変更点については以下を参照してください。

blog1.mammb.com


Jakarta RESTful Web Services 3.1 -> 4.0


Jakarta Faces 4.0 -> 5.0

  • APIコードと実装コードの分離
  • クラススキャンを削除し、CDI のみに依存する
  • SecurityManager へのすべての参照を削除
  • 非推奨コード・未使用コードの削除
  • その他(検討中)
    • UIInput のイベント強化(HTML5 における oninput など)
    • 非コンポーネントクラスでシステムイベントを利用可能とする
    • コンバータ Converter, SelectItem#value のジェネリック化
    • FacesMessage"SUCCESS" を追加
    • @Redirect アノテーションによるリダイレクト
    • validator converter behavior タグで ValueExpression を更新可能とする
    • 定数のenum化(StateManager.StateSavingMethod UIInput.ValidateEmptyFields)
    • コンポジットにカスタムの振る舞いを登録するAPIを追加
    • p:autoUpdate と同等機能のポート
    • TypeLiteral 定数の追加
    • コンポーネントのデフォルト値の設定/上書き
  • Jakarta Faces 5.0 milestone
  • https://jakarta.ee/specifications/faces/5.0/
  • https://github.com/jakartaee/faces


Jakarta Servlet 6.0 -> 6.1

  • リダイレクト送信時のステータスコードとレスポンス・ボディの制御を可能とする
  • エラーディスパッチにクエリ文字列属性を追加
  • 新しい HTTP ステータス コード定数を追加
  • String に変えて CharSet を使ったメソッドのオーバーロードを追加
  • ServletInputStreamServletOutputStreamByteBuffer サポートを追加
  • SecurityManager へのすべての参照を削除
  • https://jakarta.ee/specifications/servlet/6.1/
  • https://github.com/jakartaee/servlet


Jakarta Security 3.0 -> 4.0

  • クライアント証明書による認証メカニズムの追加
  • ダイジェスト認証メカニズムの追加
  • 組み込み CDI Bean へのセキュリティインターセプタの追加(または AuthenticationMechanismDefinition への指定によるインターセプタ)
  • SecurityManager へのすべての参照を削除
  • その他
    • 認証メカニズムをURLパターン別で提供
    • @RolesAllowed の代替案
    • ユーザーによる認証メカニズムの選択
  • Jakarta Security 3.1 milestone
  • https://jakarta.ee/specifications/security/4.0/
  • https://github.com/jakartaee/security


Jakarta Validation 3.0 -> 3.1


Jakarta WebSocket 2.1 -> 2.2