Jakarta EE 11 キャッチアップ

5K Views

November 11, 23

スライド概要

2023/11/12に開催された JJUG CCC 2023 Fallで登壇した、「Jakarta EE 11 キャッチアップ」の発表資料です。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

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

2.

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

3.

Disclaimer 本セッションで紹介する内容は2023/11時点での予定であり、Jakarta EE 11が正式にリ リースされるまでに変更となる可能性があります This work is licensed under CC BY-SA 4.0 . 3

4.

Agenda Jakarta EE とは Jakarta EE 11 主な変更点 コンポーネント毎の変更 スケジュール This work is licensed under CC BY-SA 4.0 . 4

5.

とは 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

6.

Profile クラウドネイティブJavaアプリケーションを実現するためのコンポーネ ントの集合 Web Profile: Webアプリケーション開発に必要なコンポーネントに限定したサブセ ット Core Profile: マイクロサービスやAOT(ahead-of-time)コンパイル(GraalVM)で利用 できるコンポーネントに限定したサブセット Platform: This work is licensed under CC BY-SA 4.0 . 6

7.

Jakarta EE 11 主な変更点 This work is licensed under CC BY-SA 4.0 . 7

8.

全般 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

9.

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

10.

Jakarta EE 11 コンポーネント毎の変更 This work is licensed under CC BY-SA 4.0 . 10

11.

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

12.
[beta]
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

13.

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

14.

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

15.

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

16.

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

17.

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

18.

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

19.

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

20.

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

21.

Jakarta Validation 3.1 https://jakarta.ee/specifications/bean-validation/3.1/ record サポート This work is licensed under CC BY-SA 4.0 . 21

22.

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

23.

Jakarta Authentication 3.1 https://jakarta.ee/specifications/authentication/3.1/ SecurityManager 利用箇所の削除 This work is licensed under CC BY-SA 4.0 . 23

24.

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

25.

Jakarta Interceptors 2.2 https://jakarta.ee/specifications/interceptors/2.2/ InvocationContext This work is licensed under CC BY-SA 4.0 からInterceptorBindingを取得可能に . 25

26.

Jakarta WebSocket 2.2 https://jakarta.ee/specifications/websocket/2.2/ SecurityManager 利用箇所の削除 This work is licensed under CC BY-SA 4.0 . 26

27.

スケジュール This work is licensed under CC BY-SA 4.0 . 27

28.

スケジュール 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

29.

スケジュール 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

30.

参考リンク 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