Apache Wicketプロジェクトはコンポーネント指向のJavaのアプリケーションフレームワークのバージョン6.0.0をリリースした。最新バージョンが1.5だったので今回のバージョンは混乱を生むかもしれないが、実際はセマンティックバージョニングに移行しただけだ。1桁目は公開APIが変更されている大規模な変更であることを示し、2桁目が後方互換性のある機能追加を示す。最後の1桁が表すのはバグ修正だけだ。
ほとんどの変更点はリリースのアナウンスで一覧されている。更なる詳細は移行ガイドに書かれている。特筆すべきは以前のバージョンが開発に2年以上かかった一方で、今回のバージョンは1年もかからずにリリースされたことだ。これからはWicketはより頻繁にリリースされるかもしれない。
今回のリリースの重要な変更点は次の通り。
- jQueryのビルドインサポート
- HTMLのインライン属性の代替としてのJavaScriptのイベントバインディング登録
- Java 6以降が必須の動作要件
- JPAとの連携の強化
- 簡単にOSGIをサポートできるようにするためのパッケージの再構成
- Wicket Resources間の依存性の定義
- websocketsの実験的なサポートとTwitter Bootstrapとの統合
- AJAXコントロールやエラーメッセージ、フォーム検証などの改善
バージョン6.0以前のWicketはAJAXのサポートに独自のコード(wicket-ajax.jsとwicket-event.js)を利用していたが、ブラウザの互換性の観点から問題があった。開発チームは独自コードを、クロスブラウザサポートのしっかりとした実績があるjQueryに置き換えた。これによって、ブラウザに関連する問題を解決する必要がなくなり、ビジネスロジックの記述に注力できる。ただし、現在のWicketの公開APIの背後にある実装がjQueryになったということであり、他のJavaScriptのライブラリを使って再実装することもできることは念頭に置いておく必要がある。
JavaScript関連ではページの要素へのイベントの登録方法も改善された。以前のバージョンではJavaScriptのイベントはonclickとonsubmit属性に直接登録されていたが、この方法は理想的ではない。というのは他のイベントリスナがキャンセルできないからだ。今回のバージョンではすべてのコールバックをDOMイベントに登録できるようにすることで柔軟に構成ができるようになった。
Wicket 1.4には最低でもJava 5が必要だった。Wicket 1.5ではさらにservlet-apiの仕様のバージョン2.5を満たすサーブレットコンテナが必要だった。今回のバージョンはJava 6以降で動作する。これによって古い環境はJavaのアップデートが必要になるかもしれない。
永続化に使われるIDataProviderのイテレータや他のメソッドはintではなくlongの引数を取るようになった。これによって取得できる要素の上限が引き上がる。
OSGIコンテナ内でWicketを使いやすくするためいくつかのパッケージ名が変更されている。変更された名前はここにある通り。また、Wicket Resourceの他のリソースとの依存性の管理がサポートされた。以前のバージョンでは各リソースはそれぞれ依存性を管理しなければならなかったが、今回のバージョンからWicket自体が依存性を管理する。依存性は各リソースの関連を元に正しい順で解決される。そして、今回のバージョンはWebsocketsを試験的(つまりまだ安定していない)にサポートする。
詳しい情報はウィキやドキュメント、Javadocsで得られる。バグや問題はここで報告できる。