$30 off During Our Annual Pro Sale. View Details »

クラウドネイティブJava技術 Jakarta EE & MicroProfile ディープダイブ

クラウドネイティブJava技術 Jakarta EE & MicroProfile ディープダイブ

Kenji Kazumura

April 27, 2023
Tweet

More Decks by Kenji Kazumura

Other Decks in Programming

Transcript

  1. Java on Azure Day 2023
    OpenAI など最新技術でここまでできる!Java 開発/運用の今と未来
    クラウドネイティブJava技術
    Jakarta EE & MicroProfile
    ディープダイブ
    数村憲治
    1

    View Slide

  2. 自己紹介
    © 2023 Fujitsu Limited
    Jakarta EE 仕様策定委員
    MicroProfile ステコミ委員
    JCP Executive Committee メンバー
    Eclipse Foundation ボードディレクター
    EclipseCon、JakartaOne、JJUGなどで登壇
    @kkzr
    2

    View Slide

  3. アジェンダ
    © 2023 Fujitsu Limited
    クラウドネイティブJava (CN4J)
    Jakarta EE 11
    MicroProfile 7
    3

    View Slide

  4. 免責事項
    © 2023 Fujitsu Limited
    本セッションには、未確定の内容が含まれています。
    Eclipse Foundation内のJakarta EE / MicroProfileワーキンググループや、
    Jakarta EE / MicroProfile コミュニティ内で議論されている内容は、
    今後、変更される可能性があります。

    4

    View Slide

  5. アジェンダ
    © 2023 Fujitsu Limited
    クラウドネイティブJava (CN4J)
    Jakarta EE 11
    MicroProfile 7
    5

    View Slide

  6. 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

    View Slide

  7. Javaトレンド
    © 2023 Fujitsu Limited
    https://www.infoq.com/articles/java-jvm-trends-2022/
    7

    View Slide

  8. DEVIES アワード 2023 受賞
    © 2023 Fujitsu Limited
    https://www.developerweek.com/awards/
    プログラミング & フレームワーク部門
    8

    View Slide

  9. Java業界リーダーによるバックアップ
    © 2023 Fujitsu Limited
    Strategic Members Participating Members Enterprise Members
    Guest Members
    9

    View Slide

  10. Jakarta EE CI (互換実装)
    © 2023 Fujitsu Limited
    https://jakarta.ee/compatibility/
    10

    View Slide

  11. JakartaEE 互換製品の増加
    © 2023 Fujitsu Limited
    ■Jakarta EE 10
    ■Jakarta EE 9.1
    ■Jakarta EE 9
    ■Jakarta EE 8
    11

    View Slide

  12. 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

    View Slide

  13. 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

    View Slide

  14. 20以上のコンポーネント
    仕様の更新によりクラウド
    ネイティブアプリケーショ
    ンの作成が容易に
    Java SE 11対応(実装に
    よっては、Java SE 17も
    利用可能)し、JPMS利用に
    よる恩恵も
    たくさんのアノテーション
    が追加され、各APIを合わ
    せたアプリケーション開発
    が容易に
    JPMSにより、モジュール
    化したアプリケーションの
    作成が容易に
    セキュリティ要件を満たし、
    高い互換性を提供
    簡単な開発
    「Core Profile」の新設
    マイクロサービス開発に
    適した軽量ランタイムを
    ターゲット
    新仕様「CDI-Lite」
    軽量化
    軽量化
    Jakarta EE 10 特徴
    © 2023 Fujitsu Limited
    軽量化
    モダナイゼーション
    14

    View Slide

  15. Jakarta EE 10 テーマ
    © 2023 Fujitsu Limited
    ⚫ Jakarta Concurrencyにおける @Asynchronous の利用
    ⚫ Jakarta BatchでのCDIサポートを改善
    Java SE技術への対応
    ⚫ 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など
    CDIへの対応
    15

    View Slide

  16. Jakarta EE 10 の Java SE レベル
    © 2023 Fujitsu Limited
    Java SE 8では動かない
    API
    ソースレベル
    Java SE 11
    API
    バイナリレベル
    Java SE 11
    TCK 走行
    Java SE 11+
    16

    View Slide

  17. パッケージ名変更 (Jakarta EE 9)
    © 2023 Fujitsu Limited
    APIパッケージ名のトップレベルをjavaxからjakartaに変更
    javax.servlet.Servlet jakarta.servlet.Servlet
    Jakarta EEが進化していくためのステップ

    17

    View Slide

  18. 影響あるパッケージ(抜粋)
    © 2023 Fujitsu Limited
    https://gist.github.com/dblevins/9a6d4b1c90986a4116dd738c9e5ef212
    完全リストはこちら
    javax.activation JavaBeansTM Activation Framework
    javax.annotation Common Annotations for the Java Platform
    javax.batch Batch Applications for the Java Platform
    javax.decorator Contexts and Dependency Injection for Java
    javax.ejb Enterprise JavaBeans
    javax.el Expression Language
    javax.enterprise Contexts and Dependency Injection for Java
    javax.enterprise.co
    ncurrent
    Concurrency Utilities for Java EE
    javax.faces JavaServer Faces
    javax.inject Dependency Injection for Java
    javax.interceptor Interceptors
    javax.jms Java Message Service
    javax.json Java API for JSON Processing
    javax.json.bind Java API for JSON Binding
    javax.jws Implementing Enterprise Web Services
    javax.mail JavaMail
    javax.persistence Java Persistence API
    javax.resource Java EE Connector Architecture
    javax.security.auth.
    message
    Java Authentication Service Provider Interface
    for Containers (JASPIC)
    javax.security.enter
    prise
    Java EE Security API
    javax.security.jacc
    Java Authorization Contract for Containers
    (JACC)
    javax.servlet Java Servlet
    javax.servlet.jsp JavaServer Pages
    javax.servlet.jsp.jstl
    Standard Tag Library for JavaServer Pages
    (JSTL)
    javax.transaction Java Transaction API (JTA)
    javax.validation Bean Validation
    javax.websocket Java API for WebSocket
    javax.ws.rs Java API for RESTful Web Services (JAX-RS)
    javax.xml.bind Java Architecture for XML Binding (JAXB)
    javax.xml.soap SOAP with Attachments API for Java (SAAJ)
    javax.xml.ws
    Java API for XML-Based Web Services (JAX-
    WS)
    18

    View Slide

  19. パッケージ名変換ツール
    © 2023 Fujitsu Limited
    https://github.com/eclipse/transformer
    Eclipse Transformer
    Apache Tomcat migration tool for Jakarta EE
    https://github.com/apache/tomcat-jakartaee-migration
    19

    View Slide

  20. デモ-Eclipse Transformer
    © 2023 Fujitsu Limited
    Jakarta EE 8アプリケーションをJakarta EE 10コンテナで動かす
    •maven-pluginによるクラスファイル変換
    •CLIによるソースファイル変換
    Java EE 7
    Jakarta EE 8
    (Jakarta EE 9) Jakarta EE 10
    20

    View Slide

  21. MicroProfileとは
    © 2023 Fujitsu Limited
    企業向けマイクロサービスに最適なJavaの仕様
    Java EE/Jakarta EE技術者のスキルを活かした
    マイクロサービスアプリケーションの開発が可能
    マイクロサービス機能重視
    タイムボックスリリース
    21

    View Slide

  22. コーポレートメンバー
    © 2023 Fujitsu Limited
    22

    View Slide

  23. 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
    23

    View Slide

  24. 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
    24

    View Slide

  25. 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
    25

    View Slide

  26. 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
    アンブレラ外
    26

    View Slide

  27. MicroProfile Config 3.0
    © 2023 Fujitsu Limited
    アプリケーションの設定のための、簡単に使えて柔軟なシステムを提供
    Jakarta EE 10 Core ProfileまたはJakarta EE 9.1
    で動作するためのTCKの更新のみ
    27

    View Slide

  28. MicroProfile Fault Tolerance 4.0
    © 2023 Fujitsu Limited
    回復力のあるアプリケーションをビルドするための、簡単に使えて柔軟
    なAPIを定義
    Jakarta EE 10 Core ProfileまたはJakarta EE 9.1
    で動作するためのTCKの更新のみ
    28

    View Slide

  29. MicroProfile Health 4.0
    © 2023 Fujitsu Limited
    MicroProfileランタイムの稼働状態を動作しているプラットフォームに
    公開
    Jakarta EE 10 Core ProfileまたはJakarta EE 9.1
    で動作するためのTCKの更新のみ
    29

    View Slide

  30. 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
    30

    View Slide

  31. 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
    31

    View Slide

  32. MicroProfile Telemetry 1.0
    © 2023 Fujitsu Limited
    サービス境界間のリクエストの流れをトレース
    自動トレーシング、手動トレーシング、エージェントによる
    計測をサポート
    CDI との統合が提供されており、Tracer、Span、
    Baggage の注入が可能
    新しい仕様のリリース
    https://github.com/eclipse/microprofile-telemetry/releases/tag/1.0
    32

    View Slide

  33. 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
    33

    View Slide

  34. MicroProfile Rest Client 3.0
    © 2023 Fujitsu Limited
    Java インターフェイスで定義される型安全なRESTクライアント
    潜在のCVEを修正する更新
    仕様の リリース
    https://github.com/eclipse/microprofile-rest-client/releases/tag/3.0.1
    34

    View Slide

  35. 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
    35

    View Slide

  36. アジェンダ
    © 2023 Fujitsu Limited
    クラウドネイティブJava (CN4J)
    Jakarta EE 11
    MicroProfile 7
    36

    View Slide

  37. 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
    37

    View Slide

  38. Jakarta EE 11 方向性 (ステコミ提唱)
    © 2023 Fujitsu Limited
    ターゲット Java SE バージョン : Java SE 21
    ターゲット リリース日:GA 2024/Q1
    優先事項
    ⚫ 統合APIによる開発者エクスペリエンス向上
    ⚫ 新しい仕様
    ⚫ 最新のJavaでビルド
    ⚫ コミュニティからのコントリビューション
    38

    View Slide

  39. API統合によるユーザエクスペリエンス向上
    © 2023 Fujitsu Limited
    CDIをベースに仕様の統合
    APIの集結
    似たようなannotationの整理
    高レベルの仕様提供 (低レベルの仕様を抽象化)
    ⚫ Jakarta Authentication と Jakarta Authorization

    39

    View Slide

  40. 新しい仕様
    © 2023 Fujitsu Limited
    新し仕様をPlatformに組み込み
    既存の仕様が、新しい仕様を活用していく
    既存の仕様エンハンス
    ベンダー固有で提供しているあるいは、Jakarta EE外機能の標準化
    Jakarta Config、RPC、Data 、MVC、NoSQL

    40

    View Slide

  41. 最新Java SE/JDKを利用
    © 2023 Fujitsu Limited
    これまでの既存機能(リアクティブFlow API)も
    RecordやVirtual Threadなどの新機能の活用
    Jakarta EE APIにおける、Java拡張機能
    (jlinkやGraalVMイメージ)の位置づけ明確化
    Jakarta EE Platform以外でのスタンドアロン
    (Java SEランタイム単独)利用
    41

    View Slide

  42. Streamlet API
    © 2023 Fujitsu Limited
    Jakarta RESTfull Web Services
    Jakarta Servlet
    Coreプロファイル
    現状 ServletとJAX-RSの、それぞれがHTTPスタックを保持
    Coreプロファイルには、JAX-RSのみ
    JAX-RSの実装がServletベースになっている場合あり
    Streamlet API (HTTPスタック)
    42

    View Slide

  43. MicroProfileとの協調
    © 2023 Fujitsu Limited
    候補
    JWT Authentication
    Context Propagation
    Jakarta Security
    Jakarta Concurrency
    MicroProfileとの協調方法については協議中
    コピーするのか、参照なのか
    互換性の考え方、リリース間隔など、非技術的課題も検討中
    MicroProfileの仕様から、Jakarta EEへ取り込み
    または、参照を検討中
    43

    View Slide

  44. Virtual Thread 対応
    © 2023 Fujitsu Limited
    Project Loom
    スレッドプールは使うな
    同時処理数を制限したいなら、セマフォを使え
    スレッドローカルは使うな
    既存のJakarta EE実装は、スレッドプールをベースに実装
    対応検討はこれから
    44

    View Slide

  45. コミュニティからのコントリビューション
    © 2023 Fujitsu Limited
    コミッター、コントリビューターの増加
    プロセス(仕様・TCK・互換申請)の簡素化
    ⚫ コミュニティからのフィードバックループ
    ⚫ サービスリリース(仕様・TCKのアップデート)作成を加速
    学習の容易化
    ⚫ チュートリルの充実
    ⚫ コンテンツのローカリゼーション(日本語・中国語)
    45

    View Slide

  46. Jakarta EE 11 スケジュール (案)
    © 2023 Fujitsu Limited
    コンポーネント
    仕様プランレビュー
    TCK SecurityManager対応
    TCK Java SE 21対応
    プラットフォームリリース
    2023/Q1 2023/Q2 2023/Q3 2023/Q4 2024/Q1
    プラットフォーム
    仕様プランレビュー
    マイルストーンリリース
    議論
    白熱中
    46

    View Slide

  47. Jakarta EE 11 の Java SE レベル (案)
    © 2023 Fujitsu Limited
    Java SE 11では動かない
    API
    ソースレベル
    Java SE 21
    API
    バイナリレベル
    Java SE 21
    TCK 走行
    Java SE 21+
    47

    View Slide

  48. プロジェクトリードへのアンケート
    © 2023 Fujitsu Limited
    仕様
    Jakarta EE 11
    でのリリース予定
    24/Q1に
    間に合うか?
    ベースとする
    Java SEバージョン
    Jakarta RESTful Web Services Yes Yes Java SE 17
    Jakarta MVC Yes Yes Java SE 17
    Jakarta Contexts and Dependency Injection Yes Yes Java SE 17
    Jakarta Servlet Yes Yes Java SE 11
    Jakarta Server Pages Yes Yes Java SE 11
    Jakarta WebSocket Yes Yes Java SE 11
    Jakarta JSON Binding No
    Jakarta JSON Processing No
    Jakarta Activation No
    Jakarta Mail No
    Jakarta XML Binding No
    Jakarta XML Web Services No
    Jakarta Web Services Metadata No
    Jakarta SOAP with Attachments No
    Jakarta NoSQL Yes Yes Java SE 17
    Jakarta Data Yes Yes Java SE 17
    Jakarta Faces Yes Yes Java SE 17
    Jakarta Security Yes Yes Java SE 17
    Jakarta Interceptors Yes Yes Java SE 17
    Jakarta Concurrency Yes No Java SE 17
    48

    View Slide

  49. Jakarta Security
    © 2023 Fujitsu Limited
    JWT/OAuthサポート、マルチ認証・認可メカニズム
    CDIフレンドリーな @RolesAllowed、@RunAs
    EL可能なアノテーション
    ⚫ @Authorized(“callerPrincipal.name==`Taro`”)

    テスト用の簡単な組込みアイデンティストア
    49

    View Slide

  50. 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" }) )
    50

    View Slide

  51. Jakarta Concurrency
    © 2023 Fujitsu Limited
    CDIフレンドリーな @Schedule、@Lock
    @MaxConcurrency の追加
    さらなるCDIセントリック化
    (現仕様の主は、2002-2004年に作成)
    @Resource
    ManagedExecutorService executor;
    @Inject
    ManagedExecutorService executor;
    デフォルトリソース
    (java:comp/DefaultManagedExecutorService)取得
    51

    View Slide

  52. Jakarta Messaging
    © 2023 Fujitsu Limited
    CDIフレンドリーな MDB
    (EJB Message Drive Beans)
    Java SEブートストラップAPI
    クラウドネイティブ向けJMS Lite
    JMS-AMQP相互接続
    52

    View Slide

  53. Jakarta Persistence
    © 2023 Fujitsu Limited
    persistence.xmlのオプショナル化
    JPQLとCriteria APIにSQL機能の追加
    Record (Java SE) への対応
    ⚫ sub-select

    セカンドレベルキャッシュプロバイダとして
    JCacheのサポート
    53

    View Slide

  54. Jakarta RESTful Web Services
    © 2023 Fujitsu Limited
    @Contextの替わりに、@Injectを使う
    54

    View Slide

  55. Jakarta Config
    © 2023 Fujitsu Limited
    コンフィグレーションの外出し
    他の仕様から使われることを想定
    Persistence、Mail、、、
    55

    View Slide

  56. Jakarta RPC
    © 2023 Fujitsu Limited
    gRPCの対応
    Platformへの組み込み、あるいは、
    スタンドアロンの仕様
    56

    View Slide

  57. Jakarta Data
    © 2023 Fujitsu Limited
    高レベルの抽象化したデータアクセス仕様
    現在、すでにベータ段階。
    Jakarta EE 11の目玉になる可能性。
    57

    View Slide

  58. Jakarta EE 12以降
    © 2023 Fujitsu Limited
    Jakarta MailのCDIベース化
    JSON-P、JSON-Bにおける、JSONスキーマのサポート
    ⚫ LRCO (Last Resource Commit Optimization)
    ⚫ 1フェーズ コミット
    ⚫ ローカルトランザクション
    Jakarta Transactionにおける
    ベンダー固有機能の標準化
    58

    View Slide

  59. アジェンダ
    © 2023 Fujitsu Limited
    クラウドネイティブJava (CN4J)
    Jakarta EE 11
    MicroProfile 7
    59

    View Slide

  60. 2023年 テクニカルゴール (1/2)
    © 2023 Fujitsu Limited
    新しい仕様の評価
    ⚫ クラウド(BLOB)ストレージ
    ⚫ コンバーター
    ⚫ 分散キャッシュ
    ⚫ サーバーレスプログラミングモデル
    MicroProfile OpenTelemetryのエンハンス
    (Metrics/Logging)
    新しい仕様の評価
    Move、Fork、LTS、、、
    60

    View Slide

  61. 2023年 テクニカルゴール (2/2)
    © 2023 Fujitsu Limited
    Springとのギャップ評価
    ⚫ Javaランタイム (Java SE 11/17/21)
    ⚫ Virtual Threadの評価
    ⚫ コンテナ・オーケストレーション
    インフラ技術の利用
    61

    View Slide

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

    View Slide

  63. MicroProfile 7.0 (案)
    © 2023 Fujitsu Limited
    Open Telemetry Metrics
    JWT 3
    Open Telemetry Logging
    ⚫ MicroProfile独自のAPIを作るか議論
    ⚫ MP Metricsをオプショナル化
    Jakarta Securityとの関連性
    2023年6月リリース予定
    63

    View Slide

  64. 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
    64

    View Slide

  65. 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
    65

    View Slide

  66. 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
    66

    View Slide

  67. © 2023 Fujitsu Limited
    Jakarta EE 開発者アンケート
    今年は日本語でのアンケートを用意!!
    今後のJakarta EE開発の議論への
    重要なインプットとなりますので、
    ご協力よろしくお願いします。
    5月25日まで
    https://www.surveymonkey.com/r/63QKBQG?lang=ja
    67

    View Slide

  68. © 2023 Fujitsu Limited
    68

    View Slide

  69. Thank you
    © 2023 Fujitsu Limited

    View Slide