AI and Automation 事業部 Application Modernization テクニカルセールス n WebSphere Application Serverなどの テクニカルセールスを20年以上担当 n Twitter(X) @TTakakiyo n https://www.linkedin.com/in/takakiyo/
The Java Language Specification, Java SE 21 Edition n JVM(Java仮想マシン)仕様 – The Java Virtual Machine Specification, Java SE 21 Edition n 標準API仕様 – Java® Platform, Standard Edition & Java Development Kit Version 21 API Specification n 関連ツール – Java® Development Kit Version 21 Tool Specifications n その他 – JAR File Specification – Java AWT Native Interface Specification and Guide – Java Debug Wire Protocol – Java Native Interface (JNI) Specification – Java Object Serialization Specification – ・・・ 6
Javaで構築するための追加APIの標準仕様群 7 Java SE Runtime RESTful Web Services Servlet Messaging Pages Batch JSON Binding Faces XML Web Services Enterprise Beans XML Binding JSON Processing Concurrency Security Authentication Jakarta EE APIs Authorization
Jakarta Pages(JSP) – Jakarta Faces(JSF) n Enterprise Beans Container – Jakarta Enterprise Beans(EJB) n 各種サービス – Jakarta Contexts and Dependency Injection(CDI) – Jakarta Persistence(JPA) – Jakarta Transaction(JTA) – Jakarta Messaging(JMS) – Jakarta Connector(JCA) – Jakarta RESTful Web Services(JAX-RS) – Jakarta XML Web Services(JAX-WS) – Jakarta Concurrency (Concurrency Utility for Java EE) 8 ( )内はJava EEでの名称
Jakarta EE/Java EEのServlet実⾏環境上で,実⾏されている n そのため,Spring Bootの成果物を他のJakarta EE実装で実⾏したり, Jakarta EEアプリケーションの中から Spring Frameworkの機能を使⽤することも可能 – Spring Bootの成果物をOpen Libertyのうえで実⾏すると, ピーク時のスループレットが倍増する 10 https://openliberty.io/blog/2022/10/17/memory-footprint-throughput-update.html
Member – Participant Member – Guest Member n 3つのCommittee – Marketing Committee – Specification Committee – Steering Committee 13 https://jakarta.ee/membership/members/
EE最初のバージョン – Eclipse Foundationでのコミュニティプロセスをまわすためのバージョン – 技術的には,Java EE 8.0と全く同じ – 仕様名の名前の付け⽅がバラバラだったものが,統⼀性のある名前に変更になった (変なアクロニム多過ぎ問題が改善) n 2020年11⽉ Jakarta EE 9.0 – 名前空間(パッケージ名)をjavaxからjakartaに変更 – いくつかの仕様の削除(旧JAX-RPC, JAX-R, Java EE Management, Java EE Deploymentなど) n 2021年5⽉ Jakarta EE 9.1 – Java SE 11仕様への対応 n 2022年9⽉ Jakarta EE 10 – Core Profileの新設 – 新しい機能やAPIの追加 n 2024年7⽉ Jakarta EE 11公開予定 15
Jakarta Faces︓JSF(Java Server Faces) n Jakarta Persistence︓JPA(Java Persistence API) n Jakarta Messaging︓ JMS(Java Message Service) n Jakarta Connector︓JCA(Java Connector Architecture) n Jakarta Transaction︓JTA (Java Transaction API) n Jakarta Concurrency︓Concurrency Utility for Java EE n Jakarta Validation︓Bean Validation n Jakarta RESTful Web Services︓JAX-RS(Java API for RESTful Web Services) n Jakarta JSON Binding︓JSONB n Jakarta JSON Processing︓JSONP 16
for XML-based Web Services) n Jakarta XML Binding︓JAXB(Java Architecture for XML Binding) n Jakarta Web Services Metadata︓JWS(Java Web Services Metadata) n Jakarta SOAP with Attachments︓SAAJ(SOAP with Attachments API for Java) n Jakarta Security︓Java EE Security API n Jakarta Authentication︓ JASPIC(Java Authentication Service Provider Interface for Containers) n Jakarta Authorization︓JACC(Java Authorization Contract for Containers) 17
public Long id; public String name; public String email; } public class UserService { @PersistenceContext private EntityManager entityManager; @Transactional public List<User> findUsersByName(String name) { return entityManager .createQuery("SELECT u FROM User u WHERE u.name = :name", User.class) .setParameter("name", name) .getResultList(); // 名前に基づいてユーザーを検索する } } 対象のエンティティを定義 検索の疑似SQLを⾃分で記述する必要がある
7 / Java EE 8 / Jakarta EE 8対応 nVersion 21.0.0.12から – Java EE 7 / Java EE 8 / Jakarta EE 8 / Jakarta EE 9対応 nVersion 23.0.0.3から – Java EE 7 / Java EE 8 / Jakarta EE 8 / Jakarta EE 9 / Jakarta EE 10対応 nVersion 24.0.0.9か12から(予定) – Java EE 7 / Java EE 8 – Jakarta EE 8 / Jakarta EE 9 / Jakarta EE 10対応 – Jakarta EE 11対応予定 47
n 構成ファイルを修正しないかぎり,バージョンを上げても新しい機能は有効にならない n Libertyのバージョンを更新しても,アプリケーションや構成の「マーグレーション」は不要 50 servlet-4.0 servlet-5.0 servlet-5.0 servlet-6.0 Tomcat 11.x Liberty 21.0.0.12 ⼀般的なアプリケーションサーバー WebSphere Liberty servlet-4.0 Tomcat 10.x servlet-6.0 Liberty 23.0.0.3 Tomcat 9.x
のプランはまだありません。将来のJava SEのバージョ ンでJava EE 8と互換性のない変更が導⼊された場合、 Java EE 8の機能のサポート終了について計画する必要 があります。ですが、最新バージョンのJava SE 20や 次期の21ではそのような⾮互換性はありません。」 (Ian Robinson, IBM Application Runtimes CTO) n 当分の間,Java EE仕様のアプリケーションも 最新版のLibertyで実⾏することができます n Java SEの仕様のサポートはある時点で終了します – Java SE 8/11は,26.0.0.9までサポート予定 – Java SE 17は,27.0.0.9までサポート予定 51 Java EE 6* Java EE 7 Java EE 8 Jakarta EE 9.1 Jakarta EE 10 Java SE 8 Java SE 11 Java SE 17 Java SE 21 MicroProfile 1.0 MicroProfile 1.2 ... MicroProfile 4.0 MicroProfile 4.1 MicroProfile 5.0 MicroProfile 6.0 MicroProfile 6.1 WebSphere Liberty Open Liberty * 製品版でWeb Profileのみ対応
Version 24.0.0.3では266 Features – 配布ZIPサイズ︓332M byte n Kernel – Featureが⼀つも⼊っていない / featureUtilityコマンドで必要なFeatureを導⼊して使⽤する – 配布ZIPサイズ︓14M byte n Jakarta EE 10 – Jakarta EE 10 platformとMicroProfile 6のFeature – 配布ZIPサイズ︓133M byte n Java EE 8 – Java EE 8 platformとMicroProfile 4のFeature – 配布ZIPサイズ︓137M byte 52 https://openliberty.io/start/#runtime_releases こちらはバージョンが上がるにつれ, どんどん⼤きくなっていますが これらの配布サイズは ほとんど変化がありません