Jazz Platform は、クライアント/サーバー・アーキテクチャーに基づいています。 Jazz サーバーは、通常セキュアなサーバー・クラスのマシンで稼働し、一連のサービスをホストして、そのリポジトリーにデータを収容しています。 リモート・クライアントは、HTTP を使用するネットワークを介して Jazz サーバーと通信します。 リモート・クライアントには様々な形式があります。典型的なものは、統合 Jazz Platform サポートを備えた IDE であり、共同作業によるソフトウェア開発に携わるユーザーが使用します。 Jazz 固有のコマンド行ツールや Ant スクリプトなど、ヘッドレス・モードで動作するリモート・クライアントもあります。 Web ブラウザーを使用して直接サーバーにアクセスするリモート・クライアントもあります。その場合は、Jazz 固有のソフトウェアをマシンにインストールする必要はありません。

この図は、Jazz Platform クライアント/サーバー・アーキテクチャーの説明です

クライアント/サーバー

Jazz Platform には、サービスとクライアント・ライブラリーという対応する部分があります。 サービスはサーバー・サイドにあります。 サービス実装は Java で記述されます。 サービスは、そのサービス・インターフェースを介してアクセスを受けます。 サービス・インターフェースは、クライアントからサーバーへの同期 RPC 形式の通信で使用される Web サービス・インターフェースの Java サービス定義として使用されます。

対応するクライアント・サイドの部分は、クライアント・インターフェースを公開する Java ベースのクライアント・ライブラリーです。 クライアント・ライブラリーは、対応するサービス・インターフェースを呼び出し、その呼び出しは、サーバー上の対応するサービスへネットワークを介して送信され、処理を要求します。 クライアント・ライブラリーは、キャッシングやイベント通知のほか、オリジナルのサービス・インターフェースよりも API を使いやすくするフィーチャーも提供します。

Eclipse IDE や Ant などの Java ベース Jazz クライアントは、クライアント・インターフェースでメソッドを使用します。 (非 Java ベース・クライアントで使用するために類似のクライアント・ライブラリーを記述することができます。)

Web ブラウザー・クライアントは、JavaScript からのアクセスにより適した関連のサービス・インターフェースを使用して、類似の方法で処理されます (Web UI に関する後述のセクションに記載されています)。

コンポーネント

Jazz Platform には、モジュラー形式の拡張可能なアーキテクチャーがあります。 標準のモジュールは、Jazz コンポーネントと呼ばれ、障害トラッキングや自動ビルドなど、ソフトウェア開発 ライフ・サイクルの何らかの局面で役立つ機能を備えています。 標準のコンポーネント は、1 つ以上のサービスおよび対応するクライアント・ライブラリーのほか、より下位 の階層でビルドされたドメイン固有の UI 部品を備えています。 Jazz サーバーに コンポーネントをインストールすると、コンポーネントのサービスの大部分が使用可能となり、Jazz クライアントにコンポーネントをインストールすると、新規サービスにアクセスできるようになります。 Jazz コンポーネントは、独立して動作することも (基本的にビルトイン機能にのみ依存します)、他のインストール済みコンポーネントが提供する機能を利用することもできます。

コンポーネントのこの概念は、Jazz Platform の拡張方法を説明する際には便利ですが、Jazz には新しい汎用コンポーネント・メカニズムはありません。 その代わりに Jazz Platform は、サーバーと Java ベース・クライアントの両方で、Eclipse Platform の拡張メカニズムを利用します。 (Eclipse Platform の概念である プラグインおよび拡張ポイントについて詳しい知識のない読者の方は、予備知識について「Eclipse Platform 技術概要 (Eclipse Platform Technical Overview)」の「Platform ランタイムおよびプラグイン・アーキテクチャー (Platform Runtime and Plug-in Architecture)」のセクションを参照してください。) コンポーネントは、Eclipse の概念のプラグインとしてパッケージされ、Eclipse の 概念である拡張ポイントを使用して、その他のコンポーネントに対して拡張をコントリビュートします。 単一のコンポーネントは、一連のプラグインで構成され、そのうち一部のコンポーネントはサーバーに、また一部はクライアントにインストールされます。

典型的な Jazz コンポーネントは、以下の 5 つのプラグインで構成されます。

サービス・プラグイン、共通プラグイン、および Web UI プラグインは、サーバーにインストールされます。

プラグインは、拡張ポイントを使用して Jazz への登録を行います。 コンポーネント の共通プラグインは、 クライアントとサーバーの両方にインストールされ、コンポーネントのサービス・インターフェースを拡張ポイント経由で登録します。 サービス ・プラグインは、対応するサービス実装をサーバー・サイド専用の拡張ポイント経由で登録します。 クライアント・ライブラリー・プラグインは、クライアント・インターフェースをクライアント・サイド専用の拡張ポイント経由で登録します。 これらのコントリビューションは、コンポーネントの ID ストリングを有しています。 このコントリビューションを使用して、実行時にコンポーネントを結合します。

コンポーネントのクライアント UI およびクライアント・ライブラリーのクライアント・サイド・プラグインは、Eclipse IDE にインストールされます。 クライアント UI プラグインは、それらのビューやエディターなどを Eclipse Platform 拡張ポイント経由でコントリビュートし、 クライアント・ライブラリー・プラグインは、そのクライアント・インターフェース を Jazz 固有の拡張ポイント経由で登録します。

クライアント・ライブラリーは、Ant のようなクライアントで動作するように設計されており、OSGi ランタイムは備えていません。 クライアント・ライブラリーは、 その他のコンポーネントのクライアント・ライブラリーにのみ依存し、サービスや UI には依存しない場合があります。

コンポーネントは、他のコンポーネントへのすべての依存関係を宣言する必要があります。 依存関係グラフには循環を含めてはなりません。 また、コンポーネントで 独自の拡張ポイントを宣言して、その他のコンポーネントによって順に拡張が行えるようにする場合もあります。

サーバー

Jazz サーバーは、任意の Java EE 1.4 対応アプリケーション・サーバー内で稼働する Java ベースの Web アプリケーションです。 現在サポートされているアプリケーション・サーバー は、Apache Tomcat および IBM WebSphere Application Server です。 Apache Tomcat は、オープン・ソースのサーブレット・コンテナーであり、デスクトップ・クラスのマシンにインストールできます。 IBM WebSphere Application Server は、様々な規模のソリューションを提供する市販製品です。 サービスおよびサーバー・サイド Jazz API のセマンティクスは、アプリケーション・サーバーの選択とは無関係であり、将来のリリースで 追加のアプリケーション・サーバーをサポートすることが可能です。

Eclipse に関する知識がある読者の方のために、Jazz Web アプリケーションは、内部的には OSGi ランタイムに基づいて構成されています。 Jazz Web アプリケーションは、 サーバーにインストールされているすべての Jazz コンポーネントのサービスを処理します。 新規コンポーネントを Jazz サーバーにインストールするには、コンポーネントのサーバー・サイド・ プラグイン (OSGi バンドル) が、プライマリー Web アプリケーションの OSGi ランタイムに認識されるようにする必要があります。 バンドル・マニフェストは、その他のインストール済みコンポーネントへのあらゆる依存関係を宣言します。分離した拡張マニフェストは、 様々な拡張ポイントへのすべてのコントリビューションを含んでいます。 OSGi ランタイムは、 バンドル・マニフェストを起動時に処理し、コンポーネント間の依存関係がすべてのインストール済みコンポーネントに対して満たされるようにします。 Jazz Web アプリケーションは、 すべてのインストール済みコンポーネントのコントリビューションがまとめられている、拡張レジストリーを管理し、 コンポーネントのサービス・インターフェースにある各着信要求を、処理を行うために対応するサービスへと送付します。