Wicket2は凄そうだ
2007年1月14日時点での,Wicket1.2からWicket2.0への変更点について,以下のURLのページで発表されている。
Migrate-2.0 – Wicket wiki
要約すると,以下のような感じである。英語は苦手なので間違っている箇所があると思うが,構わずに掲載してしまおう。
- JavaSE5以上が必須になる。
- onAttach()の親実装を先に,onDetach()の親実装を最後に呼び出すように推奨される。
- Generics/パラメータ化された型への対応
コンポーネントが扱うモデルの型をGenericsにより規定することができるようになる。これにより,ドメイン依存のモデルをコンポーネントが強制できるようになり,より強固にアプリケーションを開発することができるようになる。 - コンポーネントのコンストラクタの変更
コンポーネントをインスタンス化する際に,親となるコンポーネントをコンストラクタの引数に指定することが強制される(Component#add()は廃止される!)。これにより,コンストラクション時に全てのコンポーネントの階層が確定されるようになり,リッチなコンポーネントにとって便利になるだけでなく,タグの属性をダイレクトに編集ことができるようになり,更にコンポーネントの階層がマークアップファイルに一致しなかった場合に,その検出をより早く行うことができるようになる。 - コンポーネントの入れ替え方式の変更
コンポーネントのコンストラクタの変更により,コンポーネントを入れ替えるための処理が変更となる。Component#replace()は廃止となる。その代わりに,代替メソッドであるreAttach()を使用するか,同一のIDを持つ入れ替えたいコンポーネントを対象の親コンポーネントを指定してインスタンス化することで実現する。 - JavaSE5の列挙型の使用
従来EnumeratedTypeクラスで実現していた列挙型を,JavaSE5のenumを使用するように変更された。これにより,import文による記述の省略化を行うことができるようになる。 - JavaSE5の戻り値型の柔軟化によるfinalの廃止
メソッドのオーバーライド時の戻り値の型に対する柔軟化(元の型のサブクラスであれば許可される)を使用するために,Component#getSession()やComponent#getApplication()などでfinalが削除された。これにより,ドメインに特化した型のインスタンスを返すgetSession()を作成することができるようになる。 - サーブレットの代わりにフィルタが推奨される
WicketServletは使用されなくなり,代わりにWicketFilterサーブレットフィルタの使用が推奨される。これにより,リソースを返すことや,ルートコンテキストにアプリケーションをマッピングすることが簡単になる。 - @SpringBeanの属性変更
name属性は非推奨になり,代わりにidを使用する。 - バリデーションの変更
FormComponentクラスからバリデーションの処理が分離され,新たにwicket.validationパッケージによるAPIと,wicket.validatorパッケージによる実装にバリデーションが委譲されるようになる。 - XMLリソースバンドルの対応
JavaSE5から提供されるXMLフォーマットでのリソースバンドルが使用可能となる。これにより,直接アスキーではないコードでメッセージリソースを記述することができるようになる。 - ISessionStoreクラスの変更
- その他いくつかのAPI変更
しかし,これらのどれよりも大きな進歩がある。
Java EE annotations support in Wicket – TRAVELLING, AND NOT ARRIVING
@Resource,@EJBそして@PersistenceUnitといったJavaEEのアノテーションをWebPageクラス内で使用可能になる。すでにGlassfish上で動作実績があるため,Wicket 2.0では確実に搭載されるだろう。
これは,wicket-javaeeモジュールとして作者(Filippo Diotalevi氏)により提供され,JIRAに登録されている。
WICKET-174 Java EE 5 support for Wicket – Wicket JIRA
さらに,これらの使い方を,Google Codeで見ることができる。
WicketJavaEEIntegration – Google Code
昨年の2006年8月24日付けで,WicketはApache incubatorに登録されており,Wicket 2.0の開発とApacheへの正式参加に対する作業が日々進んでいる。かなり大きな変化の結果,Wicket 2.0は,JavaEE分野でのPOHPソリューションの代名詞となるだろう。そして,Wicketを採用した事例が日本国内でも増えていって欲しいと願っている。
WicketのSVNから最新コードを取得し,さらに上記のWICKET-174からモジュールを得て組み合わせれば,JavaEEアノテーションを試すことが可能である。
Wicketの今後は,目を離すことができない。


