LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) アジェンダ Jakarta EE おさらい Jakarta EE 11 Jakarta EE 12 MicroProfileとJakarta EE
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta EE 仕様策定委員 MicroProfile ステコミ委員 JCP Executive Committee メンバー Eclipse Foundation ボードディレクター 自己紹介
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) アジェンダ Jakarta EE おさらい Jakarta EE 11 Jakarta EE 12 MicroProfileとJakarta EE
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Java EE 5 (J2SE 5.0) Java EE 8 (Java SE 8) Jakarta EE 9 (Java SE 8/11) Jakarta EE 10 (Java SE 11/17) Jakarta EE 11 (Java SE 17/21) Java EE 6 (Java SE 6) EJB 3, JPA, JAX-WS CDI, JAX-RS WebSocket, Batch, Concurrency HTTP/2, Security Eclipse Foundationからリリース 名前空間ビッグバン javax -> jakarta Core Profile Data Java EE 7 (Java SE 7) Jakarta EE 8 (Java SE 8) Java EE から Jakarta EE
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta EE 仕様 EFSP(*)では、PlatformとProfileの差異について明確な記述はない コンポーネント仕様の集合 Jakarta EE Platform、Jakarta EE Web Profile コンポーネント仕様(単体仕様) 単体の仕様 Jakarta Batch、Jakarta Mail Profile/Platform仕様 Platformに含まれないコンポーネント仕様もある * EFSP: Eclipse Foundation Specification Process 例 “EE”は 付かない 例 “EE”は 付く
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) プロファイル ・ プラットフォーム Webアプリケーションを対象とした仕様群 Jakarta EE Platform ほぼすべての仕様を含む エンタープライズアプリケーションのすべてをカバーする Jakarta EE Web Profile クラウドネイティブアプリケーションで最低限必要な仕様群 Jakarta EE 10から Jakarta EE Core Profile
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) リリースとアナウンス リリース 仕様策定委員会が各仕様を承認(+α)すること コンポーネント仕様・プロファイルごとに実施される アナウンス Eclipse Foundation / Jakarta EE WGがメディアに広報すること 歴史的には、プラットフォーム・プロファイルあわせて実施される
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta EE 学習資材 Jakarta EE Learn https://jakarta.ee/ja/learn/ https://www.linkedin.com/learning/jakarta-ee-overview/ 学習ポータル Jakarta EE 10ベースの学習ドキュメント (英語) LinkedInコース Jakarta EEの概要コース 音声は英語だが、日本語字幕・スクリプト付
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) アジェンダ Jakarta EE おさらい Jakarta EE 11 Jakarta EE 12 MicroProfileとJakarta EE
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta EE 11は、〇〇した最初のリリース Jakarta EE になってから(2019年)、 新規コンポーネント仕様がリリース(Jakarta Data) J2EE 1.0(1999年)以来、まったく新しいTCKフレームワーク 開発中にマイルストーンを5回リリース
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) TCKリファクタリング Java Test Harness Jakarta EE 10までは、古いテストフレームワークを使用 Jakarta EE 11では、新しいテストフレームワークへ移行 J2EE/Java EEからの技術負債でメンテできる人が少ない JUnit や Arquillian 移行にはOpenRewriteを使うも、苦戦 OpenRewriteで変換したコードを修正する作業に膨大な時間 TCK走行時間は激減
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) 開発生産向上 新仕様 Jakarta Data 永続化ロジックとデータベースアクセスを疎結合に プラットフォームの合理化(Streamlining Platform) より速く / より単純に
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) クエリー (Jakarta Data) @Queryに、クエリー式を記載することで、メソッド定義 クエリー式には、Jakarta Data Query Language、または、 Jakarta Persistence Query Languageが、記載可能 @Query(“where title like : title”) List<Book> booksByType(String title);
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Managed Bean Managed Bean 2.0が、 プラットフォーム仕様、プロファイル仕様から削除 (コンポーネント仕様がなくなるわけではない) CDIへ移行で、開発の単純化と速度向上
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Security Manager JEP 411/486により、Security Managerが、 Java SEで非推奨・廃止 Jakarta EE 11では、Security Managerの参照を削除 ドキュメント上は、Security Managerは使えないが、 APIや実装には含まれている場合があるので、 Jakarta EE 12で完全削除を目指す
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Optional機能の削除 Jakarta EE 11以降、「Optional」仕様は、 プラットフォーム仕様・プロファイル仕様には含まれない Jakarta SOAP with Attachments 4.0 Jakarta XML Web Services 4.0 Jakarta XML Binding 4.0 これらのコンポーネント仕様がなくなるわけではない コンポーネント仕様で定義されているOptionalな機能が なくなるわけではない
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) recordのCDI beanは、デフォルトではバリデーションされない プロデューサメソッドを用意する必要あり public record Monster ( @NotBlank String name, @NotNull String ability, @Min(10) @Max(100) int hp) {} Jakarta Validation 3.1 Record対応 (仕様の明確化)
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) recordをEmbeddableに指定可能 java.time.Instance、java.time.Yearなどをサポート QLに、union、intersect、expectなどが追加 その他多数の機能エンハンス Jakarta Persistence 3.2 エンハンス EntityResultに、lockMode追加。 デフォルトはOPTIMISTIC。
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) @Embeddable public record Address ( String city, String banchi, String zip){} @Entity public class Person { @Id private Long id; private String name; @Embedded private Address address); Jakarta Persistence Embeddable Record
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) CDI エンハンス CDI 3.0 (Jakarta EE 9) CDI 4.0 (Jakarta EE 10) (*)CDI in Jakarta EEは Platform、Profile仕様へ移動 Core CDI Core CDI CDI in Jakarta EE CDI in Java SE (*) CDI Lite CDI Full CDI 4.1 (Jakarta EE 11) CDI in Jakarta EE CDI in Java SE CDI in Java SE Core CDI CDI Lite CDI Full
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta Servlet 6.1 エンハンス リダイレクト時に、ステータスコード、200を指定可能に 新しいステータスコード(308,421,422,426)のサポート RequestDispatcherにエラー用のクエリストリング属性を追加 static final String ERROR_QUERY_STRING = "jakarta.servlet.error.query_string"; sendRdirect(“what/do/you/know”, 200); public static final int SC_PERMANENT_REDIRECT = 308; その他多数の機能エンハンス
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) 仕様詳細の確認方法 (1) https://jakarta.ee/ja/specificationsにアクセス 「仕様」->「仕様の参照」 各仕様の「詳細を表示」
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) アジェンダ Jakarta EE おさらい Jakarta EE 11 Jakarta EE 12 MicroProfileとJakarta EE
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta NoSQL 1.0 の例 (Entityの定義) @Entity public class Car { @Id private long id; @Column private String name; @Column private Type type; }
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) @Inject Template template; var ferrari = Car.id(1L).name(“Ferrari”).type(Type.SPORT); template.insert(ferrari); template.delete(Car.class, 1L); var cars = template.select(Car.class) .where(“type”).eq(Type.SPORT).result(); Jakarta NoSQL 1.0 の例 (Entityの利用)
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) MicroProfile JWT Bridge MicroProfile JWTトークンを Jakarta EEコンテナにマッピングできるAPI JWTのプロパティを設定できるアノテーションを定義 JwtAuthenticationMechanismDefinitionインターフェース Jakarta Security経由でMicroProfile JWTを利用可能にする MicroProfile JWT MicroProfile JWT Bridge Jakarta Security
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) JSONスキーマのサポート (JSON-P/JSON-B) Jakarta MailのCDI拡張 Jakarta Transactionでのresource commit optimization one-phase commit local transaction ポスト Jakarta EE 12
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) アジェンダ Jakarta EE おさらい Jakarta EE 11 Jakarta EE 12 MicroProfileとJakarta EE
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) MicroProfile OpenAPI 4.1 Jakarta RESTアプリケーションから、 OpenAPI v3.1ドキュメントを生成するAPI • jsonSchemaDialectのサポート • Extensibleの改良 4.1での変更点
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) MicroProfile AI 2024年1Qに、MicroProfile AIグループの設立 標準化は時期尚早 LLMとの接続インターフェース作成が目標 LangChain4jをベースとし、 Jakarta/MicroProfile仕様を統合 Jakarta CDI MicroProfile Fault Tolerance MicroProfile Telemtry
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) MicroProfile移管背景 MicroProfile ConfigのJakarta EEへの移管要望大 歴史的にコミュニティ・ベンダーからの2グループの統合要望 プログラミングモデルが共通 (CDIベース) オーバヘッドの解消
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) 相関関係 (3月19日のプロポーザル) Jakarta EE Platform Jakarta MicroProfile Platform Spec Standalone Specs Core Profile Jakarta MicroProfile Config Web Profile
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) 議論 MicroProfile はJakartaのプロファイルになるのか GitHubリポジトリをJakarta配下に移すのか MicroProfileブランドは残すのか パッケージ名は変えるのか リリース間隔はJakarta EE プラットフォームと独立か https://github.com/microprofile -> https://github.com/jakartaee 「 Jakarta MicroProfile Health 」 ? 「 Jakarta Health 」 ? 「 org.eclipse.microprofile.xxx 」 ? 「 jakarta.xxx 」? 例 例