Jakarta EE(旧 Java EE)
Jakarta EE とは
Jakarta EE(ジャカルタ イーイー)は、Java でエンタープライズアプリケーションを開発するための仕様群(API の集合体)である。Web アプリケーション、データベースアクセス、メッセージング、セキュリティなど、業務システムに必要な機能を標準化した仕様として定義されている。
かつては「Java EE(Java Platform, Enterprise Edition)」と呼ばれていたが、2017 年に Oracle から Eclipse Foundation に移管され、「Jakarta EE」に改称された。
なぜ SIer で重要か
SIer の現場では、Jakarta EE(旧 Java EE)で構築されたレガシーシステムの保守・改修案件が数多く存在する。特に金融機関や官公庁のシステムでは、Java EE のアプリケーションサーバ上で動くシステムが今も現役で稼働している。新規開発では Spring Boot が主流だが、既存システムの理解には Jakarta EE の知識が不可欠である。
基本概念
Java EE から Jakarta EE への移行の経緯
Java EE は元々 Sun Microsystems が策定し、Oracle が引き継いだエンタープライズ Java の仕様であった。しかし、Oracle は Java EE の開発を積極的に進めなくなり、2017 年に Eclipse Foundation にプロジェクトを移管した。
移管に伴い、以下の変更が生じた。
| 項目 | 旧(Java EE) | 新(Jakarta EE) |
|---|---|---|
| 名称 | Java EE 8 以前 | Jakarta EE 9 以降 |
| パッケージ名 | javax.* | jakarta.* |
| 管理団体 | Oracle | Eclipse Foundation |
javax.* から jakarta.* へのパッケージ名変更は、既存のコードに大きな影響を及ぼすものであり、移行作業では全ての import javax.servlet.* を import jakarta.servlet.* に変更する必要がある。SIer の現場ではこの移行対応が発生するケースも増えている。
主な仕様
Jakarta EE は多数の仕様で構成されているが、SIer の現場で特に登場頻度が高いものを以下にまとめる。
| 仕様 | 説明 |
|---|---|
| Servlet | HTTP リクエスト・レスポンスを処理する基盤技術。Spring MVC も内部的に Servlet の上で動作する |
| JSP(JavaServer Pages) | HTML の中に Java コードを埋め込んでサーバサイドで画面を生成する技術。レガシーシステムで多く使われている |
| JPA(Jakarta Persistence) | オブジェクトとリレーショナルデータベースのマッピング(ORM)を行う仕様。Hibernate が代表的な実装 |
| JAX-RS | RESTful Web サービスを構築するための仕様。REST API の開発に使われる |
| CDI(Contexts and Dependency Injection) | Jakarta EE 標準の DI(依存性注入)の仕組み。Spring の DI と似た概念 |
| EJB(Enterprise JavaBeans) | ビジネスロジックを格納するコンポーネントモデル。トランザクション管理やリモート呼び出しを提供するが、近年は CDI に置き換えられつつある |
アプリケーションサーバ
Jakarta EE アプリケーションは、仕様を実装した「アプリケーションサーバ」上で動作する。
| アプリケーションサーバ | 提供元 | 特徴 |
|---|---|---|
| WildFly | Red Hat(OSS) | 旧 JBoss。Jakarta EE 完全準拠のオープンソース実装 |
| GlassFish | Eclipse Foundation(OSS) | Jakarta EE のリファレンス実装 |
| WebLogic | Oracle(商用) | Oracle 製品との統合に強い。金融系で多い |
| WebSphere | IBM(商用) | IBM 製品との統合に強い。官公庁・大企業で多い |
SIer の現場では、商用のアプリケーションサーバ(WebLogic、WebSphere)が利用されていることが多い。ライセンス費用が高額なため、近年はオープンソースへの移行や、Spring Boot の組み込みサーバ(Tomcat)への乗り換えも進んでいる。
SIer での使われ方
レガシーシステムの保守
2000 年代〜2010 年代に Java EE で構築されたシステムは、SIer の保守案件として今も多数存在する。JSP + Servlet + EJB の構成で作られたシステムの改修やバグ修正を行う際には、Jakarta EE の知識が必要になる。
Spring との使い分け
新規開発では Spring Boot が選ばれることがほとんどだが、既存システムとの整合性を取る必要がある場合や、顧客が特定のアプリケーションサーバを指定している場合には Jakarta EE ベースの開発が選択されることもある。
マイグレーション案件
Java EE 8 以前のシステムを Jakarta EE 9 以降やSpring Boot に移行するマイグレーション案件も増えている。パッケージ名の変更(javax.* → jakarta.*)だけでなく、非推奨 API の置き換えやライブラリのバージョンアップを含む包括的な移行作業が求められる。
まとめ
- Jakarta EE は Java でエンタープライズアプリケーションを開発するための仕様群であり、Servlet、JPA、CDI などが含まれる
- Java EE から Jakarta EE への移管に伴い、
javax.*からjakarta.*へのパッケージ名変更が発生した - SIer の現場では Java EE で構築されたレガシーシステムが多数稼働しており、保守・改修に Jakarta EE の知識が必要
- 新規開発では Spring Boot が主流だが、Jakarta EE の仕様は Spring 内部でも使われており、基礎知識として理解しておくべきである
- マイグレーション案件の需要も増えており、両方の知識があると強みになる