8.2K Views
November 11, 23
スライド概要
2023/11/12に開催された JJUG CCC 2023 Fallで登壇した、「Jakarta EE 11 キャッチアップ」の発表資料です。
https://entrance.bis5.net
Jakarta EE 11 キャッチアップ 2023-11-11 JJUG CCC 2023 Fall #jjug_ccc #jjug_ccc_a2 株式会社ビーブレイクシステムズ 丸山 貴之 This work is licensed under CC BY-SA 4.0 . 1
whoami 丸山 貴之 株式会社ビーブレイクシステムズ 開発部 シニアSE 業務: 基幹業務パッケージの開発・導入・保守、新卒技術研修、自社OSSメンテナ ブログ: https://tech.bis5.net X: @maruTA_bis5 GitHub: @maruTA-bis5 よく使うコンポーネント: Jakarta Faces (JSF), CDI, Bean Validation, JMS This work is licensed under CC BY-SA 4.0 . 2
Disclaimer 本セッションで紹介する内容は2023/11時点での予定であり、Jakarta EE 11が正式にリ リースされるまでに変更となる可能性があります This work is licensed under CC BY-SA 4.0 . 3
Agenda Jakarta EE とは Jakarta EE 11 主な変更点 コンポーネント毎の変更 スケジュール This work is licensed under CC BY-SA 4.0 . 4
とは Jakarta EE https://jakarta.ee クラウドネイティブなエンタープライズアプリケーションをJavaで開発するため のフレームワーク 以前は Java EE として、Oracle社が主導して仕様を策定していたが、 現在はEclipse Foundation傘下のプロジェクトとして活動 Jakarta EEプロジェクトは仕様を提供し、仕様を満たすアプリケーションサーバ ーがベンダーによって提供される (アプリケーションサーバーの例: Eclipe GlassFish, WildFly, WebSphere Liberty) This work is licensed under CC BY-SA 4.0 . 5
Profile クラウドネイティブJavaアプリケーションを実現するためのコンポーネ ントの集合 Web Profile: Webアプリケーション開発に必要なコンポーネントに限定したサブセ ット Core Profile: マイクロサービスやAOT(ahead-of-time)コンパイル(GraalVM)で利用 できるコンポーネントに限定したサブセット Platform: This work is licensed under CC BY-SA 4.0 . 6
Jakarta EE 11 主な変更点 This work is licensed under CC BY-SA 4.0 . 7
全般 API Source and Target Level: Java SE 21 TCK Source Level: Java SE 21 →record やVirtual Threadsといった新機能 New Component: Jakarta Data @jakarta.annotation.ManagedBean の削除 Remove all usage of SecurityManager Java 17 (JEP 411) @Deprecated(forRemoval=true) で Remove all optional specifications Enterprise Beans 2.x API, Enterprise Web Services, SOAP with Attachments, XML Web Services, XML Binding This work is licensed under CC BY-SA 4.0 . 8
https://speakerdeck.com/ivargrimstad/prepare-for-jakarta-ee-11-af58e464-eeb9-49d7-a7ae-8c39749455f3?slide=7 This work is licensed under CC BY-SA 4.0 . 9
Jakarta EE 11 コンポーネント毎の変更 This work is licensed under CC BY-SA 4.0 . 10
Jakarta Data 1.0 https://jakarta.ee/specifications/data/1.0/ データアクセスが容易になるAPIを提供する Spring DataのRepositoryのようなイメージ 既存のデータアクセス(Jakarta Persistence, Jakarta NoSQL, etc)を置き換えるもの ではなく、補うためのAPIを提供することが目的 This work is licensed under CC BY-SA 4.0 . 11
Jakarta Data 1.0
実装例
@Repository
public interface Garage extends CrudRepository<Car, Long> {
List<Car> findByType(CarType type);
Optional<Car> findByName(String name);
}
...
@Inject
Garage garage;
...
Car ferrari = Car.id(10L).name("Ferrari").type(CarType.SPORT);
garage.save(ferrari);
This work is licensed under CC BY-SA 4.0
.
12
Jakarta CDI 4.1 https://jakarta.ee/specifications/cdi/4.1/ Method Invokers : @HeaderParam 例 引数の値をリクエストヘッダーから取り出してメソッドを 呼ぶ、がCDIで実現可能になる @Produces で @Priority をサポート BeanManagerのExpression Language関連APIを独立したartifactに分離 ELAwareBeanManager (extends BeanManager) getELResolver() , wrapExpressionFactory(ExpressionFactory) 奨、削除予定 This work is licensed under CC BY-SA 4.0 . は非推 13
Jakarta Concurrency 3.1 https://jakarta.ee/specifications/concurrency/3.1/ Virtual Threads (Java 21) Flow / ReactiveStream (Java 9) からの機能移植 ( @Schedule , @Lock 等) CDIとの連携強化 ( ManagedExecutorService 等をInject可能にする) EJB This work is licensed under CC BY-SA 4.0 . 14
Jakarta Persistence 3.2 https://jakarta.ee/specifications/persistence/3.2/ を record @IdMapping , @Embeddable Entity としては利用できない として利用可能に 非推奨: Calendar, Date, java.sql.Time, Timestamp, @Temporal , @MapKeyTemporal , TemporalType のマッピングをサポート union, intercect, except, cast, left, right, replace関数のサポート (Jakarta java.time.Instant, java.time.Year Persistence QL, Criteria) 文字列結合演算子 || をサポート (Jakarta Persistence QL) ORDER BY句の NULLS FIRST , NULLS LAST サポート (Jakarta Persistence QL, Criteria) 他多数 This work is licensed under CC BY-SA 4.0 . 15
Jakarta Faces 5.0 https://jakarta.ee/specifications/faces/5.0/ ジェネリクスの導入(SelectItem#value, 標準のConverter, etc) コンポーネント属性のデフォルト値を設定可能に EL式で #{request} を暗黙オブジェクトとして参照可能に( HttpServletRequest ) HTML5のinput要素で利用可能なイベントのサポート( oninput 等) importConstantsを f:metadata 以外の位置に記載できるように 現在のFlowをInject可能に ( @Inject Flow currentFlow ) 使用されていない PreDestroyCustomScopeEvent , PostConstructCustomScopeEvent , composite:extension の削除 SecurityManager利用箇所の削除 This work is licensed under CC BY-SA 4.0 . 16
Jakarta RESTful Web Services 4.0 https://jakarta.ee/specifications/restful-ws/4.0/ によるインジェクションの廃止 CDI( @Inject )を使用すればOK Java SE Bootstrap API: CDI SEとの統合 @Context This work is licensed under CC BY-SA 4.0 . 17
Jakarta Security 4.0 https://jakarta.ee/specifications/security/4.0/ 利用箇所の削除 クライアント証明書・Digest認証 URL毎に異なる認証方法を利用できるように ユーザー自身で認証方法を選択できるように(login with X) 複数の認証方法の組み合わせ(try JWT, fallback to BASIC, etc) CDI(Interceptor)で利用可能な @RolesAllowed SecurityManager This work is licensed under CC BY-SA 4.0 . 18
Jakarta Servlet 6.1 https://jakarta.ee/specifications/servlet/6.1/ 利用箇所の削除 リダイレクト時のHTTPステータスコード・レスポンスボディを指定できるように HTTPステータスコード定数の追加(308, 421, 422, 426) 文字エンコード指定に java.nio.charset.Charset を指定できるように ServletInputStream , ServletOutputStream における ByteBuffer のサポート SecurityManager This work is licensed under CC BY-SA 4.0 . 19
Jakarta Pages 4.0 https://jakarta.ee/specifications/pages/4.0/ オブジェクトで jakarta.servlet.error.query_string のサポート (Servlet 6.1で追加された属性) Jakarta Server Pages 3.1で非推奨となった以下の削除 Pagesが提供する ELResolver の getFeatureDescriptors メソッド (EL 6.0で 削除されたことによる) page ディレクティブの isThreadSafe 属性 ErrorData jsp:plugin This work is licensed under CC BY-SA 4.0 . 20
Jakarta Validation 3.1 https://jakarta.ee/specifications/bean-validation/3.1/ record サポート This work is licensed under CC BY-SA 4.0 . 21
Jakarta Annotations 3.0 https://jakarta.ee/specifications/annotations/3.0/ @jakarta.annotation.ManagedBean This work is licensed under CC BY-SA 4.0 . の削除 22
Jakarta Authentication 3.1 https://jakarta.ee/specifications/authentication/3.1/ SecurityManager 利用箇所の削除 This work is licensed under CC BY-SA 4.0 . 23
Jakarta Authorization 3.0 https://jakarta.ee/specifications/authorization/3.0/ 利用箇所の削除 java.secrity.Policy を代替する手段を検討中 SecurityManager This work is licensed under CC BY-SA 4.0 . 24
Jakarta Interceptors 2.2 https://jakarta.ee/specifications/interceptors/2.2/ InvocationContext This work is licensed under CC BY-SA 4.0 からInterceptorBindingを取得可能に . 25
Jakarta WebSocket 2.2 https://jakarta.ee/specifications/websocket/2.2/ SecurityManager 利用箇所の削除 This work is licensed under CC BY-SA 4.0 . 26
スケジュール This work is licensed under CC BY-SA 4.0 . 27
スケジュール 1/2 Q1 2023 Component Plan Review Q3 2023 Platform Plan Review TCK Pass w/ Security Manager Disabled Q4 2023 Milestones published (M1: 2023/11) TCK pass on Java SE 21 Individual Component Spec Ballots This work is licensed under CC BY-SA 4.0 . 28
スケジュール 2/2 H1 2024 Platform TCK pass on Java SE 21 June/July 2024 Platform ballot Release This work is licensed under CC BY-SA 4.0 . 29
参考リンク https://jakarta.ee Jakarta EE 11 Release Plan https://jakartaee.github.io/platform/jakartaee11/JakartaEE11ReleasePlan Jakarta EE Specifications https://jakarta.ee/specifications/ Prepare for Jakarta EE 11 https://speakerdeck.com/ivargrimstad/prepare-for-jakarta-ee-11-af58e464-eeb949d7-a7ae-8c39749455f3 This work is licensed under CC BY-SA 4.0 . 30