Upgrade to Pro — share decks privately, control downloads, hide ads and more …

jsummit2023-jakarta-microp.pdf

 jsummit2023-jakarta-microp.pdf

昨年10月にリリースされたJakarta EE 10.0、12月にリリースにされたMicoroProfile 6.0の最新情報の紹介と、次のリリースになるJakarta EE 11およびMicroProfile 7について、現在コミュニティで議論されている最新動向、Jakarta EEのリリースケーデンス、Java SEとの対応、Jakarta EEとMicroProfileのコラボレーションなど、今後の方向性を紹介します。

Kenji Kazumura

February 27, 2023
Tweet

More Decks by Kenji Kazumura

Other Decks in Programming

Transcript

  1. 自己紹介 © 2023 Fujitsu Limited Jakarta EE 仕様策定委員 MicroProfile ステコミ委員

    JCP Executive Committee メンバー Eclipse Foundation ボードディレクター JJUG、JavaDay、EclipseCon、JakartaOneなどで登壇 @kkzr 2
  2. アジェンダ © 2023 Fujitsu Limited Jakarta EE 10までのふりかえり Jakarta EE

    11にむけて MicroProfile 6.0 MicroProfile 2023年展望 3
  3. 免責事項 © 2023 Fujitsu Limited 本セッションには、未確定の内容が含まれています。 Eclipse Foundation内のJakarta EE /

    MicroProfileワーキンググループや、 Jakarta EE / MicroProfile コミュニティ内で議論されている内容は、 今後、変更される可能性があります。 4
  4. アジェンダ © 2023 Fujitsu Limited Jakarta EE 10までのふりかえり Jakarta EE

    11にむけて MicroProfile 6.0 MicroProfile 2023年展望 5
  5. Java EEからJakarta EEへ © 2023 Fujitsu Limited リリース間隔 J2EE1.2 J2EE1.3

    JavaEE5 JavaEE6 JavaEE7 JavaEE8 JCP設立 Jakarta EE 8 Jakarta EE ワーキンググループ設立 (Eclipse Foundation) Java EE技術の移管 Jakarta EE 9.1 Jakarta EE 9 Jakarta EE 10 J2EE1.4 1995 2000 2015 2005 2010 2020 2019 6
  6. 2020年 Jakarta EE 8 Platform: 10 Jakarta EE 8 Web

    Profile: 6 合計: Platform 10製品 Web Profile 6製品 2022年 2021年 合計: Platform 38製品 Web Profile 17製品 Core 3製品 合計: Platform 22製品 Web Profile 14製品 Jakarta EE 9 Platform: Jakarta EE 9 Web Profile: Jakarta EE 9.1 Platform: Jakarta EE 9.1 Web Profile: 14 6 18 6 3 4 5 4 6 4 10 4 JakartaEE 互換製品の増加 © 2023 Fujitsu Limited Jakarta EE 10 Platform: 4 Jakarta EE 10 Web Profile: 3 Jakarta EE 10 Core Profile: 3 11
  7. Jakarta CDI Lite, Jakarta EE Core Profile, セキュリティ強化 Java SE

    11, 複数実装が リリース時のCIに jakarta 名前空間, Java SE 8 deprecate仕様 javax 名前空間, 新しいプロセス、 新しいライセンス、新しいロゴ Eclipse Foundation からEclipse GlassFishのリリース JCPからのリリース Jakarta EEのリリース © 2023 Fujitsu Limited 2022年9月リリース Sources, TCKs, Docs Java SE 21 2024年1Q? Jakarta EE 9.1 Jakarta EE 11 Jakarta EE 10 Java EE 8 Java EE 8 Jakarta EE 8 Jakarta EE 9 12
  8. Debugging Support 2.0 Enterprise Beans Lite 4.0 Managed Beans 2.0

    Transactions 2.0 Bean Validation 3.0 Concurrency 3.0 CDI 4.0 Expression Language 5.0 Faces 4.0 Security 3.0 Servlet 6.0 Standard Tag Libraries 3.0 Server Pages 3.1 WebSocket 2.1 Authentication 3.0 Persistence 3.1 Jakarta EE 10 Web Profile JSON Binding 3.0 Annotations 2.1 Interceptors 2.1 Dependency Injection 2.0 CDI Lite 4.0 Authorization 3.0 Activation 2.1 Batch 2.1 Connectors 2.1 Messaging 3.1 Enterprise Beans 4.0 Mail 2.1 Restful Web Services 3.1 JSON Processing 2.1 改版 非更新 新規 Jakarta EE 10 Core Profile Jakarta EE 10 Platform © 2023 Fujitsu Limited 13
  9. 20以上のコンポーネント 仕様の更新によりクラウド ネイティブアプリケーショ ンの作成が容易に Java SE 11対応(実装に よっては、Java SE 17も

    利用可能)し、JPMS利用に よる恩恵も たくさんのアノテーション が追加され、各APIを合わ せたアプリケーション開発 が容易に JPMSにより、モジュール 化したアプリケーションの 作成が容易に セキュリティ要件を満たし、 高い互換性を提供 簡単な開発 「Core Profile」の新設 マイクロサービス開発に 適した軽量ランタイムを ターゲット 新仕様「CDI-Lite」 軽量化 軽量化 Jakarta EE 10 特徴 © 2023 Fujitsu Limited 軽量化 モダナイゼーション 14
  10. CDIへの対応 Java SE技術への対応 標準技術とのギャップ解消 互換技術の整理 Jakarta EE 10 テーマ ©

    2023 Fujitsu Limited Jakarta Concurrencyにおける @Asynchronous の利用 Jakarta BatchでのCDIサポートを改善 Jakarta ConcurrencyにおけるCompletionStage、 ForkJoinPoolなど並列ストリームの利用 Jakarta RESTfull Web Services におけるBootstrap API Jakarta SecurityにおけるOpenID Connect Jakarta PersistenceにおけるUUIDサポート Core Profile EJB Entity Beans、embeddable EJB Containerなど 15
  11. Jakarta EE 10 の Java SE レベル © 2023 Fujitsu

    Limited API ソースレベル : Java SE 11 API バイナリレベル: Java SE 11 TCK 走行: Java SE 11+ Java SE 8では動かない 16
  12. パッケージ名変換ツール © 2023 Fujitsu Limited https://github.com/eclipse/transformer Eclipse Transformer Apache Tomcat

    migration tool for Jakarta EE https://github.com/apache/tomcat-jakartaee-migration 18
  13. アジェンダ © 2023 Fujitsu Limited Jakarta EE 10までのふりかえり Jakarta EE

    11にむけて MicroProfile 6.0 MicroProfile 2023年展望 19
  14. Jakarta EE リリース ケーデンス (ステコミ案) © 2023 Fujitsu Limited 2023/9

    2025/9 2018/9 2024/3 2026/3 Jakarta EE 10 Java 11 2022/9 フィーチャーリリースからタイムボックスリリースへ Java SE リリースとのアライメント Java SE 主要リリース(※)から6か月後のリリース (*)Java SEは半年毎にメジャーアップするが、Oracle社は2年毎のバージョンをLTSと定義している。 Java 25 Jakarta EE 12 Java 21 Jakarta EE 11 20
  15. Jakarta EE 11 方向性 (ステコミ提唱) © 2023 Fujitsu Limited ターゲット

    Java SE バージョン : Java SE 21 ターゲット リリース日:GA 2024/Q1 優先事項  統合APIによる開発者エクスペリエンス向上  新しい仕様  最新のJavaでビルド  コミュニティからのコントリビューション 21
  16. 最新Java SEを利用 © 2023 Fujitsu Limited ベースラインJavaでのエンハンス機能利用 RecordやVirtual Threadなどの新機能の活用 Jakarta

    EE APIにおける、Java拡張機能 (jlinkやGraalVMイメージ)の位置づけ明確化 Jakarta EE Platform以外でのスタンドアロン (Java SE単独)利用 24
  17. Virtual Thread 対応 © 2023 Fujitsu Limited Project Loom スレッドプールは使うな

    同時処理数を制限したいなら、セマフォを使え スレッドローカルは使うな 既存のJakarta EE実装は、スレッドプールをベースに実装 対応検討はこれから 25
  18. Jakarta EE 11 スケジュール (案) © 2023 Fujitsu Limited コンポーネント

    仕様プランレビュー TCK SecurityManager対応 TCK Java SE 21対応 プラットフォームリリース 2023/Q1 2023/Q2 2023/Q3 2023/Q4 2024/Q1 プラットフォーム 仕様プランレビュー マイルストーンリリース 議論 白熱中 27
  19. Jakarta EE 11 の Java SE レベル (案) © 2023

    Fujitsu Limited API ソースレベル : Java SE 21 API バイナリレベル: Java SE 21 TCK 走行: Java SE 21+ Java SE 11では動かない 28
  20. identiy store 例 © 2023 Fujitsu Limited @EmbeddedIdentityStoreDefinition({ @Credentials( callerName

    = "caller1", password = "secret1", groups = { "VIEW_USER_PAGES", "VIEW_ADMIN_PAGES" }), @Credentials( callerName = "caller2", password = "secret2", groups = { "VIEW_USER_PAGES" }) ) 30
  21. Jakarta Messaging © 2023 Fujitsu Limited CDIフレンドリーな MDB (EJB Message

    Drive Beans) Java SEブートストラップAPI クラウドネイティブ向けJMS Lite JMS-AMQP相互接続 32
  22. Jakarta Persistence © 2023 Fujitsu Limited Record (Java SE) への対応

    persistence.xmlのオプショナル化 JPQLとCriteria APIにSQL機能の追加 (例:sub-select) セカンドレベルキャッシュプロバイダとしてJCacheのサポート 33
  23. Jakarta EE 12以降 © 2023 Fujitsu Limited JSON-P、JSON-Bにおける、JSONスキーマのサポート Jakarta MailのCDIベース化

    Jakarta Transactionにおけるベンダー固有機能の標準化 LRCO (Last Resource Commit Optimization) 1フェーズ コミット ローカルトランザクション 38
  24. アジェンダ © 2023 Fujitsu Limited Jakarta EE 10までのふりかえり Jakarta EE

    11にむけて MicroProfile 6.0 MicroProfile 2023年展望 39
  25. MicroProfileリリース © 2023 Fujitsu Limited 2017 2018 2019 2020 2021

    MicroProfile 1.0 (2016/2) Jax-RS 2.0//Java EE 7 CDI 1.2//Java EE 7 JSON-P 1.0//Java EE 7 MicroProfile 1.1 (2017/8) microProfile-1.0 Config 1.0 MicroProfile 1.2 (2017/9) MicroProfile-1.1 Config 1.1 Fault Tolerance 1.0 Health 1.0 Metrics 1.0 JWT 1.0 MicroProfile 1.3 (2017/12) MicroProfile 1.2 Config 1.2 Metrics 1.1 OpenApi 1.0 OpenTracing 1.0 RestClient 1.0 MicroProfile 1.4 (2018/6) MicroProfile 1.3 Config 1.3 Fault Tolerance 1.1 JWT 1.1 OpenTracing-1.1 Rest Client-1.1 MicroProfile 2.0.1 (2018/7) Jax-RS 2.1//Java EE 8 CDI 2.0//Java EE 8 JSON-P 1.1//Java EE 8 JSON-B 1.0//Java EE 8 MicroProfile 2.1 (2018/10) MicroProfile 2.0 OpenTracing 1.2 MicroProfile 3.0 (2019/6) MicroProfile 2.2 (2019/2) Fault Tolerance 2.0 OpenAPI 1.1 OpenTracing 1.3 Rest Client 1.2 MicroProfile 2.0 Metrics 2.0 Health Check 2.0 Rest Client 1.3 MicroProfile 3.2 (2019/11) MicroProfile 3.0 Metrics 2.2 Health Check 2.1 MicroProfile 3.3 (2020/2) MicroProfile 3.2 Config 1.4 Metrics 2.3 Fault Tolerance 2.1 Health 2.2 Rest Client 1.4 MicroProfile 4.0 (2020/12) Config 3.0 Metrics 3.0 Fault Tolerance 3.0 Health 3.0 Rest Client 2.0 OpenAPI 2.0 OpenTracing 2.0 JWT Auth 1.2 CDI 2.0.2 //Jakarta EE8 JAX-RS 2.1.6//Jakarta EE8 JSON-P 1.1.6//Jakarta EE8 JSON-B 1.0.2//Jakarta EE8 MicroProfile 5.0 (2021/12) MicroProfile 6.0 (2022) Config 3.0 Metrics 4.0 Fault Tolerance 4.0 Health 4.0 Rest Client 3.0 OpenAPI 3.0 OpenTracing 3.0 JWT Auth 2.0 Jakarta CDI 3.0 //Jakarta EE 9.1 Jakarta RESTfull Web Services //Jakarta EE 9.1 Jakarta JSON-P //Jakarta EE 9.1 Jakarta JSON-B 2.0//Jakarta EE 9.1 Jakarta Annotations 2.0 // Jakarta EE 9.1 Config 3.0 Metrics 5.0 Fault Tolerance 4.0 Health 4.0 Rest Client 3.0 OpenAPI 3.1 Telmetry 1.0 JWT Auth 2.1 Jakarta EE 10 Core Profile MicroProfile 4.1 (2021/7) MicroProfile 4.0 Health 3.1 Jakarta Annotations 1.3 2022 MicroProfile ワーキンググループ設立 (2020/10) 2023 42
  26. MicroProfile 5.0 (2021年12月リリース) © 2023 Fujitsu Limited MicroProfile 5.0 Config

    3.0 Fault Tolerance 4.0 JWT Authentication 2.0 Health 4.0 Metrics 4.0 Open Tracing 3.0 Open API 3.0 Rest Client 3.0 スタンドアロン Context Propagation 1.3 Reactive Streams Operators 2.0 アンブレラ外 Reactive Messaging 2.0 GraphQL 1.1 LRA 1.0 Jakarta Annotations 2.0 Jakarta JAX-RS 3.0 Jakarta JSON-P 2.0 Jakarta CDI 3.0 Jakarta JSON-B 2.0 Jakarta EE 43
  27. MicroProfile 6.0 リリース © 2023 Fujitsu Limited 2022年12月22日にリリース このリリースで提供されるもの 4つのMicroProfileコンポーネント仕様

    (Telemetry、 Metrics、JWT、OpenAPI)の更新と、 Jakarta EE 10 Core Profileへの対応 https://github.com/eclipse/microprofile/releases/tag/6.0 44
  28. MicroProfile 6.0 Jakarta EE スタンドアロン MicroProfile 6.0 (2022年12月リリース) © 2023

    Fujitsu Limited Jakarta EE 10 Core Profile Config 3.0 Fault Tolerance 4.0 JWT Authentication 2.1 Health 4.0 Metrics 5.0 Open Tracing 3.0 Open API 3.1 :更新 :最新リリースからの更新なし :新規 Rest Client 3.0 Context Propagation 1.3 Reactive Streams Operators 3.0 Reactive Messaging 3.0 GraphQL 2.0 LRA 2.0 Telemetry 1.0 アンブレラ外 45
  29. MicroProfile JWT Authentication 2.1 © 2023 Fujitsu Limited マイクロサービスエンドポイントのロールベースアクセス制御(RBAC)に OpenID

    Connect(OIDC) ベースの JSON Web Tokens (JWT)を使用 Jakarta EE 9 の依存関係を使用するように更新 仕様のリリース 変更点 https://github.com/eclipse/microprofile-jwt-auth/releases/tag/2.1 https://download.eclipse.org/microprofile/microprofile-jwt-auth- 2.1/microprofile-jwt-auth-spec-2.1.html#release_notes_21 49
  30. MicroProfile Metrics 5.0 © 2023 Fujitsu Limited カスタムのアプリケーションメトリクスを定義、標準フォーマットを使用した 標準エンドポイント上でプラットフォームメトリクスを公開 多次元のメトリクスをサポート

    アプリケーションメトリクスのカスタムスコープへのグループ化が 可能となり、これらのスコープによるメトリクスの問い合わせが 可能に 後方互換性のない変更 仕様の リリース 変更点 https://download.eclipse.org/microprofile/microprofile-metrics-5.0.0/microprofile- metrics-spec-5.0.0.html#_breaking_changes https://github.com/eclipse/microprofile-metrics/releases/tag/5.0.0 https://download.eclipse.org/microprofile/microprofile-metrics-5.0.0/microprofile-metrics- spec-5.0.0.html#release_notes_5_0 50
  31. MicroProfile Telemetry 1.0 © 2023 Fujitsu Limited サービス境界間のリクエストの流れをトレース 自動トレーシング、手動トレーシング、エージェントによる 計測をサポート

    CDI との統合が提供されており、Tracer、Span、 Baggage の注入が可能 新しい仕様のリリース https://github.com/eclipse/microprofile-telemetry/releases/tag/1.0 51
  32. MicroProfile OpenAPI 3.1 © 2023 Fujitsu Limited アプリケーションから OpenAPI v3

    ドキュメントを直接生成する Java インターフェイスとプログラミングモデルを提供 仕様の リリース (変更点) https://github.com/eclipse/microprofile-open-api/releases/tag/3.1 https://download.eclipse.org/microprofile/microprofile-open-api-3.1/microprofile- openapi-spec-3.1.html#release_notes_31 52
  33. MicroProfile Rest Client 3.0 © 2023 Fujitsu Limited Java インターフェイスで定義される型安全なRESTクライアント

    潜在のCVEを修正する更新 仕様の リリース https://github.com/eclipse/microprofile-rest-client/releases/tag/3.0.1 53
  34. MicroProfile リアクティブ仕様 © 2023 Fujitsu Limited MicroProfile Reactive Streams Operators

    3.0 https://github.com/eclipse/microprofile-reactive-streams-operators/releases/tag/3.0 リアクティブストリームの生成、遷移するデータの処理、消費が簡単にできる オペレーターのセット MicroProfile Reactive Messaging 3.0 メッセージを生成・消費・処理するCDI Bean を宣言するための開発モデルを定義 Reactive Streams と CDI に依存 https://github.com/eclipse/microprofile-reactive-messaging/releases/tag/3.0 MicroProfile Context Propagation 1.3 スレッドに依存しない作業単位間でコンテキストを伝播するための API https://github.com/eclipse/microprofile-context-propagation/releases/tag/1.3 54
  35. アジェンダ © 2023 Fujitsu Limited Jakarta EE 10までのふりかえり Jakarta EE

    11にむけて MicroProfile 6.0 MicroProfile 2023年展望 55
  36. 2023年 テクニカルゴール (1/2) © 2023 Fujitsu Limited 新しい仕様の評価 MicroProfile OpenTelemetryのエンハンス

    (Metrics/Logging) Jakarta EEとの整合 クラウド(BLOB)ストレージ コンバーター 分散キャッシュ サーバーレスプログラミングモデル Move、Fork、LTS、、、 56
  37. 2023年 テクニカルゴール (2/2) © 2023 Fujitsu Limited Springとのギャップ評価 インフラ技術の利用 Javaランタイム

    (Java SE 11/17/21) Virtual Threadの評価 コンテナ・オーケストレーション 57
  38. MicroProfile 7 MicroProfile 6 MicroProfile リリース シナリオ (今後) © 2023

    Fujitsu Limited ユースケース 実装XYZは、 MicroProfile 7準拠と言えるか? Jakarta EE 10 Jakarta EE 11 2022/9 2022/12 2023/6 2024/3 実装XYZは、 ・ Jakarta EE 11 Core Profile のTCKをパスしたCI ・ MicroProfile 7のTCKをパス ・ Jakarta EE 10 Core Profile のTCKは未実施 Core Profile Core Profile 58
  39. MicroProfile 7 MicroProfile 6 Jakarta EE 10 Jakarta EE 11

    Core Profile Core Profile 案1:Jakarta EE複数バージョンサポート © 2023 Fujitsu Limited ユースケース メリット 2022/12 2023/6 Core Profile : MicroProfileのリリース数は少ない デメリット : ポータビリティが低い 2024/3 2022/9 実装 XYZ 59
  40. MicroProfile 7 Lite MicroProfile 7 Full MicroProfile 6 Jakarta EE

    10 Jakarta EE 11 Core Profile Core Profile 案2:MicroProfile Lite と Full 作成 © 2023 Fujitsu Limited ユースケース 2022/12 2023/6 Core Profile 2024/3 2022/9 メリット : ユーザ・ベンダーが組み合わせ自由 に利用可能 デメリット : ポータビリティが低い 実装 XYZ 60
  41. MicroProfile 7 MicroProfile 6 Jakarta EE 10 Jakarta EE 11

    Core Profile Core Profile 案3:Jakarta EE/Java SE Vup毎にリリース © 2023 Fujitsu Limited ユースケース 2022/12 Core Profile 2022/9 MicroProfile 8 2023/6 2024/3 2024/xx メリット : ポータビリティの確保が容易 デメリット ・各コミュニティ間での監視が必要 ・MicroProfileのリリースが多くなる 実装 XYZ 61
  42. MicroProfile 7 MicroProfile 6 Jakarta EE 10 Jakarta EE 11

    Core Profile Core Profile 案4:Jakarta EEのProfileにする © 2023 Fujitsu Limited ユースケース 2022/12 2023/6 実装 XYZ ・MicorProfile設立時の思想? ・ユーザにとって統一されたプログラミングモデル 2024/3 2022/9 : Jakarta EEとMicroProfileの合意が難しい (プロセス・互換性・リーガル) Micro Profile メリット デメリット 62
  43. MicroProfile 6.1 (案) © 2023 Fujitsu Limited Jakrta EE 9.1対応

    Open Telemetry 最新版の取り込み MP Metricsマイナーアップデート 2023年6月リリース予定 Jakarta EE 9.1 または Jakarta EE 10のどちらでも動作 63
  44. MicroProfile 7.0 (案) © 2023 Fujitsu Limited Open Telemetry Metrics

    JWT 3 Open Telemetry Logging 2023年6月リリース予定 MicroProfile独自のAPIを作るか議論 MP Metricsをオプショナル化 Jakarta Securityとの関連性 64