NetBeans IDE 6.0 は、Java EE および Glassfish の各チームとの密接な協力のもとで、Java EE 5 仕様との最大限の統合と、それらの容易な使用法を実現するために開発されました。NetBeans IDE 6.0 は、Java EE 5 プログラミングを迅速に学び、生産性を向上させる最善の方法です。
このドキュメントでは、Java EE 5 仕様の主な概念を紹介し、それらが実際のプログラミングにどのように関係するかを説明します。このチュートリアルは、次の節から構成されます。
新しい EJB 3.0 API は、開発者に要求される作業の量を減らして簡素化することによって、ソフトウェア開発を容易にしています。つまり、クラスの数とコードの量が少なくなっています。これは、作業の多くがコンテナによって実行されるために可能になりました。新しい EJB 3.0 API の機能と利点の一部を次に示します。
簡素化されたオブジェクトリレーショナルマッピング。新しい Java Persistence API により、POJO 内で注釈を使用して Java オブジェクトをリレーショナルデータベースにマッピングすることで、オブジェクトリレーショナルマッピングがより簡単で透過性の高いものになっています。
IDE では、ほかの Java クラスをコーディングするように、エンタープライズ Bean をコーディングすることができ、コード補完とエディタヒントを使用して、適切なメソッドを実装し、インタフェースでクラスの同期を維持することができます。ビジネスメソッドまたは Web サービスオペレーションなどを生成するために特別なコマンドやダイアログを使用する必要はありません。ただし、コマンドは、ユーザーが Java EE 5 構文に慣れるまでのことを考慮し、まだ使用可能になっています。
IDE では、Java EE 5 プラットフォームによって提供されるリソースインジェクションの注釈のための完全なコード補完の機能が、ソースエディタに用意されています。また、「EJB の呼び出し」および「データベースを使用」などのコマンドを実行すると、IDE によって、ファイルにリソースが自動的に注入されます。
Java Persistence API モデル
Java EE 5 プラットフォームには、 JSR-220 の一部として開発された新しい Java Persistence API が導入されています。Java Persistence API は、Web アプリケーションやアプリケーションクライアントなど、EJB コンポーネント以外でも使用できます。また、Java EE プラットフォーム以外で Java SE アプリケーションでも使用できます。
Java Persistence API の主な特徴として、次の点が挙げられます。
エンティティーが POJO。「コンテナ管理による持続性」(CMP) を使用していた EJB コンポーネントとは異なり、この新しい API を使用するエンティティーオブジェクトはコンポーネントではないため、EJB モジュール内に存在する必要はありません。
標準化されたオブジェクトリレーショナルマッピング。この新しい仕様はオブジェクトリレーショナルマッピングの処理方法を標準化しているため、開発者はベンダー固有の方法を学ばなくてもよくなります。Java Persistence API は、オブジェクトリレーショナルマッピングの情報を指定するために注釈を使用しますが、これまでどおり XML 記述子もサポートしています。
名前付きクエリー。これからの名前付きクエリーは、メタデータ内に表現された静的なクエリーです。このクエリーは Java Persistence API クエリーまたはネイティブクエリーのどちらかになります。これにより、クエリーの再利用が非常に簡単になります。
IDE には、新しい Java Persistence API を利用したツールが用意されています。エンティティークラスは、データベースから自動的に作成できるほか、手動でコーディングすることもできます。IDE には、持続性ユニットの作成および管理を行うためのテンプレートおよびグラフィックエディタも提供されています。
Web サービス
Java EE 5 プラットフォームでは、注釈の使用によって Web サービスのサポートが大幅に向上され、簡素化されています。この領域に関与する仕様には、JSR 224 (Java API for XML-Based Web Services (JAX-WS) 2.0)、JSR 222 (Java Architecture for XML Binding (JAXB) 2.0)、および JSR 181 (Web Services Metadata for the Java Platform) があります。
JAX-WS 2.0
JAX-WS 2.0 は、Java EE 5 プラットフォームにおける Web サービスのための新しい API です。JAX-RPC 1.1 の後継として、JAX-WS 2.0 はいくつかの面が改善されている一方で、自然な RPC プログラミングモデルを保持しています。改善されているのは、データバインディング、プロトコルとトランスポートの独立性、REST スタイルの Web サービスのサポート、および各開発の容易さです。
JAX-RPC 1.1 との決定的な違いは、すべてのデータバインディングが JAXB 2.0 に委託されたことです。これにより、JAX-WS ベースの Web サービスは XML スキーマを 100% 活用でき、相互運用性および使いやすさの向上につながっています。この 2 つのテクノロジが十分に統合されているため、ユーザーが 2 種類のツールセットを使い分ける必要はありません。Java テクノロジのクラスから始めると、JAXB 2.0 は、WSDL (Web Service Description Language) ドキュメント内部に自動的に埋め込まれた XML スキーマドキュメントを生成できるため、ユーザーが手動でこの誤りが起こりやすい統合を実行しなくてすみます。
追加設定をしなくても、JAX-WS 2.0 は SOAP 1.1、SOAP 1.2、および XML/HTTP プロトコルをサポートしています。プロトコル拡張性は当初からの目標であったため、JAX-WS 2.0 では、たとえば FAST Infoset のような、より優れたパフォーマンス、または特化されたアプリケーションのために、ベンダーが追加のプロトコルおよびエンコーディングをサポートすることが可能です。大きなバイナリデータの送受信を最適化するためにアタッチメントを使用する Web サービスは、W3C の MTOM/XOP (Message Transmission Optimization Mechanism/XML-binary Optimized Packaging の略) 標準をプログラミングモデルへの影響なしに使用できます(詳細は MTOM/XOP のページを参照)。Java EE 5 テクノロジが登場するまでは、Web サービスを定義するのに、長くて扱いにくい記述子が必要でした。今では、 @WebService という注釈を Java テクノロジのクラスに付けるだけです。このクラスのすべての public メソッドは、Web サービスオペレーションとして自動的に公開され、その引数はすべて JAXB 2.0 を使用して XML スキーマデータ型にマッピングされます。
非同期 Web サービス
Web サービスの呼び出しはネットワーク上で行われるため、こうした呼び出しにかかる時間は予測できません。多くのクライアント、特に JFC/Swing ベースのデスクトップアプリケーションのような対話型のものでは、サーバからの応答を待たなければならないため、重大なパフォーマンスの低下が起こることがあります。そうしたパフォーマンスの低下を避けるため、JAX-WS 2.0 は新しい非同期式のクライアント API を提供しています。この API により、アプリケーションプログラマは独自にスレッドを作成する必要がなくなります。代わりに、長時間実行されるリモート呼び出しの管理を JAX-WS ランタイムに任せることができます。
非同期メソッドは、WSDL によって生成された任意のインタフェースのほか、より動的な Dispatch API とも同時に使用できます。WSDL ドキュメントのインポート時には、Web サービスによって定義された任意のオペレーションのために、非同期メソッドを生成するよう要求できます。
2 つの使用モデルがあります。
ポーリングモデルでは、呼び出しを行います。準備ができてから、結果を要求します。
コールバックモデルでは、ハンドラを登録します。応答が届き次第、通知されます。
非同期呼び出しのサポートはすべてクライアント側に実装されるため、対象の Web サービスには変更は必要ありません。
IDE には、JAX-WS を操作するツールが用意されています。「新規ファイル」ウィザードのテンプレートを使用して JAX-WS アーティファクトを生成できます。非同期 Web サービスは、Web サービスカスタマイゼーションエディタを使用して作成できます。このエディタのコード補完機能には、Web サービスで使用できる注釈も含まれます。