Overview
Nexaweb は、エンタープライズ インターネット アプリケーションのビルドとデプロイに使用されるソフトウェア プラットフォームです。Nexaweb に対応したアプリケーションは、標準の J2EE Web アプリケーションです。Nexaweb で作成されたアプリケーションは、テクノロジやリソースなどの既存の資産を活用すると共に、デスクトップ アプリケーションの豊かな機能とインターネットの柔軟性を提供します。Nexaweb アプリケーションには、クライアント コンポーネントとサーバー コンポーネントが含まれています。次の表で、これらのコンポーネントの重要な特徴をいくつか示します。
Nexaweb のコンポーネント | 特徴 |
クライアント |
|
サーバー |
|
Nexaweb Platform
通常、Web アプリケーションは WAR ファイル形式でデプロイされます。この場合、Nexaweb に対応したアプリケーションには、Apache Tomcat 4.x など、J2EE Java Servlet コンテナのバージョン 2.3 以降のみが必要です。また、Nexaweb に対応したアプリケーションは Java のサーブレット方式に対応しているため、フル機能を備えた J2EE アプリケーションサーバー (BEA WebLogic や IBM WebSphere など) にデプロイすることもできます。ただし、このような J2EE アプリケーションサーバーの追加機能は必要ありません (たとえば、Nexaweb に EJB プログラミングは不要です)。
Nexaweb に対応したアプリケーションを作成するには、アプリケーションの編集、コンパイル、ビルド、およびパッケージ化を行うために選択したツールを使用して、XML で UI を、Java でアプリケーションロジックを指定します。
...
Nexaweb に対応したアプリケーションでは、XML を使用して UI が定義されます。これを UI XML と呼びます。この UI XML ファイルは、Web アプリケーションのディレクトリ構造内にある、通常 HTML ファイルが置かれる標準的な場所に配置されます。
2. イベントハンドラの記述
- クライアントサイドの Java イベント ハンドラ。このイベント ハンドラは、Nexaweb Platform で MCO (Managed Client Object) と呼ばれており、要求に応じてサーバーからダウンロードされる Java クラスです。
- XUpdate を使用して、UI を変更する XML ディレクティブを含むフラット ファイルを直接参照するイベント ハンドラ。これらのファイルはサーバー上に配置され、URL によって直接参照されます。
Nexaweb では、Nexawebify ユーティリティとして Ant タスクが提供されています。ビルドの際にこのタスクを呼び出して、Nexaweb に対応したアプリケーションを作成します。このユーティリティは、Nexaweb Platform のすべてのコンポーネントとリソースをアプリケーションのデプロイ用ディレクトリ構造にコピーして、nexaweb-platform.zip ファイルをこのアプリケーションディレクトリにインテリジェントに解凍します。このインテリジェントな解凍機能により、適切な Nexaweb コンポーネントがアプリケーションの web.xml ファイルに結合されます。このユーティリティは、Nexaweb Studio で [Project]、[Add / Upgrade Nexaweb Support] を選択して実行することもできます。詳細については、Nexaweb Studio のマニュアルを参照してください。
4. アプリケーションの WAR ファイルへのパッケージ化
Web アプリケーションには、デプロイに使用する標準のディレクトリ構造があります。WEB-INF という特殊な標準サブディレクトリを除いて、このディレクトリ構造内にあるすべてのファイルとサブディレクトリは Web ブラウザで表示できます。
- classes - Java クラスを配置するディレクトリ
- lib - .jar ファイルを配置するディレクトリ
Nexaweb に対応したアプリケーションの実行時アーキテクチャ
こ こでは、Nexaweb に対応したアプリケーションの実行時アーキテクチャの概要を示します。使用されるコンポーネントの種類、それらのコンポーネントがクライアントまたはサー バーのどちらに配置され、どちらで実行されるか、さらにコンポーネント間の相互作用について説明します。以降のセクションでは、Nexaweb Platform の特徴をより概念的な観点から説明します。
クライアントサイド
Nexaweb に対応したアプリケーションをクライアントサイドにデプロイするには、2 つの方法があります。次のいずれかを使用してアプリケーションを実行できます。
- ブラウザ内の Java アプレット
- ユーザーのマシンにインストールされた、スタンドアロンの Java アプリケーション
ユーザーインターフェイス (UI)
状態の定義
Nexaweb クライアントエンジンは、ユーザーインターフェイスの状態を定義するメモリ内の DOM (Document Object Model) を管理します。HTML ページに基づくモデルと異なり、Nexaweb Platform の UI ドキュメントはサーバーへのリクエスト全体にわたって維持されます。このモデルは、プログラムを使用して Java API から操作することも、UI XML マークアップ言語を使用して操作することもできます。
の画面に表示します。
UI ドキュメントへの変更は、次のいずれかの方法で行われます。
- プログラミングを使用する場合 -
開 発者独自の Java クラスを追加した Nexaweb Platform Java API を使用します。Nexaweb クライアント エンジンは、必要に応じて (オン デマンドで) クライアントサイドのイベント ハンドラを含むクラスをサーバーからダウンロードします。これらのクラスは UI XML で使用され、宣言されます。
- 宣言的に行う場合 -
XUpdate を使用します。XUpdate タグ (insert-before、insert-after、append、replace など) を使う XML ドキュメントで、別の XML ドキュメントを変更する方法を指定します。このような変更は差分的に行われます。たとえば、株価表示アプリケーションでは、1 つのフィールドの値だけを更新することができ、UI 定義全体を改めて指定する必要はありません。最初の起動ページ、フラット ファイルからアクセスする UI XML、JSP、イベント ハンドラを使用するサーブレットなど、Nexaweb クライアント エンジンがアクセスする UI XML ドキュメントはすべて、メモリ内の UI ドキュメントに対する変更命令です。
サーバーサイド
実 行時に Nexaweb Platform が必要とするサーバーサイドのインフラストラクチャは、バージョン 2.3 以上の Java Servlet コンテナだけです。このコンテナは、デプロイ済みの Nexaweb に対応したアプリケーションをホストします。Nexaweb Platform のサーバーサイドコンポーネントは、クラスタリング、フェイルオーバー、Web サービス、サーバーからクライアントへのリアルタイムプッシュをサポートしています。Nexaweb に対応したアプリケーションは標準の Web アプリケーションであるため、EJB (Enterprise Java Beans) や MDB (Message Driven Beans) など、J2EE アプリケーションサーバーの既存の機能が使用できます。
通信フレームワーク
Nexaweb に対応したアプリケーションのすべての層は、Nexaweb Platform の最も独創的で強力な機能である IMB (Internet Messaging Bus) を使用して通信を行います。IMB により、Nexaweb に対応したアプリケーションは、Web アプリケーションでは通常利用できないメッセージング機能を使用することができます。たとえば、双方向メッセージング、クライアントへのデータのプッ シュ、publish および subscribe メッセージング、アプリケーション メッセージの正しい配信順を保証する機能などがすべて、信頼性の高いセキュアな方法で提供されます。
- クライアントとサーバー間の双方向通信
- サーバー間通信 (たとえば、クラスタ化されたサーバーの場合)
- クライアント間通信 (サーバー経由、ただしサーバーサイド コードの記述は不要)
- ブラウザベースの小さな Java アプレット
- ブラウザを使用しない、インストール可能なデスクトップ クライアント
- アプレットのセキュリティ - Java アプレットは、保護されたサンドボックスを使用して実行されます。
- デプロイの容易性 - ブラウザベースのクライアントの場合、クライアント マシンへのインストールが不要なため、サポートに関わる多くの問題を解消することができます。
Nexaweb Platform は、次の項目に対する互換性を保証します。
- ブラウザ (Internet Explorer versions 4、5、5.5、および 6、Firefox、Safari、Mozilla、Netscape)
- Java 仮想マシン (Microsoft の JVM バージョン 1.1、Sun の JVM バージョン 1.3 以降)
- クライアントのオペレーティング システム
- クライアントのハードウェア プラットフォーム
アプリケーションイベントのルーティング
Nexaweb クライアントのリクエストを Web アプリケーションに提供する場合に、Nexaweb Server はアプリケーションイベントのルーターとして動作します。アプリケーションサーバー (より正確にはサーブレットコンテナ) の RequestDispatcher を使用して、サーバーは対応する Web アプリケーションのインスタンスにリクエストを送信します。Web アプリケーションから見て、クライアントサイドの Web ブラウザから直接送信される HTTP リクエストと Nexaweb Server から転送されるリクエストの間に違いはありません。
Nexaweb Server は、信頼性の高い、永続的な双方向通信チャネルを Nexaweb Client に対して透過的に維持します。この通信チャネルには次のような特徴があります。
- ファイアウォールを通して動作する
- Web ブラウザで使用される標準ポート 80 が使用可能
- リアルタイム サーバー プッシュとセキュリティ レベルの高い HTTP 接続が可能
Nexaweb アプリケーションの開発
Nexaweb は、豊かなエンタープライズインターネットアプリケーションを開発するために、標準に基づく Java の Web 開発アーキテクチャを拡張します。Nexaweb のプログラミングモデルには次のものがあります。
- Nexaweb クライアント ユーザー インターフェイスに XML を使用
- クライアントサイド プログラミングに MCO (Managed Client Object) を使用 (イベント処理、ビジネス ロジック、データ処理など)
- XML UI またはクライアントサイドへのデータ提供に JSP、Java Servlet、Struts の標準 Java Web テクノロジを使用
Nexaweb クライアントの UI
Nexaweb クライアントで XML を使用すると、ユーザーインターフェイスの記述を高水準なものにすることができます。これにより、ネットワークトラフィックが軽減されるだけでなく、プレ ゼンテーションで高い柔軟性が得られます。XML UI では、今日のグラフィカルインターフェイスに見られる共通の要素をすべて作成できます。また、XML UI の強力な機能により、開発者以外のユーザーも高度なインターフェイスをすばやく作成することができます。ユーザーインターフェイスの要素には、入力コント ロール (テキストボックス、ドロップダウンリスト)、ツールバーとメニューバー、タブ付きダイアログボックス、階層または表形式の情報を表示するツリーとテーブ ル、キーボードショートカットとアクセラレータ、フル機能のキーボードナビゲーション、ドラッグ&ドロップのサポート、コンテキストポップアップメニューとツールチップなどがあります。
<window title="Example" width="150" height="70" x="10" y="10">
<button text="Button 1"/>
<button text="Button 2"/>
</window>
図 1: ウィンドウを作成するコードの例
Nexaweb クライアントのビジネスロジック
Nexaweb では、開発者は標準の Java プログラミング言語を使用して、クライアントサイドのビジネスロジックを記述することができます。開発者は、クライアントサイドの開発に、クライアントの JVM (Java Virtual Machine) に対応する強力な JDK API と Nexaweb Client API を使用できます。Nexaweb Client API には、次の機能を提供するクラスが含まれています。
- ユーザー インターフェイスの操作
- サーバーとの通信
- XML の解析
- DOM の操作
- 画面のキャプチャ
- クライアントサイドのビジネス ロジック
- publish/subscribe メッセージングなど