ZK (フレームワーク)
(単なるHTMLに比べて)リッチなユーザインタフェースを高い抽象レベルで宣言的に記述できる。例えばXULウィジェットセットには、ツリー、コンボボックス、バンドボックス、スライダーなどがある。
Javaへのスクリプト埋め込みをサポート。これにより、ユーザインタフェースとバックエンドのプログラミングを統一的に同じ言語で開発できる。オプションでその他のサーバサイドJavaスクリプトとしてJavaScript (Rhino)、Ruby (JRuby)、Python (Jython)、Groovyも使える。
高度なAjaxサポート。ユーザーのブラウザへの入力はAjax経由でサーバ側のデスクトップモデルに渡される。
イベント駆動コンポーネントベースモデル(デスクトッププログラミングモデルと類似)
いくつかのパターンでユーザインタフェースを生成できる。MVCプログラミングを採用した場合は、全てのイベントは中心となるコントローラクラスにフォワードされる。それとは別に zscript を使ってページ内にイベントハンドラを定義できる。前者はSwingに近く、後者はDHTMLに近い。
JSPカスタムタグライブラリ、JSFサポート、サーブレットフィルタにより、既存のWebプレームワークとの連携が可能。SpringやHibernateをサポート。
新たにUIコンポーネントを作成して拡張することができる。コントロールのグループをマクロコンポーネントとして再利用できる。
ページ内アノテーションによるデータバインディング機能。画面上のコントロールとサーバ上のPOJOのフィールドを透過的にバインドできる。
ZKはサーバサイドでHTMLを生成するフレームワークであり、クライアント側にGeckoが存在する必要がないため、任意のブラウザで機能する。ZKはZUMLで書かれたサーバサイドのページを入力とし、ブラウザにはDHTMLを出力する。
ZKはユーザインタフェースのロジックをサーバ上のJava環境で実行する。このため、ロジック生成に様々なスクリプティングエンジンやアプリケーションライブラリを使える。プレゼンテーションはDHTMLによりクライアント側で実行され、サーバ側負荷を軽減している。アプリケーションを単一のアプリケーションコンテナで実行することで、DOMを多用してブラウザで実行させるよりもブラウザ間の互換性確認の手間が少なくて済む。
ZKとXULはコンポーネントが一部オーバーラップしているが、ZKには固有のコンポーネントもある。コンポーネントライブラリは拡張可能である。コンポーネントを組み合わせたマクロコンポーネントを定義できる。
UIコンポーネントとサーバサイドのデータを宣言的にバインドすることで、サーバサイドのデータバインドを提供する。
ルック・アンド・フィールが異なる。