「Jakarta EE」の版間の差分
冒頭文から==概要==分離, +image, +{{Commonscat}}, リンク, など |
en:Java Platform, Enterprise Edition(2014年1月28日 0:41:38(UTC))よりGeneral APIs, Code Sampleを翻訳して追加/上書き, など |
||
34行目: | 34行目: | ||
Java EE APIは Java SE APIを元に機能拡張された様々な技術を包含している。 |
Java EE APIは Java SE APIを元に機能拡張された様々な技術を包含している。 |
||
* [http://docs.oracle.com/javaee/7/api Java EE 7 Platform Packages] |
|||
=== {{Javadoc:EE|package=javax.ejb|javax/ejb}}<code>.*</code> === |
|||
* [http://docs.oracle.com/javaee/6/api Java EE 6 Platform Packages] |
|||
* [http://docs.oracle.com/javaee/5/api Java EE 5 Platform Packages] |
|||
=== {{Javadoc:EE|package=javax.servlet.*|javax/servlet}} === |
|||
EJB1 と EJB2 は 永続化機能を提供するための分散オブジェクトコンテナ、遠隔手続き呼び出し ([[Java Remote Method Invocation|RMI]], RMI-IIOP) 同時実行制御、およびアクセス制御を定義した。 |
|||
[[Java Servlet|Servlet]][[パッケージ (Java)|パッケージ]]では、主に[[Hypertext Transfer Protocol|HTTP]]リクエストのためのAPIが定義されている。また[[JavaServer Pages]] (JSP) に関するAPIも含まれる。 |
|||
=== {{Javadoc:EE|package=javax.websocket.*|javax/websocket}} === |
|||
このパッケージは エンタープライズビーンとそのクライアント、エンタープライズビーンと EJBコンテナのそれぞれの間の決まりを定義した[[クラス (コンピュータ)|クラス]]と[[インタフェース (情報技術)|インターフェース]]を含む。 |
|||
WebSocketパッケージでは、[[WebSocket]]の通信に関するAPIが定義されている。 |
|||
=== {{Javadoc:EE|package=javax. |
=== {{Javadoc:EE|package=javax.faces.*|javax/faces}} === |
||
Facesパッケージでは、 [[Java Server Faces]] (JSF) に関するAPIが定義されている。JSFはコンポーネントによるUI構築技術である。 |
|||
=== {{Javadoc:EE|package=javax.el.*|javax/el}} === |
|||
これらのパッケージは、JTA について定義する。 |
|||
ELパッケージでは、Java EEの[[JavaServer Pages#EL式|EL式]]に関する[[クラス (コンピュータ)|クラス]]と[[インタフェース (情報技術)|インターフェース]]が定義されている。EL式はJSPやJSFを作成するWebアプリケーション開発者のためにデザインされた簡単な構文である。主にJSFにおいてコンポーネントに管理beanを結びつけるために用いられるが、仕様自体は独立しており、それ以外の部分でも使用可能である。 |
|||
=== {{Javadoc:EE|package=javax. |
=== {{Javadoc:EE|package=javax.enterprise.inject.*|javax/enterprise/inject}} === |
||
Injectパッケージでは、[http://jcp.org/en/jsr/detail?id=299 Contexts and Dependency Injection] (CDI) APIのためのインジェクション[[アノテーション]]が定義されている。CDIは[[依存性の注入]] (DI) に関する仕様である。 |
|||
=== {{Javadoc:EE|package=javax.enterprise.context.*|javax/enterprise/context}} === |
|||
このパッケージは、 XMLの読み込みと書き込み機能を含む。 |
|||
Contextパッケージでは、Contexts and Dependency Injection (CDI) APIのためのコンテキストアノテーションとインタフェースが定義されている。 |
|||
=== {{Javadoc:EE|package=javax. |
=== {{Javadoc:EE|package=javax.ejb.*|javax/ejb}} === |
||
[[Enterprise JavaBeans]] (EJB) パッケージでは、EJBコンテナがサポートする[[トランザクション処理]] ([[JTA]])、[[RPC]]([[Java Remote Method Invocation|RMI]]または[[RMI-IIOP]])、[[並行性制御]]、[[依存性の注入]] (DI)、ビジネスオブジェクトのための[[アクセス制御]]といった軽量APIが定義されている。またこのパッケージは、エンタープライズBeanとそのクライアント間、エンタープライズBeanとEJBコンテナ間の取り決めを定義したクラスとインタフェースも含む。 |
|||
=== {{Javadoc:EE|package=javax.validation.*|javax/validation}} === |
|||
このパッケージは、 [[Java Message Service|JMS]] APIについて定義している。JMS APIはJavaプログラムへエンタープライズメッセージの生成、送信、受信、読み込みの機能を提供する。
|
|||
Validationパッケージでは、{{仮リンク|Bean Validation|en|Bean Validation}} APIのためのアノテーションとインタフェースが定義されている。Bean Validationはbean︵例えばJPAのモデルクラス︶に対する統一されたバリデーション︵値の検証︶手法を提供する。Java EEの各要素では、[[Java Persistence API|JPA]]が永続化層におけるバリデーションに、[[JavaServer Faces|JSF]]がビュー層におけるバリデーションにまた関与する。
|
|||
=== {{Javadoc:EE|package=javax. |
=== {{Javadoc:EE|package=javax.persistence.*|javax/persistence}} === |
||
Persistenceパッケージには、永続化プロバイダと管理クラス、それに[[Java Persistence API]] (JPA) クライアントの間の取り決めを定義したクラスとインタフェースが含まれている。 |
|||
=== {{Javadoc:EE|package=javax.transaction.*|javax/transaction}} === |
|||
このパッケージは、 [[Java Server Faces|JSF]] APIについて定義している。JSF はコンポーネントによるUI構築技術である。 |
|||
Transactionパッケージでは、Java EEの[[トランザクション処理]]を担う[[Java Transaction API]] (JTA) のインタフェースとアノテーションを含むAPIが定義されている。これらのAPIは低レベルAPIが抽象化されたものであり、通常のアプリケーション開発者がJava EEを用いて開発する場合は、EJBのより高レベルのトランザクション管理を用いたり、このAPIのアノテーションとCDIの管理Beanとを組み合わせて使用することが想定されている。 |
|||
=== {{Javadoc:EE|package=javax. |
=== {{Javadoc:EE|package=javax.security.auth.message.*|javax/security/auth/message}} === |
||
Messageパッケージでは、Java Authentication SPI (JASPIC) のインタフェースやクラスを含むAPIが定義されている。JASPICはセキュアなJava EEアプリケーションを構築するための仕様である。 |
|||
=== {{Javadoc:EE|package=javax.enterprise.concurrent.*|javax/enterprise/concurrent}} === |
|||
このパッケージは、永続化プロバイダと管理クラスと[[Java Persistence API|JPA]]クライアントの間の決まりを定義したクラスとインターフェースを含む。 |
|||
Concurrentパッケージでは、Java EEプラットフォーム標準の管理されたスレッドプールと連携する、並行処理に関するインタフェースが定義されている。 |
|||
=== {{Javadoc:EE|package=javax.jms.*|javax/jms}} === |
|||
== 外部リンク == |
|||
JMSパッケージでは、[[Java Message Service]] (JMS) APIが定義されている。JMSはJavaプログラムにエンタープライズメッセージの生成、送信、受信、読込のための手法を提供する。
|
|||
=== {{Javadoc:EE|package=javax.batch.api.*|javax/batch/api}} === |
|||
BatchのAPIパッケージでは、Java EEの[[バッチ処理]]のためのAPIが定義されている。バッチ処理APIは、大容量のデータを扱う長時間に亘るバックグラウンドタスクや、定期的に実行されるタスクのための手法を提供する。 |
|||
=== {{Javadoc:EE|package=javax.resource.*|javax/resource}} === |
|||
Resourceパッケージでは、{{仮リンク|Java EE Connector Architecture|en|Java EE Connector Architecture}} (JCA) APIが定義されている。JCAは[[Enterprise application integration]] (EAI) の一部であるアプリケーションサーバーや企業情報システム (EIS) の相互接続を実現するための技術である。このAPIはベンダーのための低レベルAPIであり、通常のアプリケーション開発者をターゲットとしてはいない。
|
|||
== 例 == |
|||
以下に、Java EE 7の様々な技術を組み合わせて作成した、ユーザーの登録を行うWeb入力画面のサンプルを示す。 |
|||
Java EEには、[[Java Servlet|サーブレット]]に[[JavaServer Pages|JSP]]、また[[JavaServer Faces|JSF]]と{{仮リンク|Facelets|en|Facelets}}といった、Web UIを作ることが可能ないくつかの技術が存在する。以下はJSFとFaceletsを用いた例である。コード上では明示されていないが、入力コンポーネントでは入力値の検証に{{仮リンク|Bean Validation|en|Bean Validation}}を使用している。 |
|||
<source lang="xml"> |
|||
<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> |
|||
</source> |
|||
=== バッキングBeanの例 === |
|||
Java EEでは、ビューの処理の実装にバッキングBean(画面の背後で処理するBean、管理Beanとも)と呼ばれる仕組みを用いる。以下はCDIと[[Enterprise JavaBeans|EJB]]を用いたバッキングBeanの例である。 |
|||
<source lang="java"> |
|||
@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; |
|||
} |
|||
} |
|||
</source> |
|||
=== DAOの例 === |
|||
Java EEでは、[[ビジネスロジック]]の実装のために[[Enterprise JavaBeans|EJB]]が用意されている。データの永続化では[[JDBC]]や[[Java Persistence API|JPA]]が使用できる。以下はEJBとJPAを用いた[[Data Access Object]] (DAO) の例である。コード上では明示されていないが、EJBではトランザクション管理に[[Java Transaction API|JTA]]が使用される。
|
|||
<source lang="java"> |
|||
@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(); |
|||
} |
|||
} |
|||
</source> |
|||
=== エンティティの例 === |
|||
Java EEでは、[[エンティティ]]/モデルクラスのために[[Java Persistence API|JPA]]が用意されており、またバリデーション︵値の検証︶では{{仮リンク|Bean Validation|en|Bean Validation}}が使用できる。以下は両者を用いた例である。
|
|||
<source lang="java"> |
|||
@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; |
|||
} |
|||
} |
|||
</source> |
|||
== 関連項目 == |
|||
{{Wikibooks|Java|Java}} |
{{Wikibooks|Java|Java}} |
||
{{Commonscat|Java EE}} |
{{Commonscat|Java EE}} |
||
* [[EAR]] |
|||
== 外部リンク == |
|||
* [http://www.oracle.com/technetwork/jp/java/javaee/overview/ Oracle - Java EE] |
* [http://www.oracle.com/technetwork/jp/java/javaee/overview/ Oracle - Java EE] |
||
68行目: | 227行目: | ||
{{Computer-stub}} |
{{Computer-stub}} |
||
[[Category: |
[[Category:Java]] |
||
[[Category:ウェブアプリケーション |
[[Category:ウェブアプリケーション]] |
||
[[Category:Javaプラットフォーム|Platform, Enterprise Edition]] |
[[Category:Javaプラットフォーム|Platform, Enterprise Edition]] |
||
[[Category:Java enterprise platform |
[[Category:Java enterprise platform]] |
||
[[Category:Java specification requests |
[[Category:Java specification requests]] |
2014年2月24日 (月) 03:08時点における版
![]() | |
Javaカード | |
---|---|
Java ME (Micro) | |
Java SE (Standard) | |
Jakarta EE | |
JavaFX |
概要
歴史
Java 2 Platform, Enterprise Edition 1.2 は、最初のJ2EEの仕様としてサン・マイクロシステムズが開発をし、1999年12月12日にリリースされた。 Java 2 Platform, Enterprise Edition 1.3 は、JSR 58 として2001年9月24日にリリースされた。仕様検討は、Java Community Processの元で行われた。2001年4月にベータ版がSunによってリリースされた。 Java 2 Platform, Enterprise Edition 1.4 は、JSR 151 として2003年11月24日にリリースされた。2002年12月にベータ版がSunによってリリースされた。 Java Platform, Enterprise Edition 5 は、JSR 244として2006年5月11日にリリースされた。 Java Platform, Enterprise Edition 6 は、JSR 316として2009年12月10日にリリースされた。 Java Platform, Enterprise Edition 7 は、JSR 342として2013年5月28日にリリースされた。Java EEの実装
Java EE SDK には、Java EEに準拠したオープンソースのアプリケーションサーバであるGlassFish Open Source Editionが同梱されている。GlassFish 4.0はJava EE 7の参照実装である。 Java開発ツールの多くも Java EE に対応している。 なお、Java EE を使用したアプリケーションサーバの一覧に関しては、アプリケーションサーバの項を参照。主なAPI
Java EE APIは Java SE APIを元に機能拡張された様々な技術を包含している。 ●Java EE 7 Platform Packages ●Java EE 6 Platform Packages ●Java EE 5 Platform Packagesjavax.servlet.*
Servletパッケージでは、主にHTTPリクエストのためのAPIが定義されている。またJavaServer Pages (JSP) に関するAPIも含まれる。
javax.websocket.*
WebSocketパッケージでは、WebSocketの通信に関するAPIが定義されている。
javax.faces.*
Facesパッケージでは、 Java Server Faces (JSF) に関するAPIが定義されている。JSFはコンポーネントによるUI構築技術である。
javax.el.*
ELパッケージでは、Java EEのEL式に関するクラスとインターフェースが定義されている。EL式はJSPやJSFを作成するWebアプリケーション開発者のためにデザインされた簡単な構文である。主にJSFにおいてコンポーネントに管理beanを結びつけるために用いられるが、仕様自体は独立しており、それ以外の部分でも使用可能である。
javax.enterprise.inject.*
Injectパッケージでは、Contexts and Dependency Injection (CDI) APIのためのインジェクションアノテーションが定義されている。CDIは依存性の注入 (DI) に関する仕様である。
javax.enterprise.context.*
Contextパッケージでは、Contexts and Dependency Injection (CDI) APIのためのコンテキストアノテーションとインタフェースが定義されている。
javax.ejb.*
Enterprise JavaBeans (EJB) パッケージでは、EJBコンテナがサポートするトランザクション処理 (JTA)、RPC︵RMIまたはRMI-IIOP︶、並行性制御、依存性の注入 (DI)、ビジネスオブジェクトのためのアクセス制御といった軽量APIが定義されている。またこのパッケージは、エンタープライズBeanとそのクライアント間、エンタープライズBeanとEJBコンテナ間の取り決めを定義したクラスとインタフェースも含む。
javax.validation.*
Validationパッケージでは、Bean Validation APIのためのアノテーションとインタフェースが定義されている。Bean Validationはbean︵例えばJPAのモデルクラス︶に対する統一されたバリデーション︵値の検証︶手法を提供する。Java EEの各要素では、JPAが永続化層におけるバリデーションに、JSFがビュー層におけるバリデーションにまた関与する。
javax.persistence.*
Persistenceパッケージには、永続化プロバイダと管理クラス、それにJava Persistence API (JPA) クライアントの間の取り決めを定義したクラスとインタフェースが含まれている。
javax.transaction.*
Transactionパッケージでは、Java EEのトランザクション処理を担うJava Transaction API (JTA) のインタフェースとアノテーションを含むAPIが定義されている。これらのAPIは低レベルAPIが抽象化されたものであり、通常のアプリケーション開発者がJava EEを用いて開発する場合は、EJBのより高レベルのトランザクション管理を用いたり、このAPIのアノテーションとCDIの管理Beanとを組み合わせて使用することが想定されている。
javax.security.auth.message.*
Messageパッケージでは、Java Authentication SPI (JASPIC) のインタフェースやクラスを含むAPIが定義されている。JASPICはセキュアなJava EEアプリケーションを構築するための仕様である。
javax.enterprise.concurrent.*
Concurrentパッケージでは、Java EEプラットフォーム標準の管理されたスレッドプールと連携する、並行処理に関するインタフェースが定義されている。
javax.jms.*
JMSパッケージでは、Java Message Service (JMS) APIが定義されている。JMSはJavaプログラムにエンタープライズメッセージの生成、送信、受信、読込のための手法を提供する。
javax.batch.api.*
BatchのAPIパッケージでは、Java EEのバッチ処理のためのAPIが定義されている。バッチ処理APIは、大容量のデータを扱う長時間に亘るバックグラウンドタスクや、定期的に実行されるタスクのための手法を提供する。
javax.resource.*
Resourceパッケージでは、Java EE Connector Architecture (JCA) APIが定義されている。JCAはEnterprise application integration (EAI) の一部であるアプリケーションサーバーや企業情報システム (EIS) の相互接続を実現するための技術である。このAPIはベンダーのための低レベルAPIであり、通常のアプリケーション開発者をターゲットとしてはいない。
例
以下に、Java EE 7の様々な技術を組み合わせて作成した、ユーザーの登録を行うWeb入力画面のサンプルを示す。 Java EEには、サーブレットにJSP、またJSFとFaceletsといった、Web UIを作ることが可能ないくつかの技術が存在する。以下はJSFとFaceletsを用いた例である。コード上では明示されていないが、入力コンポーネントでは入力値の検証にBean Validationを使用している。<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の例
Java 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();
}
}
エンティティの例
Java 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;
}
}