Java EEとは?Jakarta EEとの違いや主要機能を解説
thumb_javaee_01
Java EEとは?Jakarta EEとの違いや主要機能を解説
アンドエンジニア編集部
2024.03.10
この記事でわかること
Java EEとは、企業向けサーバーサイド機能を実装するウェブアプリケーションの仕様です
Javaを用いて、ウェブGUIフレームワークやトランザクション管理のAPIなどを提供します
Eclipse Foundationによってオープンソース化され、Jakarta EEとして提供されます

Java EEとは

img_javaee_01

Java EEとは、Javaによる企業向けウェブアプリケーション開発のエンダープライズ・ソフトウエアを表します。Java EEは「Java Platform, Enterprise Edition」の略称で、Java SE(Java Platform, Standard Edition)に企業向けサーバーサイド機能に関連するライブラリを追加したものです。

【参考】:ORACLE: Java EEの概要 【参考】:JAKARTA EE

そもそもJavaとは

Javaは、汎用プログラミング言語として認知されており、C++やPythonと並んで人気があります。同様に開発環境や実行環境自体を表す場合もあります。C++に近い構文のオブジェクト指向プログラミングが可能です。

Javaは、1996年に当時のサン・マイクロシステムズによって市場投入され、広く用いられています。その後、サン・マイクロシステムズを買収したオラクルが事業を引き継いでいます。プラットフォームに依存せずに多様なプラットフォームで動作します。

Java EEは、Javaによるウェブアプリケーションサーバの規格であり、APIを定義したものです。

Javaとは?人気プログラミング言語の特徴やメリットを解説
オブジェクト指向言語とは?概念とプログラミング言語をわかりやすく解説!

Java EEの特徴

Java EEは、Java SEをベースとしておりソフトウェアの安定性が高く、速度が比較的早いという特徴があります。サーバーサイドで動作するJavaを仕様として策定し、Java Servlet、JavaServer Pages、Enterprise JavaBeansなどを実装しています。

【参考】:ORACLE: Java EEの概要 【参考】:JAKARTA EE 【参考】:JAKARTA EEについて

Jakarta EEについて

Jakarta EEは、Eclipse Foundationが提供するオープンソース・エンタープライズJava環境です。Java EEの商標はオラクル社が保有しており、オラクルが提供するJava EE 8までをJava EEと呼びます。

Java EE 9以降はEclipse Foundationによってオープンソース化され、商標利用の都合によりJakarta EEと名付けられています。

オラクルから権利を引き継いだ当初は、Eclipse Enterprise for Java(EE4J)と呼ばれていましたが、インドネシアの首都がジャワ島(Java Island)のジャカルタ(Jakarta)であったことから、投票によりJakarta EEと命名されました。

Eclipse Foundationへの移管によって、よりオープンなコミュニティ活動によってベンダー中立な仕様を提供し、ロードマップに従って提供していくとしています。

【参考】:JAKARTA EEについて 【参考】:Eclipse EE4J

Java EEとJakarta EE との違い

Jakarta EEは、オラクルが所有するJava EE 8がEclipse Foundationに移管され、開発が引き継がれています。Java EE 8の機能は互換性が保たれており、名称の違いを除くと機能上の大きな差異は気にしなくて良いでしょう。

Jakarta EEの開発にあたっては、オラクルも協力しており、既存のJava EEを置き換えるものではなくクラウドネイティブJavaとして新たなイノベーションを提供していくとしています。

【参考】:JAKARTA EE: FAQ

Java EEとJava SEの関係

Java EEは、Java SEをベースとしてエンタープライズ向けに機能拡張を行っています。そのためJava EEプラットフォームは、Java SEのリリースバージョンにしたがってサポートが行われます。

具体的には、Java SE 8は、Java EE 8、Jakarta EE 8、9、9.1で用いられます。Java SE 11は、Jakarta EE 9.1、10で用いられます。Java SEの要件は、各バージョン仕様書の「6.2. Java Platform, Standard Edition (Java SE) Requirements」の記載に従います。最新のJava SE 21は、Jakarta EE 11で採用される予定です。

【参考】:Jakarta EE Platform Specification 【参考】:Jakarta EE Platform 11 (Under development)

Java EEの利用方法とサポート

Java EEで開発したウェブアプリケーションは、Java EEに対応するアプリケーションサーバが必要です。対応するアプリケーションサーバは、ベンダーやコミュニティなどから提供されます。

Java EEのダウンロードは、Java EE 8まではオラクルから、それ以降はJakarta EEの互換製品の導入方法にしたがって行い、インストール方法も同様です。サポート期限やサポート内容は、使用するアプリケーションサーバや必要とする契約内容によって決まります。

【参考】:JAKARTA EEの互換製品 【参考】:ORACLE: Java EE ダウンロード

Java EEの主要機能

img_javaee_02

Java EE、Jakarta EEでは、エンタープライズ向け分散コンピューティングに必要な多くの要素が定義されています。具体的には、データベースのトランザクション、分散キューの管理などがあります。

ここでは、SDKやプロファイルの考え方を紹介するとともに、主要な機能をいくつか取り上げていきます。

【参考】:JAKARTA EE仕様

Java EEのSDK

Java EEのSDK(Software Development Kit)では、エンタープライズ・ソフトウェア開発に必要なソフトウェアが含まれます。具体的には、APIのドキュメントやコードサンプルなどです。

上記に加えて、GlassFishと呼ばれるJava EE 準拠のアプリケーションサーバーが提供されます。GlassFishも、Eclipse Foundationに移管されており、手軽に利用することができます。

【参考】:Eclipse GlassFish

Java EEのプロファイル

Java EEのAPIのセットをプロファイル(Profile)と呼びます。Java EE 8、Jakarta EE 8では、Web ProfileとFull Platformで構成されています。一部のAPIで構成されるWeb Profileは、軽量版の位置付けです。すべての機能が必要な場合はFull Platformを用います。

正式リリースの最新バージョンであるJakarta EE 10では、全体をPlatform Profile、サブセットをWeb Profileとしながら新たにCore Profileを仕様化し、より軽量なクラウドネイティブのJavaアプリケーション環境を目指しています。

【参考】:JAKARTA EE仕様 【参考】:JAKARTA EE 10

JavaServer Faces

JavaServer Faces(JSF、現Jakarta Faces)は、Java EEで提供されるウェブGUIフレームワークです。Javaを使用するMVC(Model-View-Controller)ウェブアプリケーションフレームワークとなります。クライアントによるリクエストによって動作する、UIコンポーネント型APIセットとして提供されます。

【参考】:JAKARTA EE Specification: Jakarta Faces

Java Servlet

Java Servlet(現Jakarta Servlet)は、サーバーサイドで動的なコンテンツを生成したりデータを処理したりする機能です。一般的にはサーブレットと呼ぶことが多いです。クライアント側でJavaを動作させるアプレット(Applet)に対して、サーブレットではサーバ側でJavaを実行します。

ショッピングサイトなどで動的なコンテンツを表示させ、利用することができます。

【参考】:JAKARTA EE Specification: Jakarta Servlet

JavaServer Pages

JavaServer Pages(JSP、現Jakarta Pages)は、HTMLにJavaコードを埋め込むことでウェブサーバが動的にウェブページを生成し、クライアント側に反映する技術です。コードはHTMLに特殊なタグを用いて記述します。

静的コンテンツの比率が多い場合に、最低限のコードで動的コンテンツを生成することができます。

【参考】:JAKARTA EE Specification: Jakarta Pages

Enterprise JavaBeans

Enterprise JavaBeans(EJB、現Jakarta Enterprise Beans)は、Javaクラスをコンポーネント化するJavaBeansをサーバーサイドで実装したものです。分散型ビジネスアプリケーションで用いるビジネスロジックを実装します。

EJBにより、基幹業務で用いるアプリケーションのビジネスロジックを、エンタープライズJavaで利用することができます。

【参考】:JAKARTA EE Specification: Jakarta Enterprise Beans

Contexts and Dependency Injection

Contexts and Dependency Injection(CDI)は、ウェブアプリケーションを簡素化するために用います。具体的には、実行時の動作を変更し、クラス間の依存関係をコード外で解決することができます。

EJB(Jakarta Enterprise Beans)コンポーネントをJSF(Jakarta Faces)の管理するBeanとして利用することができ、コードの置き換えにより簡素化が可能になります。

【参考】:JAKARTA EE Specification: Jakarta Contexts and Dependency Injection

Java Persistence API

Java Persistence API(JPA、現Jakarta Persistence)は、Javaでデータベースを扱うためのフレームワークです。リレーショナルデータベース(RDB)をエンタープライズ向けJavaアプリケーションに実装します。

アクセス言語としてJava Persistence Query Language(JPQL、Jakarta Persistence Query Language)によって、エンティティオブジェクトを操作します。

【参考】:JAKARTA EE Specification: Jakarta Persistence

Java Transaction API

Java Transaction API(JTA、現Jakarta Transactions)は、X/Openの定めるXAアーキテクチャにより、分散トランザクション処理を行います。アプリケーションサーバーは、TPモニターおよびリソースマネージャを用いてトランザクションを管理します。

XAは仕様が確定しており、JTAも仕様に変更がありません。

【参考】:JAKARTA EE Specification: Jakarta Transactions 【参考】:The Open Group: Distributed TP: The XA Specification

Java EEは、基幹業務を分散アプリケーション開発するための選択肢の1つ

img_javaee_03

Java EE(現Jakarta EE)は、Javaベースのエンタープライズ向けアプリケーションサーバの標準規格です。Java EEにより、汎用プログラミングであるJavaを分散トランザクションに適応することが可能です。動的コンテンツを生成したり、データベース処理を実装したりするのは基幹業務として重要です。

Java EEは、基幹業務を分散アプリケーション化するための1つのフレームワークとして、重要な選択肢となるでしょう。

気になる人のXをフォローしよう!
アンドエンジニア公式LINEでは
新着記事やエンジニアに役立つ情報をお届け!
日々のキャッチアップをお手伝いします!
マイナビITエージェント

編集部オススメコンテンツ

Sponsored
【年収±診断】6つの質問に答えて、真の市場価値をチェック!
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

お問い合わせ・情報提供
はじめて転職される方へ
SE・システムエンジニア(IT/通信/インターネット) 求人一覧

編集部おすすめコンテンツ

Sponsored
【年収±診断】6つの質問に答えて、真の市場価値をチェック!
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

Powered by マイナビ AGENT