3. 基礎

目次

構造
実行の流れ
コンポーネント、ページ と デスクトップ
コンポーネント
ページ
ページのタイトル
デスクトップ
createComponents メソッド
コンポーネントの森
コンポーネント:視覚表現とJavaオブジェクト
識別子
UUID
IDスペース
ネーム空間とIDスペース
zscriptの中で定義された変数とファンクション
zscriptとEL表記
多領域(マルチ・スコープ)インタプリタ
単領域インタプリタ
一ページの中にある複数のスクリプト言語
getVariablegetZScriptVariable
イベント
デスクトップとイベント処理
デスクトップとコンポーネントの作成
ZUMLとXMLネーム空間

この章はZKの基礎を説明します。XULを使ってZKの特徴を表していますが、ZKで使用できる他のマークアップ言語も大抵、使うことができます。

構造

ZKはAJAX方式の構造を用いて対話を自動化し、XUL方式のコンポーネントのセットにより使い勝手を良くし、マークアップ言語を使用することより開発を簡単化しています。AJAX方式は下にかいてあるように三つの構造から成っています。ZKローダー、ZK AUエンジン、ZKクライアントエンジン

ユーザーリクエストを基にして、ZKローダーはZKページを読み込んで翻訳し、結果をURLで指定されたHTMLページに表示します。ZKページはZUMLと呼ばれるマークアップ言語で書かれています。ZUMLはHTMLに似ていて、視覚的にどのように表示するかと、どんなコンポーネントを作成するかが書かれています。これら一度作られたコンポーネントはセッションが時間切れになるまで、使うことができます。

ZKAU[16]エンジンとZKクライアントエンジンは投手と捕手のような関係です。それらはサーバーで作動しているアプリケーションにブラウザ上のイベントを配信し、ブラウザ上でアプリケーションにより操作されているコンポーネントを基にしてDOMツリーを更新します。これがいわゆるイベント駆動型のプログラミングモデルです。

実行の流れ

  1. URLを入力するか、また、ブラウザ上でハイパーリンクをクリックしたとき、リクエストはウェブサーバーに送られます。もしそのURLがZKに照合されたら、ZKローダーが呼び出され、このリクエストを処理します[17]

  2. ZKローダーは指定されたページを読み込み、翻訳し、それに応じて、適切なコンポーネントを作成します。

  3. 1ページすべてを翻訳した後、ZKローダーはHTMLページに結果を表示します。そのHTMLページはZKクライアントエンジンとともにブラウザへ送り返されます[18]

  4. ZKクライアントエンジンはブラウザ側にあり、ユーザーによって行われた、マウス移動、値の変化のようなイベントを検出します。一度、検出すると、ZKAUエンジンにZKリクエストを送ることによって通知します[19]

  5. クライアントエンジンからZKリクエストを受け取ることで、AUエンジンは、必要ならコンポーネントの内容を更新します。そして、AUエンジンは関連するイベントハンドラーを呼び出すことによって、アプリケーションに通知します。

  6. もし、アプリケーションがコンポーネントの内容を改変したり、移動させたり、つけ足したりしたら、AUエンジンは改変されたコンポーネントの新しい内容をクライアントエンジンにZKのレスポンスにより送ります。

  7. これらZKのレスポンスはDOMツリーの状況に応じた更新方法をクライアントエンジンに指示するメソッドです。



[16] AUはAsynchronous Updateの略です。

[17] 開発用リファレンスのAppendix A をご覧ください。

[18] ZKクライアントエンジンはJavaScriptで作成されました。ブラウザはZKクライアントエンジンをキャッシュしますので、エンジンは大抵、最初の一回目のみ送信されます。

[19] ZKリクエストは特別なAJAXリクエストですが、ZKモバイルの場合、ZKリクエストは特別なHTTPリクエストです。