Java SE を拡張する仕様セット
Jakarta EE は 、以前は Java Platform, Enterprise Edition ( Java EE ) および Java 2 Platform, Enterprise Edition ( J2EE ) と呼ばれ、 Java SE [1]を拡張して、 分散コンピューティング や Web サービス [2] などのエンタープライズ機能の仕様を盛り込んだ 仕様セットです 。Jakarta EE アプリケーションは、 マイクロサービス または アプリケーション サーバー である リファレンス ランタイム 上で実行され、 デプロイするコンポーネントの
トランザクション、セキュリティ、スケーラビリティ、 並行性、管理を処理します。
Jakarta EEは 仕様 によって定義されています。仕様は API (アプリケーション・プログラミング・インターフェース)とその相互作用を定義しています。他の Java Community Process仕様と同様に、プロバイダーは自社製品を Jakarta EE準拠 と宣言するために、一定の適合要件を満たす必要があります 。
Jakarta EE 参照ランタイムが使用されるコンテキストの例としては、 電子商取引 、 会計 、 銀行 情報システム などがあります。
歴史
Sun Microsystems によって作成されたプラットフォームは、バージョン 1.2 からは Java 2 Platform, Enterprise Edition または J2EE と呼ばれていましたが、バージョン 1.5 で Java Platform, Enterprise Edition または Java EE に名前が変更されました 。
2009年にサンが買収された 後、Java EEは Oracleによって Java Community Process の下で 保守されました 。2017年9月12日、 Oracle CorporationはJava EEを Eclipse Foundation に提出すると発表しました 。 [3] EclipseのトップレベルプロジェクトはEclipse Enterprise for Java(EE4J)と命名されました。 [4] Eclipse Foundationは、およびJava商標の使用に関してOracleと合意できませんでした javax。 [5] Oracleは「Java」という名前の商標を所有しており、プラットフォームはJava EEからJakarta EEに改名されました。 [6] [7]この名前は ジャワ島 最大の都市で あり、インドネシアの首都でもある ジャカルタ を指しています。 [8]この名前を 、Apache Software Foundation で現在および以前の多くのJavaプロジェクトを促進した以前の Jakarta Project と混同しないでください 。
仕様
Jakarta EE には、Web ページの生成、トランザクション方式でのデータベースの読み書き、分散キューの管理など、さまざまな目的に役立ついくつかの仕様が含まれています。
Jakarta EE API には、Jakarta Enterprise Beans 、 コネクタ 、 サーブレット 、 Jakarta Server Pages 、およびいくつかの Web サービス テクノロジなど、 基本 Java SE API の機能を拡張するいくつかのテクノロジが含まれています。
ウェブ仕様
Webサービス仕様
エンタープライズ仕様
Jakarta Activation ( JAF ) は、データの型指定とそのような型のバインディングを提供することで、コンポーネント Bean を拡張するアーキテクチャを指定します。
Jakarta Contexts and Dependency Injection ( CDI ) は、 依存性注入 コンテナを提供する仕様です 。
Jakarta Enterprise Beans ( EJB ) 仕様は、オブジェクトコンテナ (EJB コンテナ) がサポートする軽量 API のセットを定義しています。これらの API は、 トランザクション ( JTA を使用)、 リモートプロシージャコール ( RMI または RMI-IIOP を使用)、 同時実行制御 、 依存性注入 、ビジネスオブジェクトへの アクセス制御 などを提供します。このパッケージには、エンタープライズ Bean とそのクライアント間、およびエンタープライズ Bean と EJB コンテナ間の契約を定義する Jakarta Enterprise Beans のクラスとインターフェースが含まれています。
Jakarta Persistence ( JPA ) は、リレーション データベース テーブルと Java クラス間のオブジェクト リレーショナル マッピングに関する仕様です。
Jakarta Transactions ( JTA ) には、Jakarta EE が提供するトランザクションサポートと連携するためのインターフェースとアノテーションが含まれています。この API は極めて低レベルの詳細を抽象化していますが、インターフェース自体もやや低レベルであると考えられており、Jakarta EE の平均的なアプリケーション開発者は、高レベルの EJB 抽象化による透過的なトランザクション処理に依存するか、この API が提供するアノテーションを CDI マネージド Bean と組み合わせて使用するかのいずれかであると想定されています。
Jakarta Messaging ( JMS ) は、Java プログラムがエンタープライズ メッセージング システムのメッセージを作成、送信、受信、および読み取るための共通の方法を提供します。
その他の仕様
Jakarta Validation: このパッケージには、Jakarta Validation API が提供する宣言的検証サポート用のアノテーションとインターフェースが含まれています。Jakarta Validation は、Bean(Jakarta Persistence モデルクラスなど)にクロスレイヤーで適用可能な制約を統一的に提供する方法を提供します。Jakarta EE では、Jakarta Persistence は永続レイヤーで Bean Validation 制約を尊重しますが、 JSF は ビューレイヤーで尊重します。
Jakarta Batch は、大量のデータが関係し、定期的に実行する必要がある可能性のある長時間実行されるバックグラウンド タスクをアプリケーションで バッチ処理する 手段を提供します。
Jakarta Connectorsは、エンタープライズ・アプリケーション統合( EAI )の一環として、アプリケーションサーバーとエンタープライズ情報システム( EIS )を接続するためのJavaベースのツールです 。これは、一般的なアプリケーション開発者が通常は関わることのないベンダー向けの低レベルAPIです。
ウェブプロフィール
ウェブコンテナのフットプリントを物理的にも概念的にも制限する試みとして、Jakarta EE仕様のサブセットであるウェブプロファイルが作成されました。Jakarta EEウェブプロファイルは以下の要素で構成されています。
認定参照ランタイム
定義上、すべての Jakarta EE 実装は同じ基本レベルのテクノロジ (つまり、Jakarta EE 仕様と関連 API) を提供しますが、追加機能 ( コネクタ 、 クラスタリング 、 フォールト トレランス 、 高可用性 、 セキュリティ など)、インストール サイズ、 メモリ フットプリント 、起動時間など
に関しては大幅に異なる場合があります。
ジャカルタEE
Java EE
コードサンプル
以下に示すコード サンプルは、Java EE 7 のさまざまなテクノロジを組み合わせて、ユーザーを編集するための Web フォームを構築する方法を示しています。
Jakarta EEでは、 Jakarta Servlet 、 Jakarta Server Pages ( JSP )、または Jakarta Faces ( JSF )と Facelets を使用して(Web)UIを構築できます 。以下の例では、Facesと Facelets を使用しています。入力コンポーネントは、制約の検証にJakarta EE Bean Validation APIを内部的に使用していますが、これは明示的には示されていません。
<html xmlns= "http://www.w3.org/1999/xhtml" xmlns:h= "http://xmlns.jcp.org/jsf/html" xmlns:f= "http://xmlns.jcp.org/jsf/core" >
<f:metadata>
<f:viewParam name= "user_id" value= "#{userEdit.user}" converter= "#{userConvertor}" /> </f:metadata>
<h:本文>
<h:メッセージ />
<h:form>
<h:panelGrid columns= "2" > <h:outputLabel for= "firstName" value= "名" /> <h:inputText id= "firstName" value= "#{userEdit.user.firstName}" label= "名" />
<h:outputLabel for= "lastName" value= "姓" /> <h:inputText id= "lastName" value= "#{userEdit.user.lastName}" label= "姓" />
<h:commandButton action= "#{userEdit.saveUser}" value= "保存" /> </h:panelGrid> </h:form>
</h:body>
</html>
バッキングBeanクラスの例
ビューを支援するために、Jakarta EEでは「Backing Bean」と呼ばれる概念が採用されています。以下の例では、Contexts and Dependency Injection(CDI)と Jakarta Enterprise Bean ( EJB )を使用しています。
java.io.Serializable をインポートします 。
jakarta.inject.Named をインポートします 。jakarta.faces.view.ViewScoped をインポートします 。jakarta.inject.Inject を インポート します 。
@Named
@ViewScoped
パブリック クラス UserEdit は Serializable を実装します { private static final long serialVersionUID = 1L ;
プライベート ユーザー user ;
@Inject
プライベート UserDAO userDAO ;
public String saveUser ( ) { userDAO.save ( this.user ) ; addFlashMessage ( String.format ( " ユーザー%dを保存し まし た " 、 this.user.getId ( ) ) ) ;
"users.xhtml?faces-redirect=true" を返します 。 }
public void setUser ( User user ) { this . user = user ; }
パブリック ユーザー getUser () { ユーザー を返します ; } }
データアクセスオブジェクトクラスの例
ビジネスロジックの実装には、 Jakarta Enterprise Beans ( EJB ) が Jakarta EE の専用テクノロジーです。実際の永続化には、 JDBC または Jakarta Persistence (JPA) を使用できます。以下の例では、EJB と JPA を使用しています。明示的には示されていませんが、 EJB はトランザクションの動作を制御するために JTA を 裏で使用しています。
java.util.List をインポートします 。
jakarta.ejb.Stateless をインポートします 。jakarta.persistence.EntityManager を インポートします 。jakarta.persistence.PersistenceContext を インポートします 。jakarta.persistence.TypedQuery を インポートします 。
@Stateless
パブリック クラス UserDAO { @PersistenceContext プライベート EntityManager entityManager ;
public void save ( User user ) { entityManager . persist ( user ); }
public void update ( User user ) { entityManager . merge ( user ); }
パブリック リスト < User > getAll ( ) { return entityManager.createNamedQuery ( " User.getAll " , User.class ) .getResultList ( ) ; } }
エンティティクラスの例
Jakarta EEは、エンティティ/モデルクラスを定義するためにJakarta Persistence( JPA )を提供し、それらのエンティティに対する制約を表現するためにBean Validation APIを提供しています。以下の例では、これら両方の技術を使用しています。
jakarta.persistence.Entity をインポートします 。jakarta.persistence.Id を インポートします 。jakarta.persistence.GeneratedValue を インポートします 。jakarta.persistence.GenerationType を インポートします 。
@Entity
パブリック クラス User { @Id @GeneratedValue ( strategy = IDENTITY ) プライベート Integer id ;
@Size ( min = 2 、 message = "名が短すぎます" ) private String firstName ;
@Size ( min = 2 、 message = "姓が短すぎます" ) private String lastName ;
パブリック 整数 getId () { 戻り 値 id ; }
パブリック void setId ( 整数 id ) { this . id = id ; }
パブリック 文字列 getFirstName () { firstName を返します ; }
public void setFirstName ( String firstName ) { this . firstName = firstName ; }
パブリック 文字列 getLastName () { lastName を返します ; }
パブリック void setLastName ( String lastName ) { this . lastName = lastName ; } }
参照
参考文献
^ 「Java EEとJava SEの違い - 初めてのJava EEプラットフォーム入門」Docs.oracle.com、2012年4月1日。 2012年7月18日 閲覧 。
^ 「Java EEの概要」 Oracle Corporation . 2017年 2月26日 閲覧 。
^ Waters, John K. (2017年9月12日). 「Java EEはEclipse Foundationに移行中」 ADTmag . 2017年9月13日 閲覧 。
^ Beaton, Wayne. 「EE4J FAQ」. Eclipse Foundation .
^ Milinkovich, Mike (2019年5月3日). 「Jakarta EEにおけるJava商標の権利に関する最新情報」ブログ. Life at Eclipse . 2024年7月25日 閲覧 。
^ Chirgwin, Richard (2018年3月4日). 「Java EE、Big Redブランド論争後「Jakarta EE」に改名」. ソフトウェア. The Register . 2018年 3月19日 閲覧 。
^ Vaughan-Nichols, Steven J. (2018年3月5日). 「さようならJEE、こんにちはJakarta EE」. Linuxとオープンソース. ZDNet . 2020年7月10日 閲覧 。
^ ティムス、アルジャン (2020 年 2 月 27 日). 「Java EE から Jakarta EE への移行」。ジャワマガジン。 blogs.oracle.com 。 2024 年 7 月 25 日 に取得 。
^ “ジャカルタ EE リリース”. ジャカルタEE 。 エクリプス財団 。 2024 年 7 月 17 日 に取得 。
^ Obradovic, Tanja; Grimstad, Ivar (2022年9月22日). 「Eclipse FoundationのJakarta EEワーキンググループがJakarta EE 10をリリースし、クラウドネイティブJavaの時代を先導」. ニュース. Jakarta EE (プレスリリース). Eclipse Foundation . 2024年7月17日 閲覧。
^ Obradovic, Tanja; Grimstad, Ivar (2021年5月25日). 「業界がオープンソースのエンタープライズJavaを採用し続ける中、Jakarta EEワーキンググループがJakarta EE 9.1をリリース」. ニュース. Jakarta EE (プレスリリース). Eclipse Foundation . 2022年3月5日 閲覧。
^ シャブナム、ムマイエル;オブラドビッチ、ターニャ(2020-12-08)。 「ジャカルタ EE 9 リリースされました!」。ニュース。 ジャカルタ EE (プレスリリース)。 エクリプス財団 。 2022-03-05 に取得 。
^ シャブナム、ムマイエル;オブラドビッチ、ターニャ(2019-09-10)。 「ジャカルタ EE 8 リリースされました!」。ニュース。 ジャカルタ EE (プレスリリース)。 エクリプス財団 。 2022-03-05 に取得 。
^ Krill, Paul (2003年11月21日). 「J2EE 1.4仕様認定」. ソフトウェア開発. InfoWorld . 2022年3月5日 閲覧。
^ Copeland, Lee (2001年9月24日). 「SunがJ2EE 1.3を発表」. ソフトウェア開発. Computerworld . 2022年3月5日 閲覧 。
^ 「JSR 316: Java Platform, Enterprise Edition 6 (Java EE 6) 仕様」。Java Community Process。Oracle Corporation 。 2022 年3月5日 閲覧。
^ 「JSR 342: Java Platform, Enterprise Edition 7 (Java EE 7) 仕様」。Java Community Process。Oracle Corporation 。 2022 年3月5日 閲覧。
^ 「Java Platform, Enterprise Edition 8 (Java EE 8) Web Profile Specification」 (PDF) . GitHub . Oracle Corporation . 2022年10月9日時点のオリジナルより アーカイブ (PDF) . 2022年2月5日 閲覧 。
^ 「Webプロファイル定義」。Jakarta EE WebProfile . 8. Jakarta EE. Eclipse Foundation . 2022年3月5日 閲覧。
^ 「Webプロファイル定義」。Jakarta EE WebProfile . 9. Jakarta EE. Eclipse Foundation . 2022年3月5日 閲覧。
^ 「Webプロファイル定義」。Jakarta EE WebProfile . 9.1. Jakarta EE. Eclipse Foundation . 2022年3月5日 閲覧。
^ 「Webプロファイル定義」。Jakarta EE WebProfile . 10. Jakarta EE. Eclipse Foundation . 2022年9月27日 閲覧。
^ 「Jakarta EE互換製品」 。Jakarta.ee 。
^ 「Jakarta EE 9互換製品」 。Jakarta.ee 。
^ 「Jakarta EE 8互換製品」 。Jakarta.ee 。
^ 「Open Liberty 23.0.0.1-beta の Jakarta EE 10 プラットフォームと MicroProfile 6」 。openliberty.io 。
^ ab "Open Liberty 23.0.0.3 での Jakarta EE 10、MicroProfile 6、Java SE 20 のサポート". openliberty.io .
^ abcdefg 「Java EE互換性」 。www.oracle.com 。 2018年8月5日 閲覧 。
^ abcdefg 「Java EE 互換性」。
^ ab 「GlassFish Open Source Editionバージョン2.xと3.0.xの比較」。2012年12月20日時点のオリジナルよりアーカイブ。
^ 「Java EE互換性」Java.sun.com. 2010年9月7日. 2012年7月18日 閲覧 。
^ 「Oracle Weblogic Server 14.1.1」 。www.oracle.com 。
^ 「Oracle Weblogic Server 12.1.1」 。www.oracle.com 。
^ Lyons, Will; Humphrey, Pieter (2011). 「Oracle Web Logic Server 12c: 最新の軽量Java EE 6アプリケーションの開発」 (PDF) . 2011年12月15日時点の オリジナル (PDF)からのアーカイブ。 2011年12月3日 閲覧 。
^ 「Java EE 互換性」 。www.oracle.com 。
^ 「JBoss AS 7.1.0.Final "Thunder" リリース - Java EE 6 Full Profile 認定済み! | My Wiki | Planet JBoss Community」. Planet.jboss.org. 2012年2月17日. 2012年7月18日 閲覧 。
^ 「JBoss アプリケーション サーバー - JBoss コミュニティ」。
^ 「JBoss アプリケーション サーバー - JBoss コミュニティ」。
^ 「Java EE 互換性」。
^ “JBoss AS is now EE5 Certified!”. 2008年9月15日. 2008年9月20日時点のオリジナルよりアーカイブ。 2016年 8月7日 閲覧 。
^ 「Red Hat JBoss Enterprise Application Platform 7.2 の提供開始」。
^ 「Red Hat、企業のアプリケーション開発とデプロイメントのクラウドへの移行を支援するJBoss Enterprise Application Platform 6を発表」Business Wire、2012年6月20日。2016年11月11日時点のオリジナルよりアーカイブ。 2012年7月18日 閲覧 。
^ 「WebSphere Application Server V8の新機能」IBM.com 2012年7月18日 閲覧 。
^ ab 「IBM WebSphere Application Server Libertyは、Java EE 8互換の初の実稼働対応アプリケーションサーバーを提供し、Spring Bootアプリケーションのサポートを拡大」 IBM 2018年7月10日. 2018年 7月12日 閲覧 。
^ 「Java EE 7 - テスト済み構成 - IBM WebSphere Application Server Liberty Profile」 。Oracle.com 。
^ 「Java EE 7 が WAS Liberty に登場 - WASdev」。2015 年 6 月 25 日。
^ 「IBM Java EE 6 Web プロファイルのテスト済み構成」。
^ 「Apache Geronimo : Index」. geronimo.apache.org . 2010年1月25日.
^ 「Apache Geronimo、Java EE 6の完全認定を取得 - The H Open: ニュースと特集」H-online.com、2011年11月14日。2012年4月20日時点のオリジナルよりアーカイブ。 2012年7月18日 閲覧 。
^ 「テスト済み構成、Java EE 6 - TMAX JEUS 7」。Oracle.com。2010年9月7日。 2012年7月18日 閲覧 。
^ 「Java EE6 Webアプリケーションサーバー、WASソフトウェア」。Us.tmaxsoft.com。2012年7月2日時点のオリジナルよりアーカイブ 。 2012年7月18日 閲覧。
^ 「Java EE 6 - テスト済み構成、Java EE 6 - Hitachi uCosminexus Application Server v9.0」。Oracle.com。
^ “Fujitsu Interstage Application Server powered by Windows Azure”. 2011年8月10日時点のオリジナルよりアーカイブ。
^ 「テスト済み構成、Java EE6 - Fujitsu Interstage」。Oracle.com。2010年9月7日。 2012年7月18日 閲覧 。
^ 「富士通、Interstage Application Server V10.1をリリース」富士通。
^ 「NEC WebOTX アプリケーション サーバー V9.x 認定」。
^ “Apache TomEE”. ejb.apache.org を開きます 。 2012 年 7 月 18 日 に取得 。
^ "MarketWatch.com". MarketWatch.com . 2012年7月18日 閲覧 。
^ TomEE、Apache。 「Apache TomEE 7.0.1」。
^ 「Resin Application Server Java EE 6 Web Profile」 (PDF) . caucho.com . 2011年. 2022年10月9日時点のオリジナルより アーカイブ (PDF) 。
^ 「SiwpasをJava EE認定オプションとして歓迎します!」Oracle.com . 2015年12月7日 閲覧 。
^ “JOnAS 5.3.0 RC1 リリース”. jonas.ow2.org . 2013年1月7日. 2013年10月15日時点のオリジナルよりアーカイブ 。 2014年2月25日 閲覧。
^ 「SAP NetWeaver Cloud Java EE 6 Web プロファイルが認定されました! (The Aquarium)」。
^ 「SAPソフトウェアソリューション - ビジネスアプリケーションとテクノロジー」。2009年12月7日時点のオリジナルよりアーカイブ 。 2010年5月3日 閲覧。
外部リンク
ウィキメディア・コモンズには、 Jakarta EE に関連するメディアがあります 。
公式サイト
公式 Jakarta EE チュートリアル
Jakarta EEチュートリアル第1回:Jakarta EE入門
Jakarta EE 仕様ガイド - Jakarta EE プラットフォーム
Jakarta EE 公式スターター: Jakarta EE プロジェクトの生成
Java プラットフォーム、エンタープライズ エディション (Java EE)、Oracle Technology Network
Jakarta EE公式YouTubeチャンネル