| プレーヤーソフトウェア | ジャワ |
|---|---|
| プログラミング言語 | ジャワ |
| アプリケーション | アプリケーションサーバー |
| 状態 | アクティブ |
| ライセンス | Eclipse Public LicenseまたはGNU General Public License(クラスパス例外付き) |
| Webサイト | ジャカルタ |
| Javaプラットフォームのエディション |
|---|
|
Jakarta EE は、以前はJava Platform, Enterprise Edition ( Java EE ) およびJava 2 Platform, Enterprise Edition ( J2EE ) と呼ばれ、 Java SE [ 1 ]を拡張し、分散コンピューティングやウェブサービスなどのエンタープライズ機能の仕様を盛り込んだ仕様セットです。[ 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 年に Sun が買収された後、Java EE はOracleによってJava Community Processの下で保守されました。2017 年 9 月 12 日、Oracle Corporation はJava EE をEclipse Foundationに提出すると発表しました。[ 3 ] Eclipse のトップレベル プロジェクトは、Eclipse Enterprise for Java (EE4J) と命名されました。[ 4 ]javax Eclipse Foundation は、Java の商標の使用に関して Oracle と合意できませんでした。 [ 5 ] Oracle は「Java」という名前の商標を所有しており、プラットフォームは Java EE から Jakarta EE に改名されました。[ 6 ] [ 7 ]この名前は、ジャワ島最大の都市であり、インドネシアの首都でもあるジャカルタを指しています。[ 8 ]この名前を、Apache Software Foundationで多数の現在および過去の Java プロジェクトを促進した旧Jakarta プロジェクトと混同しないでください。
| プラットフォームバージョン | リリース[ 9 ] | 仕様 | Java SEサポート | 重要な変更点 |
|---|---|---|---|---|
| ジャカルタ EE 11 | 2025年6月26日[ 10 ] | 11 |
| データ |
| ジャカルタ EE 10 | 2022年9月22日[ 11 ] | 10 |
| サーブレット、Faces、CDI、EJB(エンティティ Bean および埋め込み可能コンテナ)の非推奨項目の削除。CDI ビルド時。 |
| ジャカルタ EE 9.1 | 2021年5月25日[ 12 ] | 9.1 |
| JDK 11のサポート |
| ジャカルタ EE 9 | 2020年12月8日[ 13 ] | 9 | Java SE 8 | javaxAPI名前空間をからに移動jakarta |
| ジャカルタ EE 8 | 2019年9月10日[ 14 ] | 8 | Java SE 8 | Java EE 8との完全な互換性 |
| Java EE 8 | 2017年8月31日 | JSR 366 | Java SE 8 | HTTP/2とCDIベースのセキュリティ |
| Java EE 7 | 2013年5月28日 | JSR 342 | Java SE 7 | WebSocket、JSON、HTML5のサポート |
| Java EE 6 | 2009年12月10日 | JSR 316 | Java SE 6 | CDI管理 Bean と REST |
| Java EE 5 | 2006年5月11日 | JSR 244 | Java SE 5 | JavaアノテーションとJavaのジェネリック |
| J2EE 1.4 | 2003年11月11日 | JSR 151 | J2SE 1.4 | WS-I相互運用可能なウェブサービス[ 15 ] |
| J2EE 1.3 | 2001年9月24日 | JSR 58 | J2SE 1.3 | Javaコネクタアーキテクチャ[ 16 ] |
| J2EE 1.2 | 1999年12月17日 | 1.2 | J2SE 1.2 | 初期仕様リリース |
Jakarta EE には、Web ページの生成、トランザクション方式でのデータベースの読み書き、分散キューの管理など、さまざまな目的に役立ついくつかの仕様が含まれています。
Jakarta EE API には、Jakarta Enterprise Beans、コネクタ、サーブレット、Jakarta Server Pages 、およびいくつかのWeb サービステクノロジなど、基本Java SE APIの機能を拡張するいくつかのテクノロジが含まれています。
ウェブコンテナのフットプリントを物理的にも概念的にも制限する試みとして、Jakarta EE仕様のサブセットであるウェブプロファイルが作成されました。Jakarta EEウェブプロファイルは以下の要素で構成されています。
| 仕様 | Java EE 6 [ 17 ] | Java EE 7 [ 18 ] | Java EE 8 [ 19 ]ジャカルタ EE 8 [ 20 ] | ジャカルタ EE 9 [ 21 ]ジャカルタ EE 9.1 [ 22 ] | ジャカルタEE10 [ 23 ] | ジャカルタEE 11 [ 24 ] |
|---|---|---|---|---|---|---|
| ジャカルタサーブレット | 3.0 | 3.1 | 4.0 | 5.0 | 6.0 | 6.1 |
| Jakarta Server Pages ( JSP ) | 2.2 | 2.3 | 2.3 | 3.0 | 3.1 | 4.0 |
| ジャカルタ式言語( EL ) | 2.2 | 3.0 | 3.0 | 4.0 | 5.0 | 6.0 |
| Jakarta の他言語デバッグサポート(JSR-45) | 1.0 | 1.0 | 1.0 | 2.0 | 2.0 | 2.0 |
| Jakarta 標準タグライブラリ( JSTL ) | 1.2 | 1.2 | 1.2 | 2.0 | 3.0 | 3.0 |
| ジャカルタの顔 | 2.0 | 2.2 | 2.3 | 3.0 | 4.0 | 4.1 |
| Jakarta RESTful Web サービス( JAX-RS ) | 1.1 | 2.0 | 2.1 | 3.0 | 3.1 | 4.0 |
| ジャカルタ WebSocket ( WebSocket ) | 該当なし | 1.0 | 1.1 | 2.0 | 2.1 | 2.2 |
| Jakarta JSON 処理( JSON-P ) | 該当なし | 1.0 | 1.1 | 2.0 | 2.1 | 2.1 |
| Jakarta JSON バインディング( JSON-B ) | 該当なし | 該当なし | 1.1 | 2.0 | 3.0 | 3.0 |
| ジャカルタ注釈(CA) | 1.1 | 1.2 | 1.3 | 2.0 | 2.1 | 3.0 |
| Jakarta エンタープライズ Bean ( EJB ) | 3.1 ライト | 3.2 ライト | 3.2 ライト | 4.0 ライト | 4.0 ライト | 4.0 ライト |
| ジャカルタ・トランザクションズ(JTA) | 1.1 | 1.2 | 1.2 | 2.0 | 2.0 | 2.0 |
| ジャカルタパーシスタンス(JPA) | 2.0 | 2.1 | 2.2 | 3.0 | 3.1 | 3.2 |
| Jakarta Bean Validation | 1.0 | 1.1 | 2.0 | 3.0 | 3.0 | 3.1 |
| ジャカルタマネージドビーンズ | 1.0 | 1.0 | 1.0 | 2.0 | 該当なし | 該当なし |
| ジャカルタ・インターセプターズ | 1.1 | 1.2 | 1.2 | 2.0 | 2.1 | 2.2 |
| Jakartaコンテキストと依存性注入( CDI ) | 1.0 | 1.1 | 2.0 | 3.0 | 4.0 | 4.1 |
| Jakarta依存性注入 | 1.0 | 1.0 | 1.0 | 2.0 | 2.0 | 2.0 |
| ジャカルタのセキュリティ | 該当なし | 該当なし | 1.0 | 2.0 | 3.0 | 4.0 |
| ジャカルタ認証 | 該当なし | 1.0 | 1.1 | 2.0 | 3.0 | 3.1 |
| ジャカルタ同時実行 | 該当なし | 該当なし | 該当なし | 該当なし | 3.0 | 3.1 |
定義上、すべての Jakarta EE 実装は同じ基本レベルのテクノロジ (つまり、Jakarta EE 仕様と関連 API) を提供しますが、追加機能 (コネクタ、クラスタリング、フォールト トレランス、高可用性、セキュリティなど)、インストール サイズ、メモリ フットプリント、起動時間など に関しては大幅に異なる場合があります。
| 参照ランタイム[ 25 ] [ 26 ] [ 27 ] | 開発者 | Jakarta EE 10 プラットフォーム | Jakarta EE 9/9.1 プラットフォーム互換製品 | Jakarta EE 9/9.1 Webプロファイル対応製品 | Jakarta EE 8 プラットフォーム互換製品 | Jakarta EE 8 Webプロファイル対応製品 | ライセンス |
|---|---|---|---|---|---|---|---|
| グラスフィッシュ | 日食 | はい 7.0.0 | はい 6.0.0/6.1.0 | はい 6.0.0/6.1.0 | はい 5.1.0 | はい 5.1.0 | フリーソフトウェア |
| オープンリバティ | IBM | はい 22.0.0.13-beta、[ 28 ] 23.0.0.3 [ 29 ] | はい 21.0.0.12 | はい 21.0.0.12 | はい 19.0.0.6、20.0.0.3 | はい 19.0.0.6、20.0.0.3 | フリーソフトウェア |
| WebSphere リバティ | IBM | はい 23.0.0.3 [ 29 ] | はい 21.0.0.12 | はい 21.0.0.12 | はい 20.0.0.3 | はい 20.0.0.3 | 独自のソフトウェア |
| ワイルドフライ | レッドハット | はい 27.0.0.Alpha5 | はい 23.0.1-プレビュー/25.0.0-プレビュー | はい 23.0.1-プレビュー/25.0.0-プレビュー | はい 18.0.0 | はい 18.0.0 | フリーソフトウェア |
| JBoss EAP | レッドハット | はい 8.0.0 | いいえ | いいえ | はい 7.3.0 | はい 7.3.0 | フリーソフトウェア |
| トムEE | アパッチ | はい 10.x | はい 9.x | はい 9.x | はい 8.x | はい 8.x | フリーソフトウェア |
| Payaraサーバー | パヤラサービスリミテッド | はい 6.2022.1 アルファ 4 | はい 6.2021.1 アルファ 1 | いいえ | はい 5.22.0、5.23.0 | はい 5.23.0 | フリーソフトウェア |
| Thunisoft アプリケーション サーバー | 北京トゥニソフト情報技術 | いいえ | はい 3.0 | いいえ | はい 2.8 | いいえ | 独自のソフトウェア |
| イエス | TmaxSoft | いいえ | いいえ | いいえ | はい 8.5 | いいえ | 独自のソフトウェア |
| InforSuite アプリケーションサーバー | 山東Cvicseミドルウェア | いいえ | はい 11 | いいえ | はい 10 | いいえ | 独自のソフトウェア |
| ウェブOTX | NEC | はい 12 | いいえ | いいえ | はい 11 | いいえ | 独自のソフトウェア |
| 参照ランタイム | 開発者 | Java EE 8 認定 – フル | Java EE 8 認定 – Web | Java EE 7 認定 – フル | Java EE 7 認定 – Web | Java EE 6 認定 – Java EE 互換性に関する完全な公式 Oracle ページ。 | Java EE 6 認定 – Web | Java EE 5認定 | J2EE 1.4 認定 | ライセンス |
|---|---|---|---|---|---|---|---|---|---|---|
| GlassFishサーバー オープンソース版 | オラクル | はい v5.0 [ 30 ] | はい v5.0 [ 30 ] | はい v4.x [ 31 ] | はい v4.x [ 31 ] | はい v3.x以降[ 32 ] | はい v3.x Web プロファイル | はい v2.1.x [ 32 ] | フリーソフトウェア | |
| Oracle GlassFish サーバー | オラクル | はい、オープンソースのGlassFishアプリケーションサーバーをベースにした v3 [ 33 ] | はいSun Java System Application Server v9.0 | はいSun Java System Application Server v8.2 | 独自のソフトウェア | |||||
| Oracle WebLogic Server | オラクル | はい 14.1.1 [ 34 ] | はい 12.2.1 [ 35 ] | はい v12c [ 36 ] | はい v10.3.5.0 | はい v9 | 独自のソフトウェア | |||
| ワイルドフライ | レッドハット | はい v14.x [ 30 ] | はい v14.x [ 30 ] | はい v8.1 [ 37 ] | はい v8.0.0.Final | はい v7.1 [ 38 ] | はいv6.0 [ 39 ]とv7.0 [ 40 ] | はい v5.1 [ 41 ] [ 42 ] | はい v4.x | フリーソフトウェア |
| JBossエンタープライズアプリケーションプラットフォーム | レッドハット | はい v7.2 [ 43 ] | はい v7.0 [ 31 ] | はい v7.0 [ 31 ] | はい v6.0 [ 44 ] | はい v5 | 独自のソフトウェア | |||
| IBM WebSphere アプリケーション サーバー | IBM | はい v9.x [ 30 ] | はい v9.x [ 31 ] | はい v8 [ 45 ] | はい v7 | はい | 独自のソフトウェア | |||
| IBM WebSphere アプリケーション サーバー リバティ | IBM | はい v18.0.0.2 [ 46 ] | はい v18.0.0.2 [ 46 ] | はい v8.5.5.6 [ 47 ] [ 48 ] | はい v8.5.5.6 [ 31 ] | はい v8.5.5 [ 49 ] | 独自のソフトウェア | |||
| オープンリバティ | IBM | はい v18.0.0.2 | はい v18.0.0.2 | フリーソフトウェア | ||||||
| IBM WebSphere Application Server コミュニティ エディション | IBM | はい v3.0 | はい v2.1 | 独自のソフトウェア | ||||||
| アパッチ ジェロニモ | アパッチ | はい v3.0-beta-1 [ 50 ] [ 51 ] | はい v2.0 | はい v1.0 | フリーソフトウェア | |||||
| イエス | TmaxSoft | はい、v8 | はい v7 [ 52 ] [ 53 ] | はい v6 | はい v5 | 独自のソフトウェア | ||||
| Cosminexus アプリケーションサーバ | 日立 | はい v10.0 [ 30 ] | はい v9 [ 54 ] | 独自のソフトウェア | ||||||
| 富士通インターステージアプリケーションサーバ[ 55 ] | 富士通 | はい v12.0 [ 30 ] | はい v1 Azure/v10.1 [ 56 ] [ 57 ] | はい | 独自のソフトウェア | |||||
| ウェブOTX | NEC | はい[ 58 ] | はい | 独自のソフトウェア | ||||||
| BES アプリケーションサーバー | バオランデ | はい v9.5 [ 31 ] | ||||||||
| アパッチTomEE [ 59 ] [ 60 ] | アパッチ | No 7 (Java EE 7に似ているが、認定されていない[ 61 ] ) | はい | フリーソフトウェア | ||||||
| レジンサーバー | カウチョ | はい v4.0 [ 62 ] | はい | 独自のソフトウェア | ||||||
| シウパス | OW2 | はい v6.0 [ 63 ] | フリーソフトウェア | |||||||
| ジョナス | OW2 | はい v5.3 rc1 [ 64 ] | はい | はい | フリーソフトウェア | |||||
| SAP ネットウィーバー | SAP | はい v2.x [ 65 ] | はい | はい | 独自のソフトウェア | |||||
| Oracle コンテナ for Java EE | オラクル | はい | 独自のソフトウェア | |||||||
| Oracle iPlanet Web サーバー | オラクル | はい Sun Java System Web Server | 独自のソフトウェア | |||||||
| Oracle アプリケーション サーバー 10g | オラクル | はい | 独自のソフトウェア | |||||||
| プラマティ サーバー | プラマティ・テクノロジーズ | はい v5.0 | 独自のソフトウェア | |||||||
| トライフォークT4 | トライフォーク | はい | 独自のソフトウェア | |||||||
| Sybaseエンタープライズアプリケーションサーバ[ 66 ] | サイベース | はい | 独自のソフトウェア |
以下に示すコード サンプルは、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>ビューを支援するために、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 ; } }