TOP比較データ> 最近のアーキテクチャ
徹底比較!!Javaアーキテクト
徹底比較!!Javaアーキテクト

第1回:Webアプリケーションフレームワークの比較
著者:シンクイット  山口 忠   2005/10/12
前のページ  1  2   3  4  次のページ
最近のアーキテクチャ

   そういった問題点を解決するために、最近では図2のようなアーキテクチャが利用されるようになってきました。
最近のアーキテクチャ
図2:最近のアーキテクチャ

   大きく変わったところはDI(Dependency Injection)とAOP(Aspect Oriented Programming)コンテナを用いるようになったところです。

   DIはビジネスロジックからオブジェクト間の依存性を排除します。設定ファイル、アノテーションなどを用いて、DIコンテナから依存性を注入し、Javaオブジェクトを結合することで、POJO(Plan Old Java Object)での開発を実現します。

   AOPはトランザクション、セキュリティ、トレース出力などの本来オブジェクトが実装するべきビジネスロジック以外の前処理や後処理、またはその呼び出しをAOPコンテナから注入し、POJOを実現します。POJOで実装することにより、コンテナにデプロイする必要がなく、JUnitなどを用いたテストが可能となり、単体テストが容易になります。

   DIxAOPコンテナで代表的なものは「Spring」「Seasar2」「PicoContainer」などがあげられます。

   また、DBアクセスについてもO/Rマッピングツールを利用することで、Entity BeanのようにDBのデータをオブジェクトとして扱うことができ、またコンテナに依存しないため、単体テストも容易になります。


今回の内容

   第1回目の連載ではプレゼンテーション層のWebアプリケーションフレームワークである「Struts」「Tapestry」「Velocity」について紹介します。また今回紹介するWebアプリケーションフレームワークの比較をしますので、今後の参考にしてもらえればと思います。


Struts

   StrutsはWebアプリケーションを開発するためのオープンソースのフレームワークの1つで、Apache Software Foundationで開発されています。StrutsはJavaBeans、JSP、Servletを用いた、MVCモデル2と呼ばれる「モデル・ビュー・コントローラ(MVC)アーキテクチャ」を採用しています。

Strutsの概念図
図3:Strutsの概念図
(画像をクリックすると別ウィンドウに拡大図を表示します)

   Strutsでは、主にMVCモデルのコントローラの機能を提供しており、開発者はモデルとビューを開発する必要があります。これらはStrutsの設定ファイル(struts-config.xml)によって関連づけします。ビューには主にJSPを使用しますが、後述するVelocityなどを使用することもできます。

   またJSPを使用する場合は、提供されているStrutsのタグライブラリが利用できます。Strutsのタグライブラリを利用することによって、肥大化しやすいJSPに記述するスクリプトレットを大幅に軽減できます。

   システム開発にStrutsの適用する場合、表1のメリットがあげられます。

  • ドキュメントや、情報が豊富であるため、運用保守が容易
  • フレームワークがシンプルなMVCであるため内部構造が理解しやすく、Strutsを知らない人でもMVCを理解していればすぐに習得できるため、要員を教育しやすい
  • ビューの部分にはJSPだけではなく、ほかのフレームワークを採用することも可能
  • 認知度が高いため、顧客提案しやすい

表1:Strutsのメリット

   Strutsの基本的な使い方については「徹底比較!! PHP & Java 〜 フレームワーク編」の連載の中でも紹介していますので、そちらも参考にしてください。

   また最新バージョンは1.2.7(2005年9月現在)です。

前のページ  1  2   3  4  次のページ


株式会社シンクイット 山口 忠
著者プロフィール
株式会社シンクイット  山口 忠
前職は大手SI企業にて、SEとして各種言語を使ったシステム開発を経験する。常に進化し続けるオープンソースソフトウェアの魅力にとりつかれて現職に至る。現在は某プロジェクトにてEJB、Webサービスを使ったシステムのフレームワークを開発しながら、Javaのプロフェッショナルになるべく、日々精進している。


INDEX
第1回:Webアプリケーションフレームワークの比較
  はじめに
最近のアーキテクチャ
  Tapestry
  Velocity