ZKの中核はAjaxベースのイベント駆動機構であり、123以上のXULと83のXHTMLベースのコンポーネントから成り、ユーザインタフェースを設計するためのマークアップ言語を備えている。高機能なXUL/XHTMLコンポーネントを使ってWebページを設計でき、エンドユーザーの活動を契機とするイベントによってそれらを操作できる。デスクトップのGUIアプリケーションのプログラミングモデルとよく似ている。
ZKの方式はサーバ中心型の手法と呼ばれ、コンポーネント間の同期やクライアント/サーバ間のイベントパイプラインはエンジン部が自動的に行い、Ajaxの組み立て用コードはアプリケーション開発者に対して完全に透過的である。したがって、エンドユーザーから見ればデスクトップアプリケーションのような操作性を提供し、一方で開発者にはデスクトップアプリケーションと同様の単純さを保持している。
Swingのようなコンポーネントベースのプログラミング作法に加え、ZKはリッチなユーザインタフェース定義のためのマークアップ言語ZUMLをサポートしている。
特徴
- Javaへのスクリプト埋め込みをサポート。これにより、ユーザインタフェースとバックエンドのプログラミングを統一的に同じ言語で開発できる。 オプションでその他のサーバサイドJavaスクリプトとしてJavaScript (Rhino)、Ruby (JRuby)、Python (Jython)、Groovyも使える。
- 高度なAjaxサポート。ユーザーのブラウザへの入力はAjax経由でサーバ側のデスクトップモデルに渡される。
- イベント駆動コンポーネントベースモデル(デスクトッププログラミングモデルと類似)
- いくつかのパターンでユーザインタフェースを生成できる。MVCプログラミングを採用した場合は、全てのイベントは中心となるコントローラクラス にフォワードされる。それとは別に zscript を使ってページ内にイベントハンドラを定義できる。前者はSwingに近く、後者はDHTMLに近い。
- JSPカスタムタグライブラリ、JSFサポート、サーブレットフィルタにより、既存のWebプレームワークとの連携が可能。SpringやHibernateをサポート。
- 新たにUIコンポーネントを作成して拡張することができる。コントロールのグループをマクロコンポーネントとして再利用できる。
- ページ内アノテーションによるデータバインディング機能。画面上のコントロールとサーバ上のPOJOのフィールドを透過的にバインドできる。
必要なプログラミングスキル
- JavaまたはJavaスクリプティングエンジン言語(Groovy、Rhino、JRuby、Jython)に関する基本的知識が必要。(必須)
- HTMLとXULに関する基本的知識が必要。(必須)
- サーバ上で動作するグルーロジックを書くには、スクリプト言語(現在サポートしているのはBeanShell、JavaScript、Groovy、Ruby、Python)の知識を要する。
- オブジェクト指向プログラミングの知識があれば、AWT/Swingスタイルのプログラミング、JavaでカスタムUIコントローラクラスを書くことなどができる。もちろん、そういった知識がなくとも zscript を使ってDHTML風のUIロジックが書ける。
- Servletプログラミング。ZKは Servlet API 上に構築されている。ZUMLをページ言語として使って、正統的なServletプログラミングを選択することもできる。
- Ajax。ZKはAjaxも基盤としているが、それによってユーザーの入力はブラウザ上でJavaのイベントに自動的に変換されるので、基本的にはブラウザで何をしているかを知らなくてもサーバ上のプログラムは書ける。
- クライアント側のJavaScript。コンポーネントのクライアント側アクションをDHTMLロジックで実行することもできるが、ほとんどの場合不要である。
- 宣言的データバインディング。ZKにはオプションでUIコントロールをPOJO Java Beansにバインドできる機能がある。その場合ZKはプログラマが作ったPOJOのsetter/getterメソッドを自動的に呼び出すので、ブラウ ザでのユーザー入力に対応したプログラミングが不要になる。
- EL言語。ZKはJSTLスタイルのELをサポートしている。
0 件のコメント:
コメントを投稿