昨年10月にリリースされたJakarta EE 10.0、12月にリリースにされたMicoroProfile 6.0の最新情報の紹介と、次のリリースになるJakarta EE 11およびMicroProfile 7について、現在コミュニティで議論されている最新動向、Jakarta EEのリリースケーデンス、Java SEとの対応、Jakarta EEとMicroProfileのコラボレーションなど、今後の方向性を紹介します。
© 2023 Fujitsu Limited2023年2月28日数村憲治クラウドネイティブ JavaJakarta EE/MicroProfile最新情報Java Developers Summit Online 2023
View Slide
自己紹介© 2023 Fujitsu LimitedJakarta EE 仕様策定委員MicroProfile ステコミ委員JCP Executive Committee メンバーEclipse Foundation ボードディレクターJJUG、JavaDay、EclipseCon、JakartaOneなどで登壇@kkzr2
アジェンダ© 2023 Fujitsu LimitedJakarta EE 10までのふりかえりJakarta EE 11にむけてMicroProfile 6.0MicroProfile 2023年展望3
免責事項© 2023 Fujitsu Limited本セッションには、未確定の内容が含まれています。Eclipse Foundation内のJakarta EE / MicroProfileワーキンググループや、Jakarta EE / MicroProfile コミュニティ内で議論されている内容は、今後、変更される可能性があります。4
アジェンダ© 2023 Fujitsu LimitedJakarta EE 10までのふりかえりJakarta EE 11にむけてMicroProfile 6.0MicroProfile 2023年展望5
Java EEからJakarta EEへ© 2023 Fujitsu Limitedリリース間隔J2EE1.2 J2EE1.3JavaEE5 JavaEE6 JavaEE7 JavaEE8JCP設立Jakarta EE 8Jakarta EEワーキンググループ設立(Eclipse Foundation)Java EE技術の移管Jakarta EE 9.1Jakarta EE 9Jakarta EE 10J2EE1.41995 2000 20152005 2010 202020196
Javaトレンド© 2023 Fujitsu Limitedhttps://www.infoq.com/articles/java-jvm-trends-2022/7
DEVIES アワード 2023 受賞© 2023 Fujitsu Limitedhttps://www.developerweek.com/awards/プログラミング & フレームワーク部門8
Java業界リーダーによるバックアップ© 2023 Fujitsu LimitedStrategic Members Participating Members Enterprise MembersGuest Members9
Jakarta EE CI (互換実装)© 2023 Fujitsu Limitedhttps://jakarta.ee/compatibility/10
2020年Jakarta EE 8 Platform: 10Jakarta 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:146186345464104JakartaEE 互換製品の増加© 2023 Fujitsu LimitedJakarta EE 10 Platform: 4Jakarta EE 10 Web Profile: 3Jakarta EE 10 Core Profile: 311
Jakarta CDI Lite,Jakarta EE Core Profile,セキュリティ強化Java SE 11, 複数実装がリリース時のCIにjakarta 名前空間, Java SE 8deprecate仕様javax 名前空間, 新しいプロセス、新しいライセンス、新しいロゴEclipse Foundation からEclipse GlassFishのリリースJCPからのリリースJakarta EEのリリース© 2023 Fujitsu Limited2022年9月リリースSources,TCKs, DocsJava SE 212024年1Q?Jakarta EE 9.1Jakarta EE 11Jakarta EE 10Java EE 8Java EE 8Jakarta EE 8Jakarta EE 912
Debugging Support 2.0Enterprise Beans Lite 4.0Managed Beans 2.0Transactions 2.0Bean Validation 3.0Concurrency 3.0CDI 4.0 Expression Language 5.0Faces 4.0Security 3.0Servlet 6.0Standard Tag Libraries 3.0Server Pages 3.1WebSocket 2.1Authentication 3.0 Persistence 3.1Jakarta EE 10 Web ProfileJSON Binding 3.0Annotations 2.1Interceptors 2.1Dependency Injection 2.0CDI Lite 4.0Authorization 3.0Activation 2.1Batch 2.1Connectors 2.1Messaging 3.1Enterprise Beans 4.0Mail 2.1Restful Web Services 3.1JSON Processing 2.1改版 非更新 新規Jakarta EE 10 Core ProfileJakarta EE 10 Platform© 2023 Fujitsu Limited13
20以上のコンポーネント仕様の更新によりクラウドネイティブアプリケーションの作成が容易にJava SE 11対応(実装によっては、Java SE 17も利用可能)し、JPMS利用による恩恵もたくさんのアノテーションが追加され、各APIを合わせたアプリケーション開発が容易にJPMSにより、モジュール化したアプリケーションの作成が容易にセキュリティ要件を満たし、高い互換性を提供簡単な開発「Core Profile」の新設マイクロサービス開発に適した軽量ランタイムをターゲット新仕様「CDI-Lite」軽量化軽量化Jakarta EE 10 特徴© 2023 Fujitsu Limited軽量化モダナイゼーション14
CDIへの対応Java SE技術への対応標準技術とのギャップ解消互換技術の整理Jakarta EE 10 テーマ© 2023 Fujitsu LimitedJakarta Concurrencyにおける @Asynchronous の利用Jakarta BatchでのCDIサポートを改善Jakarta ConcurrencyにおけるCompletionStage、ForkJoinPoolなど並列ストリームの利用Jakarta RESTfull Web Services におけるBootstrap APIJakarta SecurityにおけるOpenID ConnectJakarta PersistenceにおけるUUIDサポートCore ProfileEJB Entity Beans、embeddable EJB Containerなど15
Jakarta EE 10 の Java SE レベル© 2023 Fujitsu LimitedAPI ソースレベル : Java SE 11API バイナリレベル: Java SE 11TCK 走行: Java SE 11+Java SE 8では動かない16
パッケージ名変更 (Jakarta EE 9)© 2023 Fujitsu LimitedAPIパッケージ名のトップレベルをjavaxからjakartaに変更javax.servlet.Servlet jakarta.servlet.ServletJakarta EEが進化していくためのステップ例17
パッケージ名変換ツール© 2023 Fujitsu Limitedhttps://github.com/eclipse/transformerEclipse TransformerApache Tomcat migration tool for Jakarta EEhttps://github.com/apache/tomcat-jakartaee-migration18
アジェンダ© 2023 Fujitsu LimitedJakarta EE 10までのふりかえりJakarta EE 11にむけてMicroProfile 6.0MicroProfile 2023年展望19
Jakarta EE リリース ケーデンス (ステコミ案)© 2023 Fujitsu Limited2023/92025/92018/92024/32026/3Jakarta EE 10Java 112022/9フィーチャーリリースからタイムボックスリリースへJava SE リリースとのアライメントJava SE 主要リリース(※)から6か月後のリリース(*)Java SEは半年毎にメジャーアップするが、Oracle社は2年毎のバージョンをLTSと定義している。Java 25Jakarta EE 12Java 21Jakarta EE 1120
Jakarta EE 11 方向性 (ステコミ提唱)© 2023 Fujitsu Limitedターゲット Java SE バージョン : Java SE 21ターゲット リリース日:GA 2024/Q1優先事項 統合APIによる開発者エクスペリエンス向上 新しい仕様 最新のJavaでビルド コミュニティからのコントリビューション21
API統合によるユーザエクスペリエンス向上© 2023 Fujitsu LimitedCDIをベースに仕様の統合APIの集結高レベルの仕様提供 (低レベルの仕様を抽象化)Jakarta Authentication と Jakarta Authorization似たようなannotationの整理例22
新しい仕様© 2023 Fujitsu Limited新し仕様をPlatformに組み込み既存の仕様が、新しい仕様を活用していく既存の仕様エンハンスJakarta Config、RPC、Data 、MVC、NoSQLベンダー固有で提供しているあるいは、Jakarta EE外機能の標準化例23
最新Java SEを利用© 2023 Fujitsu LimitedベースラインJavaでのエンハンス機能利用RecordやVirtual Threadなどの新機能の活用Jakarta EE APIにおける、Java拡張機能(jlinkやGraalVMイメージ)の位置づけ明確化Jakarta EE Platform以外でのスタンドアロン(Java SE単独)利用24
Virtual Thread 対応© 2023 Fujitsu LimitedProject Loomスレッドプールは使うな同時処理数を制限したいなら、セマフォを使えスレッドローカルは使うな既存のJakarta EE実装は、スレッドプールをベースに実装対応検討はこれから25
コミュニティからのコントリビューション© 2023 Fujitsu Limitedコミッター、コントリビューターの増加プロセス(仕様・TCK・互換申請)の簡素化学習の容易化コミュニティからのフィードバックループサービスリリース(仕様・TCKのアップデート)作成を加速チュートリルの充実コンテンツのローカリゼーション(日本語・中国語)26
Jakarta EE 11 スケジュール (案)© 2023 Fujitsu Limitedコンポーネント仕様プランレビューTCK SecurityManager対応TCK Java SE 21対応プラットフォームリリース2023/Q1 2023/Q2 2023/Q3 2023/Q4 2024/Q1プラットフォーム仕様プランレビューマイルストーンリリース議論白熱中27
Jakarta EE 11 の Java SE レベル (案)© 2023 Fujitsu LimitedAPI ソースレベル : Java SE 21API バイナリレベル: Java SE 21TCK 走行: Java SE 21+Java SE 11では動かない28
Jakarta Security© 2023 Fujitsu LimitedJWT/OAuthサポート、マルチ認証・認可メカニズムCDIフレンドリーな @RolesAllowed、@RunAsEL可能なアノテーション例:@Authorized(“callerPrincipal.name==`Taro`”)テスト用の簡単な組込みアイデンティストア29
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
Jakarta Concurrency© 2023 Fujitsu LimitedCDIフレンドリーな @Schedule、@Lock@MaxConcurrency の追加31
Jakarta Messaging© 2023 Fujitsu LimitedCDIフレンドリーな MDB(EJB Message Drive Beans)Java SEブートストラップAPIクラウドネイティブ向けJMS LiteJMS-AMQP相互接続32
Jakarta Persistence© 2023 Fujitsu LimitedRecord (Java SE) への対応persistence.xmlのオプショナル化JPQLとCriteria APIにSQL機能の追加(例:sub-select)セカンドレベルキャッシュプロバイダとしてJCacheのサポート33
Jakarta RESTful Web Services© 2023 Fujitsu Limited@Contextの替わりに、@Injectを使う34
Jakarta Config© 2023 Fujitsu Limitedコンフィグレーションの外出し他の仕様から使われることを想定Persistence、Mail、、、35
Jakarta RPC© 2023 Fujitsu LimitedgRPCの対応Platformへの組み込み、あるいは、スタンドアロンの仕様36
Jakarta Data© 2023 Fujitsu Limited高レベルの抽象化したデータアクセス仕様37
Jakarta EE 12以降© 2023 Fujitsu LimitedJSON-P、JSON-Bにおける、JSONスキーマのサポートJakarta MailのCDIベース化Jakarta Transactionにおけるベンダー固有機能の標準化LRCO (Last Resource Commit Optimization)1フェーズ コミットローカルトランザクション38
アジェンダ© 2023 Fujitsu LimitedJakarta EE 10までのふりかえりJakarta EE 11にむけてMicroProfile 6.0MicroProfile 2023年展望39
MicroProfileとは© 2023 Fujitsu Limited企業向けマイクロサービスに最適なJavaの仕様Java EE/Jakarta EE技術者のスキルを活かしたマイクロサービスアプリケーションの開発が可能マイクロサービス機能重視タイムボックスリリース40
コーポレートメンバー© 2023 Fujitsu Limited41
MicroProfileリリース© 2023 Fujitsu Limited20172018201920202021MicroProfile 1.0(2016/2)Jax-RS 2.0//Java EE 7CDI 1.2//Java EE 7JSON-P 1.0//Java EE 7MicroProfile 1.1(2017/8)microProfile-1.0Config 1.0MicroProfile 1.2(2017/9)MicroProfile-1.1Config 1.1Fault Tolerance 1.0Health 1.0Metrics 1.0JWT 1.0MicroProfile 1.3(2017/12)MicroProfile 1.2Config 1.2Metrics 1.1OpenApi 1.0OpenTracing 1.0RestClient 1.0MicroProfile 1.4(2018/6)MicroProfile 1.3Config 1.3Fault Tolerance 1.1JWT 1.1OpenTracing-1.1Rest Client-1.1MicroProfile 2.0.1(2018/7)Jax-RS 2.1//Java EE 8CDI 2.0//Java EE 8JSON-P 1.1//Java EE 8JSON-B 1.0//Java EE 8MicroProfile 2.1(2018/10)MicroProfile 2.0OpenTracing 1.2MicroProfile 3.0(2019/6)MicroProfile 2.2(2019/2)Fault Tolerance 2.0OpenAPI 1.1OpenTracing 1.3Rest Client 1.2MicroProfile 2.0Metrics 2.0Health Check 2.0Rest Client 1.3MicroProfile 3.2(2019/11)MicroProfile 3.0Metrics 2.2Health Check 2.1MicroProfile 3.3(2020/2)MicroProfile 3.2Config 1.4Metrics 2.3Fault Tolerance 2.1Health 2.2Rest Client 1.4MicroProfile 4.0(2020/12)Config 3.0Metrics 3.0Fault Tolerance 3.0Health 3.0Rest Client 2.0OpenAPI 2.0OpenTracing 2.0JWT Auth 1.2CDI 2.0.2 //Jakarta EE8JAX-RS 2.1.6//Jakarta EE8JSON-P 1.1.6//Jakarta EE8JSON-B 1.0.2//Jakarta EE8MicroProfile 5.0(2021/12)MicroProfile 6.0(2022)Config 3.0Metrics 4.0Fault Tolerance 4.0Health 4.0Rest Client 3.0OpenAPI 3.0OpenTracing 3.0JWT Auth 2.0Jakarta CDI 3.0 //Jakarta EE 9.1Jakarta RESTfull Web Services //Jakarta EE 9.1Jakarta JSON-P //Jakarta EE 9.1Jakarta JSON-B 2.0//Jakarta EE 9.1Jakarta Annotations 2.0 // Jakarta EE 9.1Config 3.0Metrics 5.0Fault Tolerance 4.0Health 4.0Rest Client 3.0OpenAPI 3.1Telmetry 1.0JWT Auth 2.1Jakarta EE 10 Core ProfileMicroProfile 4.1(2021/7)MicroProfile 4.0Health 3.1Jakarta Annotations 1.32022MicroProfileワーキンググループ設立(2020/10)202342
MicroProfile 5.0 (2021年12月リリース)© 2023 Fujitsu LimitedMicroProfile 5.0Config 3.0FaultTolerance4.0JWTAuthentication2.0Health 4.0Metrics 4.0Open Tracing3.0Open API 3.0Rest Client3.0スタンドアロンContextPropagation 1.3ReactiveStreamsOperators 2.0アンブレラ外ReactiveMessaging 2.0GraphQL 1.1LRA 1.0JakartaAnnotations 2.0JakartaJAX-RS 3.0JakartaJSON-P 2.0JakartaCDI 3.0JakartaJSON-B 2.0Jakarta EE43
MicroProfile 6.0 リリース© 2023 Fujitsu Limited2022年12月22日にリリースこのリリースで提供されるもの4つのMicroProfileコンポーネント仕様(Telemetry、 Metrics、JWT、OpenAPI)の更新と、Jakarta EE 10 Core Profileへの対応https://github.com/eclipse/microprofile/releases/tag/6.044
MicroProfile 6.0Jakarta EEスタンドアロンMicroProfile 6.0 (2022年12月リリース)© 2023 Fujitsu LimitedJakarta EE 10Core ProfileConfig 3.0FaultTolerance4.0JWTAuthentication2.1Health 4.0Metrics5.0OpenTracing 3.0Open API3.1:更新 :最新リリースからの更新なし:新規Rest Client3.0ContextPropagation1.3ReactiveStreamsOperators 3.0ReactiveMessaging3.0GraphQL2.0LRA 2.0Telemetry1.0アンブレラ外45
MicroProfile Config 3.0© 2023 Fujitsu Limitedアプリケーションの設定のための、簡単に使えて柔軟なシステムを提供Jakarta EE 10 Core ProfileまたはJakarta EE 9.1で動作するためのTCKの更新のみ46
MicroProfile Fault Tolerance 4.0© 2023 Fujitsu Limited回復力のあるアプリケーションをビルドするための、簡単に使えて柔軟なAPIを定義Jakarta EE 10 Core ProfileまたはJakarta EE 9.1で動作するためのTCKの更新のみ47
MicroProfile Health 4.0© 2023 Fujitsu LimitedMicroProfileランタイムの稼働状態を動作しているプラットフォームに公開Jakarta EE 10 Core ProfileまたはJakarta EE 9.1で動作するためのTCKの更新のみ48
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.1https://download.eclipse.org/microprofile/microprofile-jwt-auth-2.1/microprofile-jwt-auth-spec-2.1.html#release_notes_2149
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_changeshttps://github.com/eclipse/microprofile-metrics/releases/tag/5.0.0https://download.eclipse.org/microprofile/microprofile-metrics-5.0.0/microprofile-metrics-spec-5.0.0.html#release_notes_5_050
MicroProfile Telemetry 1.0© 2023 Fujitsu Limitedサービス境界間のリクエストの流れをトレース自動トレーシング、手動トレーシング、エージェントによる計測をサポートCDI との統合が提供されており、Tracer、Span、Baggage の注入が可能新しい仕様のリリースhttps://github.com/eclipse/microprofile-telemetry/releases/tag/1.051
MicroProfile OpenAPI 3.1© 2023 Fujitsu Limitedアプリケーションから OpenAPI v3 ドキュメントを直接生成するJava インターフェイスとプログラミングモデルを提供仕様の リリース(変更点)https://github.com/eclipse/microprofile-open-api/releases/tag/3.1https://download.eclipse.org/microprofile/microprofile-open-api-3.1/microprofile-openapi-spec-3.1.html#release_notes_3152
MicroProfile Rest Client 3.0© 2023 Fujitsu LimitedJava インターフェイスで定義される型安全なRESTクライアント潜在のCVEを修正する更新仕様の リリースhttps://github.com/eclipse/microprofile-rest-client/releases/tag/3.0.153
MicroProfile リアクティブ仕様© 2023 Fujitsu LimitedMicroProfile Reactive Streams Operators 3.0https://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.0MicroProfile Context Propagation 1.3スレッドに依存しない作業単位間でコンテキストを伝播するための APIhttps://github.com/eclipse/microprofile-context-propagation/releases/tag/1.354
アジェンダ© 2023 Fujitsu LimitedJakarta EE 10までのふりかえりJakarta EE 11にむけてMicroProfile 6.0MicroProfile 2023年展望55
2023年 テクニカルゴール (1/2)© 2023 Fujitsu Limited新しい仕様の評価MicroProfile OpenTelemetryのエンハンス(Metrics/Logging)Jakarta EEとの整合クラウド(BLOB)ストレージコンバーター分散キャッシュサーバーレスプログラミングモデルMove、Fork、LTS、、、56
2023年 テクニカルゴール (2/2)© 2023 Fujitsu LimitedSpringとのギャップ評価インフラ技術の利用Javaランタイム (Java SE 11/17/21)Virtual Threadの評価コンテナ・オーケストレーション57
MicroProfile 7MicroProfile 6MicroProfile リリース シナリオ (今後)© 2023 Fujitsu Limitedユースケース実装XYZは、MicroProfile 7準拠と言えるか?Jakarta EE 10 Jakarta EE 112022/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 ProfileCore Profile58
MicroProfile 7MicroProfile 6Jakarta EE 10 Jakarta EE 11Core ProfileCore Profile案1:Jakarta EE複数バージョンサポート© 2023 Fujitsu Limitedユースケースメリット2022/12 2023/6Core Profile: MicroProfileのリリース数は少ないデメリット : ポータビリティが低い2024/32022/9実装XYZ59
MicroProfile 7 LiteMicroProfile 7 FullMicroProfile 6Jakarta EE 10 Jakarta EE 11Core ProfileCore Profile案2:MicroProfile Lite と Full 作成© 2023 Fujitsu Limitedユースケース2022/12 2023/6Core Profile2024/32022/9メリット : ユーザ・ベンダーが組み合わせ自由に利用可能デメリット : ポータビリティが低い実装XYZ60
MicroProfile 7MicroProfile 6Jakarta EE 10 Jakarta EE 11Core ProfileCore Profile案3:Jakarta EE/Java SE Vup毎にリリース© 2023 Fujitsu Limitedユースケース2022/12Core Profile2022/9MicroProfile 82023/6 2024/3 2024/xxメリット : ポータビリティの確保が容易デメリット・各コミュニティ間での監視が必要・MicroProfileのリリースが多くなる実装XYZ61
MicroProfile 7MicroProfile 6Jakarta EE 10 Jakarta EE 11Core ProfileCore Profile案4:Jakarta EEのProfileにする© 2023 Fujitsu Limitedユースケース2022/12 2023/6実装XYZ・MicorProfile設立時の思想?・ユーザにとって統一されたプログラミングモデル2024/32022/9: Jakarta EEとMicroProfileの合意が難しい(プロセス・互換性・リーガル)Micro Profileメリットデメリット62
MicroProfile 6.1 (案)© 2023 Fujitsu LimitedJakrta EE 9.1対応Open Telemetry 最新版の取り込みMP Metricsマイナーアップデート2023年6月リリース予定Jakarta EE 9.1 または Jakarta EE 10のどちらでも動作63
MicroProfile 7.0 (案)© 2023 Fujitsu LimitedOpen Telemetry MetricsJWT 3Open Telemetry Logging2023年6月リリース予定MicroProfile独自のAPIを作るか議論MP Metricsをオプショナル化Jakarta Securityとの関連性64
© 2023 Fujitsu LimitedQ&A65
Thank you© 2023 Fujitsu Limited