Javaベースのウェブ・アプリケーション開発は、アクション・ベースとコンポーネント・ベースの2種類に分かれます。この2つの種類の違いを一言で言うと、アクション・ベースのアプリケーションはJava
Server Pages (JSP)を使用し、コンポーネント・ベースのアプリケーションはJava Server Faces (JSF)を使用するということです。アクション・ベースはHTMLのフォーム・タグのアクション属性を使用してフォームのサブミット処理を行なうサーバー・プロセスを規定します。
Log4jでなければApacheのJakarta Common Loggingを使用する手もあります。Jakarta Common Loggingはご自分が選択したログ機能へのプラグ・インとして使用することができます。ただし、Jakarta
Common Logging のAPIはLog4jの部分集合なので、Log4jの有用なログ機能のいくつかをあきらめなければなりません。
テスト機能
テストについては「JUnit Test Infected: Programmers Love Writing Tests」という本(junit.sourceforge.net/doc/testinfected/testing.htm)でも指摘されている通り、プログラマの生き様でもあります。テストにはまってしまったプログラマの信条は「まずテストしてからコードを書く」というものです。アプリケーション開発の最初から単体テスト機能を使用し始めなければなりません。テスト用のフレームワークとして代表的なものとしてJUnit、DbUnit、jMock、HttpUnitがあります。私はJUnitで単体テストを作成することがすべてのJavaアプリケーション開発における標準になるべきだと思います。WDScではJUnitのウィザードが提供されていて、単体テストの作成と実行が容易になっています。
アプリケーションでPDFを生成させる必要がある場合は、JasperReports (sourceforge.net/projects/jasperreports)とBIRT
(eclipse.org/birt)という2つのフレームワークを検討してみてください。JasperReportsはリリースされてから数年が経過しており、良い評価を受けているフレームワークです。しかし、時間をかけてJasperReportsを勉強しようなどと思わないでください。PDFの生成はBIRT
(Business Intelligence and Reporting Toolsの略語)なら簡単だからです。BIRTはJasperReportsを使用していますので、JasperReportsを除け者にしようとしているわけではありませが、BIRTはEclipseベースのGUIを提供しています。ある日BIRTをダウンロードしてインストールし、設定してPDFを大量に生成してみました。実運用しているBIRTのレポート・ツール自体がウェブ・アプリケーション中で実行されるので、報告書を書く必要が生じるまではBIRTの実行を止めておいた方が良いでしょう。
正しいオプションを選択する
アプリケーション・アーキテクチャの選択肢として3つのオプションをご紹介しました。(1) 最も人気のあるフレームワークを自分で調べる、(2)
IBMの企業戦略に従ってJ2EEにバンドルされているフレームワークを使用する、(3) Springを使用してSpringとうまく統合できるフレームワークだけを使用する。1つ目のオプションは職業を選択するのとほぼ同じです。私は記事やセミナーや営業活動などにかかる膨大な時間をそれに当てることができるのでなんとかなります。2番目のオプションは、トレーニングにたくさん時間をかけなければならず、WDSc
Advanced Edition (1人あたり4,000ドル)、WebSphere Application Server Base (1プロセッサあたり10,000ドル)、そしておそらくIBM
Global Servicesの支援も受けなければならないので、非常にコストがかかります。また、純粋なJ2EEを選択する場合はEJB 3.0を使用することを強くお勧めします。
3番目のオプションがもっとも現実的なソリューションでしょう。Springは大変人気があり、ドキュメント、チュートリアル、書籍、ウェブサイト、セミナーなども豊富です。無数にあるSpringのサンプル・アプリケーションの中からいくつかをダウンロードしてWDSc上にインストールし、実行してみて、そのアーキテクチャを評価してからプロトタイプを作成してみることをお勧めします。どのオプションを選択すべきかを決めるのに役に立つ情報源の一覧については後述の「Find
Out More」を参照してください。