3.

Java EE

編集

本稿は Java EE (Java Enterprise Edition) に関する記事です。Java EE は企業向けアプリケーション開発に必要な規格・API の集合体で、Web (サーブレット/JSP)、トランザクション、永続化、メッセージング、Webサービスなどを統一的に扱います。

2017 年に運営が Oracle から Eclipse Foundation へ移管され、現在は Jakarta EE という名前で開発が継続されています (パッケージ名も javax.*jakarta.* に変更)。

子ページから項目を選択してください。

本ページの子ページ

  • サーブレット — Webリクエストを処理する Java クラス
  • DI — 依存性注入
  • CDI — Contexts and Dependency Injection
  • EJB — Enterprise JavaBeans
  • JAX-RS — RESTful Web Services API
  • REST — REST アーキテクチャスタイル

Java EE / Jakarta EE の位置づけ

項目内容
正式名Java Platform, Enterprise Edition (旧 J2EE) / 現 Jakarta EE
対象企業向けの分散システム・Web アプリ・業務基幹系
性格API 仕様の集合体。規格であり、実装は複数ある (アプリケーションサーバ)
主な実装WildFly (Red Hat)、GlassFish、Open Liberty、Payara、TomEE、WebLogic、WebSphere
運営移管2017年 Eclipse Foundation 配下 (Jakarta EE)
名前空間Jakarta EE 9+ で javax.*jakarta.*

主な API / 規格

カテゴリAPI役割
Web 層Servlet、JSP、JSF、WebSocketHTTP リクエスト処理・画面生成
RESTfulJAX-RSREST API 構築
SOAPJAX-WSSOAP Web サービス
永続化JPA (Java Persistence API)ORマッピング (Hibernate 等が実装)
ビジネスロジックEJBセッション Bean / メッセージ駆動 Bean
DICDI依存性注入とライフサイクル管理
トランザクションJTA分散トランザクション
メッセージングJMS非同期メッセージング
セキュリティJakarta Security認証・認可
バリデーションBean Validation@NotNull 等のアノテーション検証
JSONJSON-B、JSON-PJSON のシリアライズ・解析
メールJavaMailSMTP 送信等
並行Concurrency Utilitiesマネージドスレッド

Java EE / Jakarta EE / Spring の関係

  • Java EE / Jakarta EE: 標準規格。複数の実装 (アプリケーションサーバ) で動く
  • Spring Framework / Spring Boot: Java EE 標準を必須としない独立したエコシステム。ただし JPA・Bean Validation 等の標準 API は内部で活用している
  • 現在の新規プロジェクトでは Spring Boot が主流。Jakarta EE 系は WildFly / Open Liberty / Payara などを使う案件で根強く採用

典型的な Servlet + JPA の例

@WebServlet("/users")
public class UserServlet extends HttpServlet {

  @PersistenceContext
  private EntityManager em;

  protected void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {
    List<User> users = em.createQuery("FROM User u", User.class).getResultList();
    req.setAttribute("users", users);
    req.getRequestDispatcher("/WEB-INF/users.jsp").forward(req, res);
  }
}

主な実行環境 (アプリケーションサーバ)

サーバ特徴
WildFly (旧 JBoss)Red Hat、Jakarta EE 完全対応のフラッグシップ実装
GlassFishかつてのリファレンス実装
Open LibertyIBM 製。軽量・モジュール
PayaraGlassFish 派生。商用サポート
TomEETomcat + EE。軽量
WebLogicOracle 製。エンタープライズ大規模
WebSphereIBM 製。大規模基幹系
Apache Tomcat (単体)Servlet / JSP のみ。完全な EE 実装ではない

注意点

  • Jakarta EE 9 以降は javax.*jakarta.* へ。ライブラリ・サーバの整合性に注意
  • 新規開発では Spring Boot / MicroProfile も有力選択肢
  • EJB は重いと敬遠されてきた経緯がある。最近は CDI + JPA + JAX-RS の組み合わせが主流
  • 古い Java EE 5/6 プロジェクトの保守時は、サポート切れの API・脆弱性のあるサーバ実装に注意

関連

編集
Post Share
子ページ
  1. サーブレット
  2. DI
  3. CDI
  4. EJB
  5. JAX-RS
  6. REST
同階層のページ
  1. Spring Framework
  2. Struts
  3. Java EE