BT

ZK Web Framework 6.0リリース

| 作者: Kostis Kapelonis フォローする 0 人のフォロワー , 翻訳者 徳武 聡 フォローする 1 人のフォロワー 投稿日 2012年4月5日. 推定読書時間: 4 分 |

原文(投稿日:2012/03/30)へのリンク

ZKを提供するPotixは、JavaベースのAjaxアプリケーションフレームワークZKのバージョン6.0を発表した。ZKはオープンソースのJavaフレームワークであり、開発者はJavaScriptを書かずにリッチインターネットアプリケーションを作成できる。公式サイトにはデモとは別に、実際にZKを使っているアプリケーションが紹介されている。

ZKはGoogle Web Toolkitと似た方法で、JavaScriptとHTMLを抽象化して、サーバサイドのビジネスロジックだけに注力できるようにする。ZKはこれをサーバサイドのイベントエンジンを実装し、クライアント側のJavaScriptエンジン(つまりブラウザ)を利用することで実現する。サーバサイドのデータとクライアントの同期は完全に自動化されている。プログラマはSwingのようなディクストップ用のフレームワークのイベントモデルを使って完全なアプリケーションを構築できる。

新しいバージョンの変更点は、

  • 新しい"ZKバインド"システム。MVVMパターンに従う
  • jQuery/CSS 3スタイルのセレクタ。サーバサイドで動く
  • jQueryが1.4.xから1.6.xへバージョンアップ(性能の改善)
  • テンプレートの改善
  • Servlet 3 Asynchronous Processing向けのZK Cometのサポート
  • 新しいコンポーネント(古いコンポーネントの非推奨化)
  • Java 5へのアップグレード
  • 新しいデフォルトのテーマの選択

最も重要な変更は新しいデータバインディングシステムだ。ZKはModel View ViewModelパターン(MVVM)に従う。このパターンではViewModelレイヤが値をモデルからビューへ変換し、ユーザが値を変更したら、ビューからモデルへ値を返す。ユーザインターフェイスはマークアップ言語で宣言され、モデルとは完全に分離している。ZKで使われるマークアップはZK User Interface Markup Language (ZUML)と呼ばれている。一方、実際のビジネスロジックはJavaで書かれる。非プログラマがUMLを書き、UIとJavaコードを同時に開発することで生産性を上げる、というのがZKの基本原則だ。このMVVMパターンはZKの専売特許ではない。MozillaのXULやMicrosoftのXAMLもこのパターンを使う。ZKはZK Richletsを利用してJavaコードでGUIを作成することもできる。

"ZKバインド"はEL 2.2の表記を利用できる。従って、ZUMLのコンポーネントとサーバサイドJava Objectsとの間のデータの転送を構成できる。CDISeamSpring Beansとバインドする機能もサポートされている。Java 5へアップグレードしたことで、サーバサイドのコードはジェネリックやタイプセーフを利用できる。すぐにはアップグレードしたくない開発者向けにZK 5の古いバインディングシステムもサポートされている。

jQueryスタイルのセレクタサーバサイドのJavaコードに導入されるのも新しい特徴だ。これによって、開発者はサーバサイドのコンポーネントに簡単にアクセスできる。下記はZKのドキュメントに記載されている例だ。

Window win;
 
// returns all components with id "myId" under the Window win. (including itself)
Selectors.find(win, "#myId");
 
// returns all components whose .getLabel() value is "zk" (if applicable)
Selectors.find(page, "[label='zk']");
 
// you can assemble the criteria:
// returns all labels, whose parent is a window of id "win", and whose value is "zk"
Selectors.find(page, "window#win > label[value='zk']");

また、ZK 6.0は非同期リクエストをサポートするServlet 3.0 Specificationを利用する。これによって、コネクション毎にスレッドを立てる実装ではなく、リクエスト毎にスレッドを立てる実装が可能になる。この実装を利用することでスレッドが頻繁にリサイクルされるので、性能が向上するはずだ。

ZK 6.0はライセンス毎にエディションがあり、それぞれダウンロードできる。更なる情報はリファレンスJavadocsで確認できる。ソースコードはGitHubにある。アップグレードガイドも利用できる。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT