ZK (フレームワーク)

ZKとは



ZKは、Javaで開発されたオープンソースのAjax Webアプリケーションフレームワークです。このフレームワークの特徴は、JavaScriptの専門知識がなくても、リッチなWebアプリケーションのGUIを構築できる点にあります。ZKの中核をなすのは、Ajaxベースのイベント駆動メカニズムです。120以上のXULコンポーネントと80以上のXHTMLコンポーネント、そしてユーザーインターフェース設計のためのマークアップ言語を備えています。

ZKの仕組み



ZKは、高機能なXUL/XHTMLコンポーネントを使用してWebページを設計し、エンドユーザーの操作によって発生するイベントに基づいてこれらのコンポーネントを操作します。このモデルは、デスクトップアプリケーションのGUIプログラミングに非常によく似ています。ZKは「サーバ中心型」のアプローチを採用しており、コンポーネント間の同期やクライアントとサーバ間のイベントパイプラインはエンジン部が自動的に処理します。これにより、Ajax関連のコードはアプリケーション開発者には完全に透過的です。エンドユーザーにはデスクトップアプリケーションのようなスムーズな操作性を提供し、開発者にはデスクトップアプリケーション開発と同様のシンプルさを維持します。

主な特徴



宣言的なUI記述: HTMLよりも高度な抽象レベルでリッチなUIを宣言的に記述できます。例えば、XULウィジェットセットには、ツリー、コンボボックス、バンドボックス、スライダーなどが含まれます。
Javaスクリプト統合: Javaへのスクリプト埋め込みをサポートしており、UIとバックエンドのプログラミングを同じ言語で統合できます。また、JavaScript(Rhino)、RubyJRuby)、PythonJython)、Groovyなどの他のサーバサイドJavaスクリプトもオプションで利用可能です。
高度なAjaxサポート: ユーザーのブラウザからの入力はAjaxを通じてサーバ側のデスクトップモデルに送られます。このプロセスは透過的に処理されます。
イベント駆動型コンポーネントモデル: デスクトッププログラミングモデルと類似した、イベント駆動型のコンポーネントベースのモデルを採用しています。
多様なUI生成パターン: MVCプログラミングを採用した場合、すべてのイベントは中央のコントローラクラスに転送されます。また、zscriptを使用してページ内にイベントハンドラを定義することも可能です。前者はSwingに、後者はDHTMLに近いアプローチです。
既存Webフレームワークとの連携: JSPカスタムタグライブラリ、JSFサポート、サーブレットフィルタにより、既存のWebフレームワークとの統合が可能です。SpringやHibernateもサポートしています。
UIコンポーネントの拡張性: 新しいUIコンポーネントを作成して拡張したり、コントロールのグループをマクロコンポーネントとして再利用したりできます。
データバインディング: ページ内アノテーションによるデータバインディング機能を備えており、画面上のコントロールとサーバ上のPOJO(Plain Old Java Object)のフィールドを透過的にバインドできます。

XULとの違い



ZKはサーバサイドでHTMLを生成するフレームワークであり、クライアント側にGeckoを必要としません。そのため、任意のブラウザで機能します。ZKはZUML(ZK User Interface Markup Language)で記述されたサーバサイドのページを入力とし、ブラウザにはDHTMLを出力します。ZKでは、UIロジックはサーバ上のJava環境で実行されるため、多様なスクリプトエンジンやアプリケーションライブラリを利用できます。プレゼンテーションはDHTMLによってクライアント側で実行され、サーバ側の負荷を軽減します。

ZKとXULはコンポーネントの一部が重複していますが、ZKには独自のコンポーネントもあります。コンポーネントライブラリは拡張可能で、コンポーネントを組み合わせたマクロコンポーネントを定義できます。UIコンポーネントとサーバサイドのデータを宣言的にバインドすることで、サーバサイドのデータバインディングを提供します。また、ルックアンドフィールも異なります。

システム要件



JRE version 5以降
Servlet 2.3以降をサポートするWebサーバ

必要なプログラミングスキル



必須:
JavaまたはJavaスクリプトエンジン言語(Groovy、RhinoJRubyJython)の基本的な知識
HTMLとXULの基本的な知識

任意:
サーバ上で動作するグルーロジックを書くためのスクリプト言語の知識(BeanShellJavaScript、Groovy、RubyPythonなど)
オブジェクト指向プログラミングの知識(AWT/Swingスタイルのプログラミング、JavaでのカスタムUIコントローラクラスの作成に役立つ)
Servletプログラミング
Ajaxの知識(ZKはAjaxを基盤としているが、ユーザー入力は自動的にJavaのイベントに変換されるため、基本的にはブラウザでの動作を意識する必要はない)
クライアント側のJavaScript(コンポーネントのクライアント側アクションをDHTMLロジックで実行することも可能だが、多くの場合不要)
宣言的データバインディング(UIコントロールをPOJO Java Beansにバインド可能)
EL言語(JSTLスタイルのELをサポート)

ZUML



ZUML(ZK User Interface Markup Language)は、リッチなUI定義のためのマークアップ言語です。プログラマでない開発者でも直感的にUIを設計できるように意図されています。ZUMLは、他のマークアップ言語(Mozilla XUL、XHTMLなど)と同じページ内でシームレスに混合して記述できます。また、Java言語にスクリプトを埋め込んだり、EL式を使用してコンポーネントやアクセスデータを操作したりできます。

バージョンアップによる仕様強化



バージョン5.0: jQuery(JavaScriptライブラリ)の積極的な利用を推奨し、サーバ中心型だけでなく、サーバ/クライアント融合型の開発手法も可能になりました。
バージョン6.0: データバインディングシステム「ZK Databinding2」が導入され、MVVM(Model-View-ViewModel)デザインパターンがサポートされました。また、ジェネリックスを使用した型安全なコードの記述や、サーブレット3でのComet非同期通信のサポート、ZULページ内でのテンプレート作成機能などが追加されました。
バージョン6.5.0: デスクトップとタブレットのUIおよびタッチエクスペリエンスを、単一のコードベースとコンポーネントセットで融合し、デバイスの透過性を実現しました。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。