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

Jakarta EE 9 とこれから

Jakarta EE 9 とこれから

JJUGナイトセミナー 2021/1

Kenji Kazumura

May 23, 2022
Tweet

More Decks by Kenji Kazumura

Other Decks in Programming

Transcript

  1. Copyright 2021 FUJITSU LIMITED アジェンダ 1. Jakarta EE とは 2.

    Jakarta EE 9 3. Jakarta EE 9.1 4. Jakarta EE 10 and Beyond 5. CN4Jアライアンス 6. 最後に 1
  2. Who am I ? Copyright 2021 FUJITSU LIMITED } {

    “名前”: “数村憲治”, “勤務”: “富士通”, “Jakarta EE”: “Specification Committee メンバー”, “JCP”: “EC メンバー”, “Eclipse Foundation”: “ボードディレクター”, “Twitter”: “@kkzr” 2
  3. Copyright 2021 FUJITSU LIMITED アジェンダ 1. Jakarta EE とは 2.

    Jakarta EE 9 3. Jakarta EE 9.1 4. Jakarta EE 10 and Beyond 5. CN4Jアライアンス 6. 最後に 3
  4. Copyright 2021 FUJITSU LIMITED Jakarta EE ▪ オープンな仕様 ▪ Jakarta

    EE Specification Process ▪ コードファースト ▪ オープンソースTCK ▪ Eclipse TCK License ▪ オープンな認証プロセス ▪ 互換実装 ▪ Jakarta EE Platform (Full Platform/ Web Profile) 4
  5. Copyright 2021 FUJITSU LIMITED Jakarta EE コミュニティ 18 団体メンバー 123

    新規コントリビューター ~65M コードステップ数 31 オープンソースプロジェクト 60 GitHubリポジトリ 5
  6. Copyright 2021 FUJITSU LIMITED ロードマップ 2019/9 Jakarta EE 8 Jakarta

    EE 9 Jakarta EE 9.1 Jakarta EE 10 2020/11 2021/? 202x 次のステップ ▪ CDI中心 ▪ Java SE の最新技術を利用 ▪ ポータビリティとベンダー中立 6
  7. Copyright 2021 FUJITSU LIMITED Jakarta EEとEE4J EE4J (Eclipse Enterprise for

    Java) Jakarta EE Working Group ▪ ベンダー中心 ▪ ガバナンス・予算 ▪ 仕様承認 ▪ マーケティング・ブランド ▪ 開発者中心 ▪ オープンソースコード/TCK ▪ 仕様作成 ▪ アジャイル・イノベーション 8
  8. Copyright 2021 FUJITSU LIMITED Jakarta EEの組織 Jakarta EEワーキンググループ 方向性の決定 Platformプロジェクト

    [プランの作成] 各仕様プロジェクト 各仕様プロジェクト [仕様の作成] EE4Jプロジェクト 承 認 委 任 ステコミ(Steering Committee) 仕様委員会 実装プロジェクト(GlassFishなど) [実装の作成] 9
  9. Copyright 2021 FUJITSU LIMITED アジェンダ 1. Jakarta EE とは 2.

    Jakarta EE 9 3. Jakarta EE 9.1 4. Jakarta EE 10 and Beyond 5. CN4Jアライアンス 6. 最後に 10
  10. Copyright 2021 FUJITSU LIMITED Jakarta EE 9 コンセプト ▪ 容易な新規参入

    ▪ 新たなベンダーが互換実装を作りやすくする ▪ コードファースト ▪ イノベーションの基礎 ▪ Cloud Native Javaへのキーステップ ▪ 簡単な移行 ▪ 新しい名前空間へ移行するためのプラットフォーム 11
  11. Copyright 2021 FUJITSU LIMITED スコープ ▪名前空間の変更 ▪古い仕様の削除 ▪Java SE 8の仕様を追加

    ▪ドキュメントのアップデート ▪ javax.* -> jakarta.* ▪ Jakarta EE 8 のドキュメントは、Java EE 8を 参照させる形式 12
  12. Copyright 2021 FUJITSU LIMITED 名前空間の変更 ▪APIパッケージ名のトップレベルをjavaxからjakartaに変更 ▪ビッグバン v.s. インクリメンタル ▪

    javaxは、APIを変更しない場合に限って使用可能 ▪ この制約により、Jakarta EE 8では機能追加がなかった ▪ これから、Jakarta EEに機能追加していくために、javax を使わないよにする ▪ 必須仕様も、オプション仕様も、すべてのAPIをJakarta EE 9 で変更するビッグバン方式 13
  13. Copyright 2021 FUJITSU LIMITED 名前空間変更による互換性 Jakarta EE 8/Java EE 8以前のアプリは動くのか?

    バイナリ互換 ソース互換 ランタイム製品による対応 実装製品は実行時に パッケージ名を変換する 仕組みを提供することを推奨 Jakarta EE 8ビルド環境を 使用するか、jakarta名前 空間へのソース変更 ? IDE他ツールによる対応 14
  14. Copyright 2021 FUJITSU LIMITED スキーマ ⚫ Java EE 8 ⚫

    Java EE 7 ⚫ http://xmlns.jcp.org/xml/ns/javaee/application_8.xsd ⚫ http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd Jakarta EE 8/Java EE 8以前は、JCPのURLを使用 ⚫ http://xmlns.jcp.org/xml/ns/javaee/application_7.xsd ⚫ http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd ⚫ http://xmlns.jcp.org/xml/ns/javaee/application_8.xsd ⚫ http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd Jakarta EE 9のスキーマは、jakarta.eeのURLを使用 https://jakarta.ee/xml/ns/jakartaee/#9 ▪ Java EE 8のスキーマ―も利用可能(Java EE 7以前はベンダー依存) ▪ スキーマ一覧 ⚫ Java EE 9 15
  15. Copyright 2021 FUJITSU LIMITED Java SE バージョン ▪ 各APIはJava SE

    8ソースレベルでコンパイル ▪ Jakarta EE 9 PlatformとWebプロファイルの互換実装は、 Java SE 11で動作しなければならない Java SE 8での動作は任意 Java SE 8で動作しなければならない Java SE 9以降での動作は任意 16
  16. Copyright 2021 FUJITSU LIMITED 仕様バージョン ▪ 各仕様のバージョンは、メジャー番号を上げる ▪ Maven artifact

    なども、メジャー番号のアップ 機能追加はないけど、名前空間の変更のため 例: JPA 2.2 → 3.0 17
  17. Copyright 2021 FUJITSU LIMITED Jakarta EE 9で削除される仕様 (pruning) ▪ Jakarta

    Stable API プロジェクト仕様 ▪ Jakarta XML Registries ▪ Jakarta XML RPC ▪ Jakarta Deployment ▪ Jakarta Management ▪ Support for Distributed Interoperability ▪ Jakarta Enterprise Beans Core Contracts and Requirements, Chapter 10 (注) (注) Optional Features でない方 18
  18. Copyright 2021 FUJITSU LIMITED Pruning ▪Java EE仕様で使われていたPruning(=Optional) とは意味が変わっている。 ▪ 古いAPIを仕様から削除することで、新規参入障壁を軽減

    ▪ 仕様から削除された仕様を製品として提供するかは、 ベンダー次第 仕様からの削除 提供されない 19
  19. Copyright 2021 FUJITSU LIMITED Jakarta EE 9 で Optional になった仕様

    ▪Jakarta Enterprise Beans 2.x API group ▪Jakarta Enterprise Web Services, JSR 109 20
  20. Copyright 2021 FUJITSU LIMITED Java SE 8から追加されるAPI ▪ Jakarta Activation

    (必須) ▪ Jakarta XML Binding (オプショナル) ▪ Jakarta XML Web Services (オプショナル) ▪ Jakarta Web Services Metadata (オプショナル) ▪ Jakarta SOAP with Attachments (オプショナル) これらのAPIも、javax から jakarta パッケージに変更 21
  21. 開発者は、アプリが 新しい名前空間に 移行できるか検証 Copyright 2021 FUJITSU LIMITED ツーリングリリース Jakarta EE

    10で加速するための基礎作り ツールベンダーは 新しい「jakarta.*」 名前空間に対応 Jakarta EE 9はビッグバンに対応するためのツーリングリリース ランタイムベンダーは Jakarta EE 8 互換サポート機能 の検証 22
  22. Copyright 2021 FUJITSU LIMITED 対応ツール(調整中・対応中) IDE • Eclipse Che •

    Eclipse Desktop • NetBeans • IntelliJ • VS Code 移植ツール • Eclipse Transformer • Apache migration tool モニタリング • New Relic • AppDynamics • DataDog • Elastic テスト • JBoss Arquillian 23
  23. Copyright 2021 FUJITSU LIMITED 移植ツール ▪ Eclipse Transformer ▪ Apache

    Tomcat migration tool for Jakarta EE ▪ https://projects.eclipse.org/projects/technology.transformer ▪ https://github.com/eclipse/transformer ▪ https://github.com/apache/tomcat-jakartaee-migration 24
  24. Copyright 2021 FUJITSU LIMITED Eclipse Transformer ▪ クラス内で使用されているパッケージ名の変更 ▪ APIとコマンドラインI/F

    ▪コマンドラインI/F ▪ javax → jakarta ▪ 任意のルールも設定可能 ▪ クラスローダーからの使用可能(実行時に変換) ▪ jar/war/classが対象 25
  25. Copyright 2021 FUJITSU LIMITED アジェンダ 1. Jakarta EE とは 2.

    Jakarta EE 9 3. Jakarta EE 9.1 4. Jakarta EE 10 and Beyond 5. CN4Jアライアンス 6. 最後に 26
  26. Copyright 2021 FUJITSU LIMITED 仕様委員会 2021年計画 ▪新リリース [第一優先] ▪スピードアップ[第二優先] ▪

    Jakarta EE 9.1 - JDK11対応 ▪ 各仕様のアップデート ▪ 9.x プラットフォームリリース (インクリメンタルに機能追加) ▪ 優先度・プランについて、コミュニティからのフィードバック ▪ 仕様プロジェクトと実装プロジェクトの分離 ▪ TCKのモダナイズ ▪ Jakarta EE 10 メジャーリリース ▪ GlassFish 依存解消 27
  27. Copyright 2021 FUJITSU LIMITED スコープ – Jakarta EE 9.1 ▪

    仕様は、Jakarta EE 9と同じ ▪ Java SE 11 サポートの追加のみ ▪ Platform Specification と Web Profile Specification のみ APIのアップデートはなし 30
  28. Copyright 2021 FUJITSU LIMITED Java SE 11対応 ▪ もともと、Jakarta EE

    9で、Java SE 11対応予定 ▪ 2020年6月に、「Java SE 8を必須」、に変更 Java SE 11必須、Java SE 8はオプショナル TCKの対応が困難 Jakarta EE 9 リリース後、 Jakarta EE 9.1 で速やかにJava SE 11対応 31
  29. Copyright 2021 FUJITSU LIMITED Java SE 11対応 ▪ API ソースレベル

    ▪ TCK ソースレベル ▪ target/source レベルは、引き続き、Java SE 8レベル ▪ API(jarファイル)は、Java SE 8と11の両方で使われる ▪ TCKはJava SE 8レベルでコンパイル ▪ 一つのTCKバイナリで、Java SE 8と11の両方で、 互換テストに使用できる 32
  30. Copyright 2021 FUJITSU LIMITED 互換実装 ▪ Eclipse GlassFishが候補 ▪ CI

    (互換実装)が、どのようにJava SE 11ランタイムを サポートするかは、ベンダーしだい。 JPMSなど Jakarta EE 9.1互換のEclipse GlassFishがいつリリース されるかは、GlassFishコミュニティ次第 33
  31. Copyright 2021 FUJITSU LIMITED 各仕様のマイナーアップデート ▪ APIのアップデートは、Jakarta EE 9.1には含めない ▪

    APIに影響を与えないドキュメントの修正は可 ▪ 2021年1月末までに、個別のリリースプランが必要 ▪ バグ修正は含める 34
  32. Copyright 2021 FUJITSU LIMITED Jakarta EE 9.1 APIs ▪ PlatformとWebProfileのAPI

    jarは、再作成 ▪ 中身は、Jakarta EE 9.0のjarファイルと同じ ▪ maven artifact を見やすく、探しやすくするため 35
  33. Copyright 2021 FUJITSU LIMITED アジェンダ 1. Jakarta EE とは 2.

    Jakarta EE 9 3. Jakarta EE 9.1 4. Jakarta EE 10 and Beyond 5. CN4Jアライアンス 6. 最後に 36
  34. Copyright 2021 FUJITSU LIMITED リリース間隔 ▪Feature Release v.s. Time Box

    ▪Time Box ▪LTS v.s. STS 1年に1回? 半年に1回? 2年に1回? 3年以上? 仕様としての長期サポートの意味は 38
  35. Copyright 2021 FUJITSU LIMITED Java SE リリースとの同期 ▪Java SE 17が2021年リリース予定

    ▪今後、Java SEのアップデートと同期するのか? Jakarta EE はいつ対応するのか? 39
  36. Copyright 2021 FUJITSU LIMITED CDI Lite ⚫ Jakarta DI ⚫

    Jakarta CDI Lite ⚫ Jakarta CDI Core ⚫ Jakarta CDI EE AOT、Build Time Injectionなどへの対応のためレベル分け 40
  37. Copyright 2021 FUJITSU LIMITED 既存仕様のアップデート ▪Jakarta Security ▪Jakarta Concurrency ▪Jakarta

    Messaging JWT, OAuth2などのサポート ▪ @MaxConcurrencyなどの追加 ▪ Java SEのcompletable futureのサポート ▪ Message Driven Beanと同等のCDIサポート ▪ Kafka/MQTT/AMQP連携 ▪ Java SEスタンドアローンAPI 42
  38. Copyright 2021 FUJITSU LIMITED 既存仕様のアップデート ▪Jakarta Persistence ▪Jakarta Rest ▪

    NoSQL/JCacheのサポート ▪ マルチテナンシーのサポート ▪ Java SEの Recordへの対応 ▪ @Contextの替わりに@Injectのサポート ▪ Java SEスタンドアローンAPI ▪ multipart/form-dataのネイティブサポート 43
  39. Copyright 2021 FUJITSU LIMITED Jakarta EE Platform以外のJakarta 仕様 ▪Jakarta MVC

    2.0 ▪Jakarta NoSQL https://jakarta.ee/specifications/mvc/ https://jakarta.ee/specifications/nosql/ 44
  40. MVC Copyright 2021 FUJITSU LIMITED プロファイル(例) Web Profile + Platform

    外部 既存 オプション 新規 Enterprise Beans Messaging Activation Mail Connectors Concurrency Batch Authorization XML Binding XML Web Services Enterprise Web Services SOAP with Attachments Web Services Metadata Enterprise Beans 3.x Enterprise Beans 2.x Cloud Profile + Web Profile Servlet Server Pages Expression Language Debugging Support Standard Tag Libraries Server Faces WebSocket Enterprise Beans Lite Persistence Transactions Managed Beans Interceptors CDI Authentication RESTful Web Services JSON Processing JSON Binding Annotations Bean Validation Dependency Injection Security Cloud Profile CDI Lite Config 45
  41. Copyright 2021 FUJITSU LIMITED アジェンダ 1. Jakarta EE とは 2.

    Jakarta EE 9 3. Jakarta EE 9.1 4. Jakarta EE 10 and Beyond 5. CN4Jアライアンス 6. 最後に 46
  42. Copyright 2021 FUJITSU LIMITED 仕様のIPフロー 仕様 実装品 コントリビューター 実装者 このダウンストリームラインセンスは、

    ASLやEPLではカバーされていない 特 許 実装 特 許 特 許 仕様を実装する目的 でライセンスされる。 改変はできない。 仕様リリース前に 特許の使用を 認める。 48
  43. Copyright 2021 FUJITSU LIMITED Eclipse Foundation内での運用 ▪以下の4つで仕様ライセンスをカバー ▪Eclipse Foundation Specification

    Process(EFSP) 仕様策定する場合は、このプロセスに従う必要あり ▪ Eclipse Foundation Specification License (EFSL) ▪ Eclipse Foundation TCK License ▪ Participation Agreement ▪ IP Policy 49
  44. Copyright 2021 FUJITSU LIMITED MicroProfile ワーキンググループ ▪Jakarta EEとは独立したWG ▪仕様を策定するのに必要 ▪

    2020年10月に設立 ▪ 参加メンバー(2021年1月現在) IBM、Red Hat、Tomitribe、Oracle、Payaraなど ▪ Steering Committeeが仕様の承認 (独立した仕様委員会は設けない) ▪ 2020年11月にMicroProfile 4.0をWGとして初めてリリース ▪ 2021年1月にMicroProfile 4.1をEFSLでリリース 51
  45. Copyright 2021 FUJITSU LIMITED MicroProfile と Jakarta EE 2019年秋 CodeOne開催時に、

    主要ベンダーでMPWG の設立意向を確認 2020年初 2020年夏 2020年秋 MicroProfileがJakarta EEに合流する方向 Umbrella WG 構想 独立したWGとして設立 Jakarta EE WGの予算 の一部が MPWGへ Cloud Native for Java 構想 52
  46. Copyright 2021 FUJITSU LIMITED CN4J アライアンス ▪MicroProfile と Jakarta EE

    のシナジーが目的 ▪ゴール ▪ノン・ゴール ▪ 一貫したマーケティング・プロモーション MicroProfileとJakarta EEは競合ではない ▪ 技術討議をする場を設ける Jakarta EEはどのようにMicorProfileのAPIを取り入れるか ▪ 現在の、MicroProfile と Jakarta EE WGの構造を変える ▪ 新しいWGを作る 53
  47. ▪Push v.s. Pull (2020年春) ▪CN4Jアライアンス (2021年初) Copyright 2021 FUJITSU LIMITED

    MP APIをJakarta EEにどう取り込むか forkは好ましくないという議論が白熱 forkする・しないで、議論が再燃 MicroProfile Jakarta EE 互換性 非互換許容 互換性重視 リリースサイクル 数回/年 1回/年(?) パッケージ名 org.eclipse.microprofile jakarta.ee ▪ [MPコミュニティ] Pullモデルを選択 ▪ [Jakartaサイド] APIを取込むので、MP APIをforkする。 54
  48. Push/Pullモデル 仕様 作成 push MicroProfile ・パッケージ名 ・互換性 ・ライフサイクル 仕様 incubation

    graduation 成熟 作成 pull MicroProfile Pushモデル:成熟したものをJakarta EEへ提供 Pullモデル:ダウンストリームを気にせず一方的に作る 仕様 利用者 ・パッケージ名 ・互換性 ・ライフサイクル 利用者 55
  49. 仕様共有案 案1:MicroProfileの仕様を名前空間を変えずに Jakarta EEに移動 MicroProfileのブランドが混乱 案2:MicroProfileの仕様を名前空間を変えて Jakarta EEに移動 MicroProfileは互換性の担保が必要 案3

    :MicroProfileの仕様をJakarta EEが参照 循環依存が発生 案4 :Jakarta EEで独自に作る 依存関係は解消できるが、冗長で、 似て非なるものができる。 56
  50. Copyright 2021 FUJITSU LIMITED アジェンダ 1. Jakarta EE とは 2.

    Jakarta EE 9 3. Jakarta EE 9.1 4. Jakarta EE 10 and Beyond 5. CN4Jアライアンス 6. 最後に 57
  51. 60

  52. Copyright 2021 FUJITSU LIMITED ?? ▪ プラットフォーム以外の仕様 ▪ Jakarta MVC

    2.0 ▪ Jakarta NoSQL https://jakarta.ee/specifications/mvc/ https://jakarta.ee/specifications/nosql/ 65
  53. Copyright 2021 FUJITSU LIMITED Program Plan (Specification Comm.) https://docs.google.com/presentation/d/1Kh8I7xjYPW9YFK9NHZwgd55UNuzScRTufzZJYVMp2Z0/edit#slide=id.g9591dbaa17_0_14 ▪

    新しいリリース [第一優先] ▪ スピードアップ[第二優先] ▪ Jakarta EE 9 on JDK11 ▪ Update individual specifications ▪ 9.x platform release(s) with incremental features ▪ Obtain community feedback on priorities/plan ▪ Split specification and implementation projects ▪ Modernize TCKs, build TCK knowledge to achieve relase golas ▪ Major Jakarta EE 10 relase ▪ Eliminate GlassFish depnedencies 66
  54. Copyright 2021 FUJITSU LIMITED Compatible Implementation ▪ CI (互換実装)が、どのようにJava SE

    11ランタイムを サポートするかは、ベンダーしだい。 JPMS 67
  55. Copyright 2021 FUJITSU LIMITED ツール Jakarta EE 10に備えて、ツールの整備 Jakarta EE

    9 ツーリングリリース ▪ IDE ▪ モニタリングツール ▪ テストツール ▪ 移植ツール 68