Jakarta EE
Jakarta EEは、Javaで実装されたアプリケーションサーバの標準規格及びそのAPIを定めたもの。Java Platform, Standard Edition (Java SE) の拡張機能の形で提供される。旧名はJava Platform, Enterprise Edition (Java EE) 。
![]() | |
Javaカード | |
---|---|
Java ME (Micro) | |
Java SE (Standard) | |
Jakarta EE | |
JavaFX |
概要
編集歴史
編集主なAPI
編集Jakarta EE APIは Java SE APIを元に機能拡張された様々な技術を包含している。
Servletパッケージでは、主にHTTPリクエストのためのAPIが定義されている。またJavaServer Pages (JSP) に関するAPIも含まれる。
WebSocketパッケージでは、WebSocketの通信に関するAPIが定義されている。
Facesパッケージでは、 Java Server Faces (JSF) に関するAPIが定義されている。JSFはコンポーネントによるUI構築技術である。
ELパッケージでは、Java EEのEL式に関するクラスとインターフェースが定義されている。EL式はJSPやJSFを作成するWebアプリケーション開発者のためにデザインされた簡単な構文である。主にJSFにおいてコンポーネントに管理beanを結びつけるために用いられるが、仕様自体は独立しており、それ以外の部分でも使用可能である。
Injectパッケージでは、Contexts and Dependency Injection (CDI) APIのためのインジェクションアノテーションが定義されている。CDIは依存性の注入 (DI) に関する仕様である。
Contextパッケージでは、Contexts and Dependency Injection (CDI) APIのためのコンテキストアノテーションとインタフェースが定義されている。
Validationパッケージでは、Bean Validation APIのためのアノテーションとインタフェースが定義されている。Bean Validationはbean(例えばJPAのモデルクラス)に対する統一されたバリデーション(値の検証)手法を提供する。Java EEの各要素では、JPAが永続化層におけるバリデーションに、JSFがビュー層におけるバリデーションにまた関与する。
Persistenceパッケージには、永続化プロバイダと管理クラス、それにJava Persistence API (JPA) クライアントの間の取り決めを定義したクラスとインタフェースが含まれている。
Transactionパッケージでは、Java EEのトランザクション処理を担うJava Transaction API (JTA) のインタフェースとアノテーションを含むAPIが定義されている。これらのAPIは低レベルAPIが抽象化されたものであり、通常のアプリケーション開発者がJava EEを用いて開発する場合は、EJBのより高レベルのトランザクション管理を用いたり、このAPIのアノテーションとCDIの管理Beanとを組み合わせて使用することが想定されている。
Messageパッケージでは、Java Authentication SPI (JASPIC) のインタフェースやクラスを含むAPIが定義されている。JASPICはセキュアなJava EEアプリケーションを構築するための仕様である。
Concurrentパッケージでは、Java EEプラットフォーム標準の管理されたスレッドプールと連携する、並行処理に関するインタフェースが定義されている。
BatchのAPIパッケージでは、Java EEのバッチ処理のためのAPIが定義されている。バッチ処理APIは、大容量のデータを扱う長時間に亘るバックグラウンドタスクや、定期的に実行されるタスクのための手法を提供する。
Resourceパッケージでは、Java EE Connector Architecture (JCA) APIが定義されている。JCAはEnterprise application integration (EAI) の一部であるアプリケーションサーバーや企業情報システム (EIS) の相互接続を実現するための技術である。このAPIはベンダーのための低レベルAPIであり、通常のアプリケーション開発者をターゲットとしてはいない。
Jakarta EEの実装
編集アプリケーションサーバ | Java EE 8準拠 | Java EE 7準拠 | Java EE 6準拠 (Full Profile) |
Java EE 6準拠 (Web Profile) |
Java EE 5準拠 | J2EE 1.4準拠 | ライセンス |
---|---|---|---|---|---|---|---|
GlassFish server Open Source Edition | Yes v5.x | Yes v4.x [2] | Yes v3.x [3] | Yes v3.x Web Profile | Yes v2.1.x[3] | CDDL, GPL | |
Payara Server | Yes v5.x | Yes 4.x | CDDL, GPL | ||||
Oracle GlassFish Server | Yes v3[4] | Yes Sun Java System Application Server v9.0 | Yes Sun Java System Application Server v8.2 | プロプライエタリ (OSS版を元とする) | |||
Oracle WebLogic Server | Yes v12.2.x | Yes v12.1.x[5] | Yes v10.3.5.0 | Yes v9 | プロプライエタリ | ||
WildFly | Yes v14.x[6] | Yes v12,x, v11.x, v10.x, v9.x, v8.x[7][8][9], v7.1[10] | Yes v6.0 [1], v7.0 [2] | Yes v5.1[11][12] | Yes v4.x | LGPL | |
JBoss Enterprise Application Platform | Yes v7.2 [13] | Yes v7.0 | Yes v6.0 [14] | Yes v5 | LGPL (WildFlyの商用版) | ||
IBM WebSphere Application Server | Yes v8[15] | Yes v7 | Yes | プロプライエタリ | |||
Open Liberty | Yes v18.0.0.2[16] | Yes v18.x, v17.x, IBM WAS Liberty v8.5.5.6 [17][18] | Yes IBM WAS Liberty v8.5.5 [19] | Eclipse Public License | |||
IBM WebSphere Application Server Community Edition | Yes v3.0[20][出典無効] | Yes v2.1 | プロプライエタリ | ||||
Apache Geronimo | Yes v3.0 [3][21] | Yes v2.0 | Yes v1.0 | Apache License 2.0 | |||
TmaxSoft JEUS | Yes v8 [22][23][24] | Yes v7[25][26] | Yes v6 | Yes v5 | プロプライエタリ | ||
富士通 Interstage Application Server[27] | Yes v1[28] | Yes | プロプライエタリ | ||||
NEC WebOTX | Yes v10[29] | Yes v9[30] | Yes v8 | プロプライエタリ | |||
Caucho Resin Server | Yes v4.0.[31] | Yes | プロプライエタリ | ||||
Apache TomEE[32][33] | Yes | Apache License 2.0 | |||||
OW2 JOnAS | Yes v5.3 rc1 [34] | Yes | Yes | LGPL | |||
SAP NetWeaver | Yes v2.x [35] | Yes | Yes | プロプライエタリ | |||
Oracle Containers for Java EE | Yes | プロプライエタリ | |||||
Oracle iPlanet Web Server | Yes Sun Java System Web Server | プロプライエタリ | |||||
Oracle Application Server 10g | Yes | プロプライエタリ | |||||
Sybase Enterprise Application Server [36] | Yes | プロプライエタリ |
例
編集<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:body>
<h:messages />
<h:form>
<h:panelGrid columns="2">
<h:outputLabel for="firstName" value="First name" />
<h:inputText id="firstName" value="#{userEdit.user.firstName}" label="First name" />
<h:outputLabel for="lastName" value="Last name" />
<h:inputText id="lastName" value="#{userEdit.user.lastName}" label="Last name" />
<h:commandButton action="#{userEdit.saveUser}" value="Save" />
</h:panelGrid>
</h:form>
</h:body>
</html>
バッキングBeanの例
編集JJakarta EEでは、ビューの処理の実装にバッキングBean(画面の背後で処理するBean、管理Beanとも)と呼ばれる仕組みを用いる。以下はCDIとEJBを用いたバッキングBeanの例である。
@Named
@ViewScoped
public class UserEdit {
private User user;
@Inject
private UserDAO userDAO;
public String saveUser() {
userDAO.save(this.user);
addFlashMessage("User " + this.user.getId() + " saved");
return "users.xhtml?faces-redirect=true";
}
public void setUser(User user) {
this.user = user;
}
public User getUser() {
return user;
}
}
DAOの例
編集@Stateless
public class UserDAO {
@PersistenceContext
private EntityManager entityManager;
public void save(User user) {
entityManager.persist(user);
}
public void update(User user) {
entityManager.merge(user);
}
public List<User> getAll() {
return entityManager.createNamedQuery("User.getAll", User.class)
.getResultList();
}
}
エンティティの例
編集Jakarta EEでは、エンティティ/モデルクラスのためにJPAが用意されており、またバリデーション(値の検証)ではBean Validationが使用できる。以下は両者を用いた例である。
@Entity
public class User {
@Id
@GeneratedValue(strategy = IDENTITY)
private Integer id;
@Size(min = 2, message="First name too short")
private String firstName;
@Size(min = 2, message="Last name too short")
private String lastName;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
脚注
編集関連項目
編集- Java 、Java#エディション(Java SE、Java EE、Java MEなど)、Java#バージョン履歴(JDK 1.0からJ2SE 1.2、Java SE 8、Java SE 9など)
- Java Platform, Standard Edition (Java SE) - Java の汎用的なエディション
- Java Platform, Micro Edition (Java ME) - Java の組み込みシステム向けエディション
- EAR - Jakarta EEアプリーケーションのパッケージ形式