JSFでお手軽Webアプリ開発 その1
JSFを使うとこんなに簡単にWebアプリを開発できる、ということを書いていきたいと思います。
まず、IDEとしてNetBeansを使います。AWTやSwing等の開発にNetBeans以外ありえないのと同じように、JSFやEJBでの高速開発には欠かせません。
おいらは面倒くさがりなので、できるだけコードを書かない(ロジックのみに専念したい)ことやXML定義ファイルを触りたくないという人種なのでこういう選択になります。
フレームワークとして通常のJSFではなく、Visual Web JSFを使います。ViewのコンポーネントとJavaのコードの一致を行ううえで欠かせません。
今回はVisual Web JSFの特徴をあげていきたいと思います。
ViewはJSPドキュメントである
viewはjspという拡張子がついていますが、jspドキュメント形式(xmlによるjspの再現)です。開いてみるとわかりますが、見事にxmlです。これはツールが扱いやすい形式を選んだということでhtmlをベースとした旧来のjspは使えません。つまり、jspソースはまず見ないということです。
Viewはぽとぺたで作れる
AWTやSwingのアプリを作る際に、いまどきコードでコンポーネントを配置するコードは書かないことでしょう。それと同様にVisual Web JSFもコンポーネントの配置のコードは書きません。対となるJavaのコードもバインディングは自動です。
ViewファイルとJavaのページクラスが1:1
ページの新規作成をすると必ずjspファイルとJavaファイルがついで作られます。ファイル名も同じになります。拡張子が違うだけです。これによって画面とコードの対応がわかりやすくなります。
このついになったクラスをページビーンとVisual Web JSFでは言っています。
ページビーンはAbstractPageBeanというクラスを必ず継承しています。
Teedaのページとテンプレートに対になった構造はおそらくこれを参考にしたのではないかと思われます。もっとも.NETやさらに昔にはBorland C++ BuilderやDelphiというものがフォームファイルとソースファイルで1:1とかありますが。
[追記]
ひがさんによると.NETだそうです。
歴史はJSFのツールで最古
JSFの発表のときのプロジェクトRaveというのがこのツールの原点です。5年ほど前になります。発表自体は早かったのですが、製品はなかなか登場しませんでした。
その有償製品が Sun Java Studio Creatorとして2004年初夏に世に出ました。NetBeansプラットフォーム3.6がベースです。付属するアプリケーションサーバーが当時のマシンでは重かったことや、VMの速度等も今ほど早くなくてかなりヘビーでした。
また、ライバルはAccessということでRowSetのようなDBを前提としたつくりでした。Javaのコードを使ってロジックを書くことはNetBeansほど得意ではありません。細かいロジック等はSun Jva Studio Enterprise等で作った Webサービスを呼び出すのが普通だったと思います。一見難易度は低いように見えて実はかなり敷居の高い開発環境でした。
その後無償になったCreator2が登場します。2006年初頭です。ベースとなったNetBeansプラットフォームも以前の3.6から4.1となり大幅に快適になり、TomcatやWebLogic、WebSphereなども対応しました。EJB2の呼び出しにも対応しました。NetBeans4.1ではEJB2作成機能が取り込まれたのでオープンソースプロダクトだけで完結できるようになりました。が、あいかわらず2つのIDEを行き来するのは大変でした。
しかもリリースした時期が悪い。NetBeansは5.0がリリースされた時期でした。4.xベースでは古いと思われてしまうのは当たり前でした。このころから標準コンポーネント以外にwoodstockコンポーネントが登場します。Ajax等を利用したり高機能なコンポーネントが用意されることになります。基本的にはこのCreator2が今後のバージョンのすべてのベースとなります。この時期もRowSetを基本とした開発が前提になっているようで、付属するPointBase以外は扱いにくいものでした。その後RowSetのRIがでますが、お世辞にも安定してるとはいいがたいものでした。
不遇のCreatorでしたが、転機が訪れます。2006年末のNetBeans5.5の登場です。プラグインとしてCreator2の機能が取り込まれることになりました。NetBeansのその時点での最新バージョン(5.5.1にもすばやく対応)に対応できることで開発がまともにできるようになったのはこのバージョンからといってもいいでしょう。名称はVisual Web Packとなり、Creatorという名前は消えました。欠点はVisualWebプロジェクトと通常のWebプロジェクトが違うことでした。
5.5というバージョンはほかにもEJB3対応やJPA対応、JavaSE6対応など目玉だらけでした。Visual Web Pack以外にもMobility Pack、Profiler Pack、C/C++ Pack、Enterprise Packなどプラグインによる拡張も目玉としていました。
NetBeans6.0ではVisual Web PackはVisual Web JSFとなり、標準コンポーネントになりました。他のpackシリーズも同様です。インストール時に選ぶか、インストール後のプラグインのダウンロードですぐに使うことができるようになりました。
Visual Webは通常のWebプロジェクトとやっと統合されました。あくまでも選択フレームワークという位置づけです。同様にStrutsも選択するだけで併用が可能です。6.1ではSpringMVCもこのフレームワークに選択肢として現れました。
NetBeans6.1ではデフォルトでコンポーネントバインディングを行わなくなりました。そのかわり、ビジュアルデザイナ上の右クリックで生成や破棄がすぐに行えます。必要なコンポーネントのみコンポーネントバインディングをするという動きです。おかげでフットプリントは軽くなり、動作も速くなることになりました。
欠点は?
欠点はオールインワンであるがゆえにそれから外れた場合は面倒になるということです。
とはいえ、NetBeaans6.0からは通常のWebプロジェクトに統合されたので、他のフレームワークと併用することも可能です。このメンテナンス系の提携画面はVisualWebJSFだが、こっちの画面はプレーンなJSFやStruts、SpringMVCという選択もできるわけで、どうにでもなります。
Visual Web JSFは広い範囲をターゲットにしたフレームワークではありません。そのかわり、特定用途(社内用業務アプリなど)に対しては圧倒的な開発効率を誇ります。どのフレームワークにしてもライブラリにしてもそうですが、ターゲットを絞った製品ほどとんがることができます。Visual Web JSFはWebフレームワークとしてはその傾向は強いと思います。