StrutsとJSFは共存、統合どちらへ(2/8 ページ)

» 2005年01月19日 09時15分 公開
[阿島哲夫(カサレアル),ITmedia]

JSFの特徴

 Strutsと比較した場合、JSFは次のような特徴を持っている。

  • JSF仕様はJava標準仕様である
  • JSFは仕様と実装が分離されている
  • Viewの構築が簡単
  • IDE(統合開発環境)との高い親和性
  • JSFアプリケーションの実装ではServlet APIを使わない

JSFはJava標準仕様である

 JSFの強みは、Javaの標準仕様であることだ。StrutsはApache Software Foundationという、いちオープンソースコミュニティが開発したフレームワーク製品に過ぎないが、JSFはJava ServletやJava Server Pages(JSP)と同様、JCP(Java Community Process)※1で仕様が策定されているJava標準仕様だ。標準仕様なので、ベンダー各社からリリースされる各種開発ツールや実行環境が標準で対応する方向へ向かうのは当然の成り行きだろう。JSF仕様は次期J2EE仕様の一部として取り込まれる予定なので、J2EE対応の開発環境、実行環境は標準でJSFに対応することになる。

※1 Java Community Process(JCP)とは、Java技術に関する標準仕様を定めるための業界団体。Sun Mycrosystemsが中心となっているが、多くの企業や個人が参加している。

JSFは仕様と実装が分離されている

 仕様と実装が分かれていることも、JSFの強みでもある。JCPが定めているのは仕様のみであり、実装はベンダー各社が仕様に沿って行う。極端に言えば、見た目が仕様通りに動作していればよく内部処理はどのように実装しても構わないということだ。

 つまり、各社製品によって、実行性能や仕様で取り決められていない細かな点がチューニングされる可能性がある。

 一方、Strutsは実装も提供されているので、Struts開発プロジェクトで実装された物をそのまま利用するか、Struts開発プロジェクトで実装された物をベースに拡張利用することになるのだ。

Controller重視のStruts

 Webアプリケーションでは、クライアントからのリクエストの受け付け、入力値の検証、ビジネスロジックの呼び出し、ビジネスロジックの処理結果に応じた画面遷移など、どのアプリケーションでもControllerが行うべき処理は似たようなものになる。

 Strutsはこの点に着目し、共通処理を担うControllerの提供を目的として開発されたフレームワークである。どのWebアプリケーションでも共通な処理を毎回設計、実装を行わずに済むようフレームワークとして提供しよう、という思想だ。共通処理を行うコンポーネントをフレームワークが提供し、画面とビジネスロジックなどの固有の処理を開発者が実装し、各コンポーネントの連携や画面遷移は設定ファイルで定義する、というスタイルになっている。

 Strutsとは「支柱」という和訳だが、まさにアプリケーションの骨格、支柱となる部分を提供するフレームワークといえる。

UI(View)重視のJSF

 近年、JavaによるWebアプリケーション開発が広まるにつれ、JSPによるUI(ユーザーインタフェース)実装、テスト、メンテナンス効率の低さが浮き彫りになってきた。JSFはこの問題に焦点を当て、UI開発のEoDを目標として開発されたフレームワークである。

 「UIコンポーネント」という概念を導入し、「ボタン」「テキストボックス」「表」「ツリー」など、画面を構成する要素を部品として拡張、再利用可能なアーキテクチャを採用しているのだ。UIコンポーネント単位で入力値を保持し、入力値検査を行い、イベントをハンドリング、そして描画を行うというスタイルだ。JSF仕様標準で決められているUIコンポーネントのほかに、UIコンポーネントの自作も可能だ。

 また、始めからIDE(統合開発環境)のような開発ツールでの使用が想定されていることもJSFの大きな特徴だ。SwingにおけるJavaBeansのように、JSF UIコンポーネント共通のAPIを提供しているため、IDE上でのドラッグ&ドロップによるUI開発を可能としている。

 また、近年のサーバサイドシステムに関わるクライアント側は、単純なHTMLにとどまらず、ケータイ端末用の独自マークアップ言語やリッチクライアントなど、実装言語や技術が多様化している。JSFのUIコンポーネントはそのようなニーズにも対応するため、HTML以外のクライアントにも対応できるようなアーキテクチャとなっている。

 Java Server「Faces」というネーミングは、ソフトウェアの顔、見た目の構築(View)重視であるJSFの思想にぴったりなものだ。

EoD(Ease of Development) 開発の簡易化

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ