
第1回 JSF・Spring・Hibernateで次世代Javaに備える
西ヶ谷岳(サン・マイクロシステムズ)
2005/7/6
| Page.1 | Page.2 |
J2EEの開発環境は大きな変革期を迎えようとしています。本年中に最終スペックを公開する予定のJ2EEの次世代仕様「Java EE 5」は、開発の容易性(EoD:Ease of Development)を目指して、全く新しいといえる開発スタイルを提案しようとしています。
この変革はあまりにも大胆な変更であるため、従来のJ2EE 1.4仕様の資産は、ソースコードレベルでの互換性が保たれない部分が多く見られます(バイナリレベルでの互換性は確保されるはずです)。いわばこの過渡期にあるいま、皆さんがJ2EEアプリケーションを設計する場合に、現在開発しようとしているアプリケーションの資産が、将来のJava EE 5環境でも有効に活用できるように考慮することは非常に重要なテーマです。
この連載では、Java EE 5へのマイグレーションを考慮したアーキテクチャとして、JSF、Spring、Hibernateの組み合わせを提案し、なぜこの組み合わせがベス ト・プラクティスなのかを計5回の連載で解説していきます。また、これらの技術を組み合わせて設計を行う場合に注意しなければいけない技術的ポイントについても解説します。
第1回は、現在公開されている最新のドラフト仕様からJava EE 5がどう変わるかを解説します。
|
|
Java EE 5仕様の構成 |
Java EE 5の仕様はJCP(Java Community Process)によって策定されており、さまざまなベンダや個人のエキスパートたちが技術のテーマごとに集まってエキスパート・グループを形成し、標準化作業を進 めています。Java EE 5のエキスパート・グループはJSR-244と呼ばれ、現在、公開されているドラフト仕様のステータスはEDR(Early Draft Review)となっています。
| Java EE 5という名称について 6月27日から30日にかけて、JavaOne 2005がサンフランシスコで開催されました。ここでは、従来のJ2SE 5.0、J2EE 5.0という呼び名をそれぞれJava SE 5.0、Java EE 5.0と改名することが発表されました。本連載でも、今後はJava EE 5という名称を使用していきます。しかし、J2EE 1.4については、Java EE 1.4とは呼ばずに、従来通りJ2EE 1.4と呼ぶことにします。 |
皆さんご存じのようにJ2EE仕様は複数の仕様の集合になっています。以下にJava EE 5を構成するオプション・パッケージの一覧を示します。
| Optional Package | Version | JSR | Status |
| Servlet | 2.4 | ||
| JSP | 2.0 → 2.1 | JSR-245 | PR |
| JSTL | 1.1 | ||
| JSF | 1.1 → 1.2 | JSR-252 | PR |
| JSP_Debugging | 1.0 | JSR-45 | FR |
| JMS | 1.1 | ||
| JTA | 1.0 | ||
| JavaMail | 1.3 | ||
| JAF | 1.0 | ||
| Connector | 1.5 | ||
| Web_Services | 1.1 | ||
| JAX-WS(JAX-RPC) | 1.1 → 2.0 | JSR-224 | PR |
| JAXB | 1.0 → 2.0 | JSR-222 | PR |
| SAAJ | 1.2 | ||
| JAXR | 1.0 | ||
| WebSvc_Metadata | 1.0 | JSR-181 | FR |
| StAX | 1.0 | JSR-173 | FR |
| EJB Simplified | 2.1 → 3.0 | JSR-220 | PR |
| EJB Persistence | 2.1 → 3.0 | JSR-220 | PR |
| Common Annotaion | 1.0 | JSR-250 | PR |
| J2EE_Management | 1.0 | ||
| J2EE_Deployment | 1.1c | ||
| JACC | 1.0 |
表1で、黄色で示している部分はJ2EE 1.4から存在していてバージョンが上がる予定のもの、水色で示している部分はJava EE 5から新たに追加になったものです。この表を見て目まいがした方もいらっしゃるかもしれません。J2EE仕様はこれまでも十分に大規模なAPIであり、容易に理解できるものではありませんでした。それにもかかわらず7つも新しい仕様が加わるため、全体のAPIはさらに巨大化したといえます。これで、EoDが実現できるのかと疑問に思われる方も多いのではないでしょうか。
しかし、J2EEアプリケーションを開発する場合に、すべてのAPIを使用するわけではありません。APIはアプリケーションの要件に応じて適切に選択すればよいのです。逆に、それぞれの仕様がどんな技術を提供し、どんな問題を解決してくれるのかをあらかじめ知っておくことは必要です。今回、Java EE 5で追加または更新される予定のAPIは確実にEoDを実現し、アプリケーションのコードを驚くほど簡略化できることは間違いありません。以下の節で は、Java EE 5で変更になる各仕様をWebコンテナ関連、Webサービス関連、EJBコンテナ関連に分類し、それぞれどのような改良が計画されているかを紹介します。
|
|
Webコンテナ関連の変更 |
Webコンテナ関連では、従来のServlet API、JSPの仕様に大きな変更はありませんが、すでに多くのベンダで採用されているJavaServer Faces(JSF)仕様がJava EE 5では標準仕様として含まれることになりました。本稿でJava EE 5への移行に備えて、JSFを推奨している理由の1つがこれです。現在最もよく使われているWeb層のフレームワークはStrutsであろうと思います。JSFはStrutsと同様のMVCモデルに基づいていますが、よりモダンで洗練されたアーキテクチャとなっています。
JSP仕様とJSF仕様はともにそれぞれマイナーバージョンが上がりますが、表面上は大きな変更はありません。JSP 2.1(JSR-245)とJSF 1.2(JSR-252)の主なテーマは、JSF-ELのJSPへの統合です。かつてJSTLでのみ使用可能だったEL(${val}の形式)表現は、JSP 2.0になったいまでは、JSPによってレンダリングされるようになりました。これにより単に画面に変数の値を出力するだけなら、JSTLの<c:out>タグを使う必要がなく単に${val}のように記述するだけでよくなりました。このときと同じことがJSPとJSFのエキスパート・グループの間で議論になっています。すなわち、現在JSF上でのみ表現可能なJSF-EL(#{val}の形式)をJSPが評価できるようにするため、既存のELとの整合化の作業を行っているわけです。
JSTLとJSP Debuggingも新たにJava EE 5の標準に含まれることになりましたが、これらは既存の仕様からの変更はありません。
■Webサービス関連の変更Webサービス関連では、まずJAX-RPC仕様のバージョンが1.1から2.0に上がると同時に、その名前がJAX-WSに変更になります。この名称変更は、JAX-RPC仕様が網羅するのはRPCだけではないこと、XML-RPCプロトコルと紛らわしいこと、そして、何よりWebサービスのためのJava APIであることを明確にするための名称変更です。JAX-WS 2.0(JSR-224)の主な変更点を以下に挙げます。
- 独自のXML/Javaバインディングから、JAXB 2.0(JSR-222)を使用するように変更
- SOAP 1.2、WSDL 2.0、WS-I Basic Profile 1.1のサポート
- WebService metadata(JSR-181)の利用
JAXBが2.0になり、JavaからXML Schemaへのバイディングをサポートしたことにより、JavaとXMLとのラウンドトリップが可能になったため、JAX-WSは晴れてJAXBベースの実装となることができました。JAXB 2.0はJava EE 5で導入されたgenerics、enum、アノテーションを使用しています。そのため、JAX-WS 2.0を使用するためにはJDK1.5が必須となることに注意してください。Java EE 5には、StAX 1.0 (JSR-173)という新しいXML入出力のAPIが含まれていますが、これはJAXB 2.0仕様がこのStAX APIに依存しているためです。
Java EE 5のWebサービス関連で最も重要な仕様がWeb Services Metadata(JSR-181)です。JSR-181で定義されたアノテーションをPOJOなサービスオブジェクトに施すことにより、
従来のWebサービスコンポーネントに必要なリモートインターフェイス、WSDLファイル、webservices.xml、およびJAX-RPCマッピングファイルに相当する情報を自動生成することができるようになります。以下に、JSR-181に基づくWebサービスのためのアノテーション例を示します。
import javax.jws.WebService; |
サービスオブジェクトは、従来のようにjava.rmi.Remoteを継承したリモートインターフェイスを実装する必要がないことに注意してください。JSR-181のアノテーションは、もっと多くの情報を定義することもできますが、適切なデフォルト値決定のルールによって、メタデータ宣言が最小限になるように工夫されています。
| 1/2 |
|
INDEX |
||
| 第1回 JSP・Spring・Hibernateで次世代Javaに備える | ||
| Page1 Java EE 5仕様の構成 Webコンテナ関連の仕様 |
||
| Page2 EJBコンテナ関連の仕様 |
||
Java EE 5マイグレーションプラクティス バックナンバー
- 第1回 JSF・Spring・Hibernateで次世代Javaに備える
- 第2回 鍵はPOJOベースのアプリケーション・デザイン
- 第3回 JSFベースのプレゼンテーション・デザインを考える
- 第4回 擬似EJB3.0環境をSpringとXDocletで作る
- 最終回 インテグレーション層のDAOデザインを考える
| Java Solution全記事一覧 |
ホワイトペーパー(TechTargetジャパン)
- Android NDKでJNIを使用してアプリを高速化するには (2010/3/17)
C/C++やOpenGL ESといったネイティブコードを使うためのNDKとJNIを紹介し、その使い方や注意点を徹底解説します - 調査の難しい「OutOfMemoryError」事例、5選 (2010/3/11)
Java開発者が避けて通れないメモリ不足エラーの基本的な問題切り分け方法と発生につながる事例、対処法を解説 - 究極の問題解析ツール、逆コンパイラJD-Eclipseとは (2010/3/8)
ライブラリ内で例外が発生! そのクラスのソースコードを調べたい!! 自動で逆コンパイルしてくれる無料Eclipseプラグインがあります - いまさら聞けない「Webサービス」の常識 (2010/2/26)
昨今では企業システムでも使われる「Webサービス」の概念やJava標準のJAX-WSを紹介しJBoss WSでサンプルを作成
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
| 「いつかは壊れるサーバ」そんな故障に 迅速で安価に手軽に対応する方法とは? New! |
| 「特権ユーザー」の事件を防げ! 万能権限を持つユーザーの管理方法とは? New! |
| 仮想環境の構築とデータ保護の特効薬?! 実績と信頼性の高いパッケージで安心運用 |
| 仮想環境のバックアップもこれまでどおり 「まるごと取ってまるごと戻す」簡単運用 |
| おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |
| 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | TomcatやJBossなどAPサーバ環境に関する 情報を集約! “業務”用APサーバ大百科 New! |
| ◆ | 一気に解説! 最新のクラスタストレージ 「RAIDを超えたストレージ基準」……など New! |
| ◆ | クラウド的ユーザー体験の変化は脅威か? 仮想化技術を使いこなす運用管理術を紹介 New! |

| ◆ | 上司や部下、部署内メンバーとの情報共有 を“ガラッ”と変えるコラボツールとは? New! |
| ◆ | おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| ◆ | 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |

| ◆ | Twitterのアカウントはなぜ突破された? メールによる新手の攻撃手法とその対策 |
| ◆ | もう仮想化のお試しフェイズは終わりだ! Hyper-V 2.0が基幹システムも仮想化 |
| ◆ | 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |

| ◆ | クライアント企業から求められる人材 ⇒IT技術と経営戦略を併せ持つ「戦略家」 |
| ◆ | .NET編集長が実践する「技術情報検索術」 サンプル・コードを簡単に探す“技”は? |
| ◆ | 業務効率と情報セキュリティ対策を両立! 手間なく確実に機密情報を守る方法とは? |

| ◆ | 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |

| ◆ | 【CTC事例】約30の基幹システムを統合! 膨大なバッジジョブを制御した方法は? |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |
| ◆ | その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |






