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の機能を拡張するいくつかのテクノロジが含まれています。

ウェブ仕様

  • Jakarta Servlet : HTTPリクエストを同期または非同期で管理する方法を定義します。低レベルであり、他のJakarta EE仕様はこれに依存しています。
  • Jakarta WebSocket: WebSocket接続を処理するための一連の API を定義する API 仕様
  • Jakarta Faces : コンポーネントからユーザー インターフェイスを構築するテクノロジー。
  • Jakarta Expression Language ( EL ) は、もともとウェブアプリケーション開発者の特定のニーズを満たすために設計されたシンプルな言語です。Jakarta Faces ではコンポーネントを(バックエンド)Bean にバインドするために、また Contexts and Dependency Injection では名前付きBean にバインドするために特に使用されますが、プラットフォーム全体で使用できます。

Webサービス仕様

  • Jakarta RESTful Web サービスは、Representational State Transfer (REST) アーキテクチャ パターンに従って Web サービスを作成するためのサポートを提供します。
  • Jakarta JSON Processing は、JSON 形式でエンコードされた情報を管理するための仕様セットです。
  • Jakarta JSON Binding は、JSON 情報を Java クラスに変換したり、Java クラスから変換したりするための仕様を提供します。
  • Jakarta XML バインディングを使用すると、XML を Java オブジェクトにマッピングできます。
  • Jakarta XML Web サービスを使用して、SOAP 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 ServletJakarta Server PagesJSP)、またはJakarta FacesJSF)と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 BeanEJB)を使用しています。

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 ; } }    
          
    

参照

参考文献

  1. ^ 「Java EEとJava SEの違い - 初めてのJava EEプラットフォーム入門」Docs.oracle.com、2012年4月1日。 2012年7月18日閲覧
  2. ^ 「Java EEの概要」Oracle Corporation . 2017年2月26日閲覧
  3. ^ Waters, John K. (2017年9月12日). 「Java EEはEclipse Foundationに移行中」ADTmag . 2017年9月13日閲覧
  4. ^ Beaton, Wayne. 「EE4J FAQ」. Eclipse Foundation .
  5. ^ Milinkovich, Mike (2019年5月3日). 「Jakarta EEにおけるJava商標の権利に関する最新情報」ブログ. Life at Eclipse . 2024年7月25日閲覧
  6. ^ Chirgwin, Richard (2018年3月4日). 「Java EE、Big Redブランド論争後「Jakarta EE」に改名」. ソフトウェア. The Register . 2018年3月19日閲覧
  7. ^ Vaughan-Nichols, Steven J. (2018年3月5日). 「さようならJEE、こんにちはJakarta EE」. Linuxとオープンソース. ZDNet . 2020年7月10日閲覧
  8. ^ ティムス、アルジャン (2020 年 2 月 27 日). 「Java EE から Jakarta EE への移行」。ジャワマガジン。blogs.oracle.com 2024 年 7 月 25 日に取得
  9. ^ “ジャカルタ EE リリース”.ジャカルタEEエクリプス財団2024 年 7 月 17 日に取得
  10. ^ Obradovic, Tanja; Grimstad, Ivar (2022年9月22日). 「Eclipse FoundationのJakarta EEワーキンググループがJakarta EE 10をリリースし、クラウドネイティブJavaの時代を先導」. ニュース. Jakarta EE (プレスリリース). Eclipse Foundation . 2024年7月17日閲覧。
  11. ^ Obradovic, Tanja; Grimstad, Ivar (2021年5月25日). 「業界がオープンソースのエンタープライズJavaを採用し続ける中、Jakarta EEワーキンググループがJakarta EE 9.1をリリース」. ニュース. Jakarta EE (プレスリリース). Eclipse Foundation . 2022年3月5日閲覧。
  12. ^ シャブナム、ムマイエル;オブラドビッチ、ターニャ(2020-12-08)。 「ジャカルタ EE 9 リリースされました!」。ニュース。ジャカルタ EE (プレスリリース)。エクリプス財団2022-03-05に取得
  13. ^ シャブナム、ムマイエル;オブラドビッチ、ターニャ(2019-09-10)。 「ジャカルタ EE 8 リリースされました!」。ニュース。ジャカルタ EE (プレスリリース)。エクリプス財団2022-03-05に取得
  14. ^ Krill, Paul (2003年11月21日). 「J2EE 1.4仕様認定」. ソフトウェア開発. InfoWorld . 2022年3月5日閲覧。
  15. ^ Copeland, Lee (2001年9月24日). 「SunがJ2EE 1.3を発表」. ソフトウェア開発. Computerworld . 2022年3月5日閲覧
  16. ^ 「JSR 316: Java Platform, Enterprise Edition 6 (Java EE 6) 仕様」。Java Community Process。Oracle Corporation 2022年3月5日閲覧。
  17. ^ 「JSR 342: Java Platform, Enterprise Edition 7 (Java EE 7) 仕様」。Java Community Process。Oracle Corporation 2022年3月5日閲覧。
  18. ^ 「Java Platform, Enterprise Edition 8 (Java EE 8) Web Profile Specification」(PDF) . GitHub . Oracle Corporation . 2022年10月9日時点のオリジナルよりアーカイブ(PDF) . 2022年2月5日閲覧
  19. ^ 「Webプロファイル定義」。Jakarta EE WebProfile . 8. Jakarta EE. Eclipse Foundation . 2022年3月5日閲覧。
  20. ^ 「Webプロファイル定義」。Jakarta EE WebProfile . 9. Jakarta EE. Eclipse Foundation . 2022年3月5日閲覧。
  21. ^ 「Webプロファイル定義」。Jakarta EE WebProfile . 9.1. Jakarta EE. Eclipse Foundation . 2022年3月5日閲覧。
  22. ^ 「Webプロファイル定義」。Jakarta EE WebProfile . 10. Jakarta EE. Eclipse Foundation . 2022年9月27日閲覧。
  23. ^ 「Jakarta EE互換製品」。Jakarta.ee
  24. ^ 「Jakarta EE 9互換製品」。Jakarta.ee
  25. ^ 「Jakarta EE 8互換製品」。Jakarta.ee
  26. ^ 「Open Liberty 23.0.0.1-beta の Jakarta EE 10 プラットフォームと MicroProfile 6」。openliberty.io
  27. ^ ab "Open Liberty 23.0.0.3 での Jakarta EE 10、MicroProfile 6、Java SE 20 のサポート". openliberty.io .
  28. ^ abcdefg 「Java EE互換性」。www.oracle.com 。 2018年8月5日閲覧
  29. ^ abcdefg 「Java EE 互換性」。
  30. ^ ab 「GlassFish Open Source Editionバージョン2.xと3.0.xの比較」。2012年12月20日時点のオリジナルよりアーカイブ。
  31. ^ 「Java EE互換性」Java.sun.com. 2010年9月7日. 2012年7月18日閲覧
  32. ^ 「Oracle Weblogic Server 14.1.1」。www.oracle.com
  33. ^ 「Oracle Weblogic Server 12.1.1」。www.oracle.com
  34. ^ Lyons, Will; Humphrey, Pieter (2011). 「Oracle Web Logic Server 12c: 最新の軽量Java EE 6アプリケーションの開発」(PDF) . 2011年12月15日時点のオリジナル(PDF)からのアーカイブ。 2011年12月3日閲覧
  35. ^ 「Java EE 互換性」。www.oracle.com
  36. ^ 「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日閲覧
  37. ^ 「JBoss アプリケーション サーバー - JBoss コミュニティ」。
  38. ^ 「JBoss アプリケーション サーバー - JBoss コミュニティ」。
  39. ^ 「Java EE 互換性」。
  40. ^ “JBoss AS is now EE5 Certified!”. 2008年9月15日. 2008年9月20日時点のオリジナルよりアーカイブ。 2016年8月7日閲覧
  41. ^ 「Red Hat JBoss Enterprise Application Platform 7.2 の提供開始」。
  42. ^ 「Red Hat、企業のアプリケーション開発とデプロイメントのクラウドへの移行を支援するJBoss Enterprise Application Platform 6を発表」Business Wire、2012年6月20日。2016年11月11日時点のオリジナルよりアーカイブ。 2012年7月18日閲覧
  43. ^ 「WebSphere Application Server V8の新機能」IBM.com 2012年7月18日閲覧
  44. ^ ab 「IBM WebSphere Application Server Libertyは、Java EE 8互換の初の実稼働対応アプリケーションサーバーを提供し、Spring Bootアプリケーションのサポートを拡大」IBM 2018年7月10日. 2018年7月12日閲覧
  45. ^ 「Java EE 7 - テスト済み構成 - IBM WebSphere Application Server Liberty Profile」。Oracle.com
  46. ^ 「Java EE 7 が WAS Liberty に登場 - WASdev」。2015 年 6 月 25 日。
  47. ^ 「IBM Java EE 6 Web プロファイルのテスト済み構成」。
  48. ^ 「Apache Geronimo : Index」. geronimo.apache.org . 2010年1月25日.
  49. ^ 「Apache Geronimo、Java EE 6の完全認定を取得 - The H Open: ニュースと特集」H-online.com、2011年11月14日。2012年4月20日時点のオリジナルよりアーカイブ。 2012年7月18日閲覧
  50. ^ 「テスト済み構成、Java EE 6 - TMAX JEUS 7」。Oracle.com。2010年9月7日。 2012年7月18日閲覧
  51. ^ 「Java EE6 Webアプリケーションサーバー、WASソフトウェア」。Us.tmaxsoft.com。2012年7月2日時点のオリジナルよりアーカイブ2012年7月18日閲覧。
  52. ^ 「Java EE 6 - テスト済み構成、Java EE 6 - Hitachi uCosminexus Application Server v9.0」。Oracle.com。
  53. ^ “Fujitsu Interstage Application Server powered by Windows Azure”. 2011年8月10日時点のオリジナルよりアーカイブ。
  54. ^ 「テスト済み構成、Java EE6 - Fujitsu Interstage」。Oracle.com。2010年9月7日。 2012年7月18日閲覧
  55. ^ 「富士通、Interstage Application Server V10.1をリリース」富士通。
  56. ^ 「NEC WebOTX アプリケーション サーバー V9.x 認定」。
  57. ^ “Apache TomEE”. ejb.apache.org を開きます2012 年 7 月 18 日に取得
  58. ^ "MarketWatch.com". MarketWatch.com . 2012年7月18日閲覧
  59. ^ TomEE、Apache。 「Apache TomEE 7.0.1」。
  60. ^ 「Resin Application Server Java EE 6 Web Profile」(PDF) . caucho.com . 2011年. 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
  61. ^ 「SiwpasをJava EE認定オプションとして歓迎します!」Oracle.com . 2015年12月7日閲覧
  62. ^ “JOnAS 5.3.0 RC1 リリース”. jonas.ow2.org . 2013年1月7日. 2013年10月15日時点のオリジナルよりアーカイブ2014年2月25日閲覧。
  63. ^ 「SAP NetWeaver Cloud Java EE 6 Web プロファイルが認定されました! (The Aquarium)」。
  64. ^ 「SAPソフトウェアソリューション - ビジネスアプリケーションとテクノロジー」。2009年12月7日時点のオリジナルよりアーカイブ2010年5月3日閲覧。
  • 公式サイト
    • Jakarta EE 互換製品: エンタープライズ Java アプリケーションおよび Web サーバー - Eclipse Foundation
  • 公式 Jakarta EE チュートリアル
  • Jakarta EEチュートリアル第1回:Jakarta EE入門
  • Jakarta EE 仕様ガイド - Jakarta EE プラットフォーム
  • Jakarta EE 公式スターター: Jakarta EE プロジェクトの生成
  • Java プラットフォーム、エンタープライズ エディション (Java EE)、Oracle Technology Network
  • Jakarta EE公式YouTubeチャンネル