楽天のアーキテクトが説く、J2EEからJava EEへの移行を“今すぐ"始めるべき理由

Oracle Java & Developers編集部
2014-07-28 11:00:00
  • このエントリーをはてなブックマークに追加

JSF 2はStrutsに対して何がどう優れているのか?

 それでは、新世代のJava EEへの移行は、具体的にどう進めればよいのだろうか。岩崎氏は一例として、Webプレゼンテーション層の技術を「Struts 1」から「JSF 2.2」に移行する際のポイントを説明した。

 ご存じのとおり、JSFはJava EEの標準Webアプリケーション・フレームワークである。Java EE 5で初めて導入されたが、Java EE 6に採用されたJSF 2で「素晴らしく使いやすいフレームワークに生まれ変わった」(岩崎氏)という。

 JSF 2では「Facelet」と呼ばれる新しいHTMLレンダラが用意されたほか、バッキングBean(Managed Bean)でCDI(Contexts Dependency Injection)が使えるようになるなど、JavaでWebアプリケーションを開発する際に便利な仕組みが取り入れられている。加えて、Java EE 7のJSF 2.2からは、Webアプリケーションの脆弱性を攻撃する手法の1つであるクロスサイト・リクエスト・フォージェリ(XSRF)を回避するための仕組みを組み込めるようになるなど、セキュリティ面での改善も図られた。

 JSF 2による画面開発は、従来と比べて大幅にわかりやすいものになっている。通常のHTMLフォーム内に「jsf」という接頭辞を付けたタグ(JSFタグ)を書き、その中に呼び出したいバッキングBeanの変数やメソッド名を指定するだけでよい。

 また、画面遷移時には、遷移先のページに一度だけ各変数の値を引き継がせるFlashオブジェクトを使うことができる。これはPHPで使われている便利な仕組みだが、JSF 2でも利用可能なのだ。こうしたJSF 2の機能は、開発環境にNetBeansを利用すると「圧倒的に簡単に使える」(岩崎氏)のだという。

JSF 2への移行で重要なのは「パラダイムの変化」を理解すること

 StrutsをJSF 2への移行で重要なポイントは、「アクション・ベース」から「画面ベース」へと開発パラダイムが大きく変わっている点だ。

 「Strutsでは、フォームのボタンがクリックされたとき、そのボタンに割り当てられた処理と、次の画面に遷移するための処理の2つが実行されます。これがJSF 2では、Flashオブジェクトを使い、次の画面へと値を受け渡しながら処理を行う方式に変わっています。したがって、StrutsをJSF 2に置き換える際には、『ボタンがクリックされたときの処理』と、『次の画面に移るための処理』を切り分けて作り直すとわかりやすいはずです」(岩崎氏)

 1つの画面に2つのボタンが存在するケースにも簡単に対応できる。JSF 2ではバッキングBeanの中に、各ボタンに対応した複数のメソッドを持つことができる。よって、各ボタンの処理をそれぞれのメソッドに振り分けたうえで画面を遷移させればよい。

 以上のようなポイントを念頭に置きつつ、JSF 2への置き換えを進めていくことが最初の足掛かりになるという。

 なお、Java EE 7について学ぶためのお勧めの情報源として、岩崎氏は次の3冊の洋書を挙げる。

 Java EE 7に関しては、まだ日本語による情報が少ないため、直接これらの洋書をあたるのが確実な方法なのだという。このほかに、国内の開発者が作成した技術資料がSlideShareなどで共有されている。岩崎氏自身もJava EE 7とJSF 2.2に関する資料を公開しているが、これらの資料を手掛かりに理解を深めていくのもよいだろう。最後に岩崎氏は、改めて次のように新世代Java EEへの移行を呼びかけて講演を締めくくった。

 「StrutsからJSF 2への移行では、書き換えるコードの量が多いのですが、作業の内容自体は非常にシンプルです。JSFをはじめとする今日のJava EEは、かつてのJ2EEとはまったく異なる前提に立った新しい技術に生まれ変わっています。その習得や活用を助けてくれるNetBeansやGlassFishなどのツールも、今すぐ無償で手に入ります。手間を惜しまずに最新のJava EEをキャッチアップし、早く新世代のJava EEに移行し、次の時代に備えましょう」