BigAdmin System Administration Portal
GlassFish アプリケーションサーバーの Java Web Start テクノロジとアプリケーションクライアント
Print-friendly VersionPrint-friendly Version

記事一覧

パート 1 - はじめに
パート 2 - JNLP と Java Web Start テクノロジ
パート 3 - GlassFish アプリケーションクライアント: Java Web Start の体験
パート 4 - セキュリティー、高度なトピック、および展望



Sun Java System Application ServerJava EE SDK は無料でダウンロードできます。
 

Java の開発者として、アプリケーションをエンドユーザーに手渡す方法が必要です。また、アプリケーションが正しい実行環境で (クラスパス、システムプロパティなどを正しく設定する必要がある)、正しく起動されるようにする必要があります。ユーザーベースが比較的小さく、簡単にアクセスできる場合は、アプリケーションを JAR ファイルとしてパッケージ化し、その JAR をエンドユーザーのシステムにコピーできます。また、環境を設定するためのスクリプトやアプリケーションを起動させるスクリプトを作成したり、各ユーザーのデスクトップにスクリプトを実行するアイコンを作成したりする場合もあります。アプリケーションを変更するときに、同じ手順を繰り返すことができます。ただし、ユーザーベースが大きくなったり、遠隔アクセスが必要になったり、あるいはその両方の状況の場合、この配布方法や起動方法が問題になることがあります。

JSR 56 で規定された Java Network Launching Protocol (JNLP) は、ネットワーク上での Java アプリケーションの配布、更新、および起動の全範囲に対応しています。JNLP の Sun による実装は Java Web Start と名づけられ、Java 実行環境の一部になっています。参考になる記事とリソースについては、この記事の最後にある「参照情報」のセクションをご覧ください。このセクションでは、JNLP の簡単な (非常に簡約した) 概要、および GlassFish アプリケーションサーバーで JNLP を使用するための準備に役立つ Java Web Start テクノロジについて説明します。

簡単な例を次に示します。描画ツールを配布して、実行する場合を考えます。ここで示すように、アプリケーションを JAR にパッケージ化して起動し、青い背景に最初の円を描くことができます。

java -classpath jarlib/drawtool.jar -Dbackground=blue com.mycorp.draw.DrawTool circle
 

このコマンドが機能するためには、クラスパスの JAR またはディレクトリが、それらの場所をコマンドが示すところに存在する必要があります。また、システムプロパティやコマンド行引数を含む実行コンテキストを指定する必要があります。さらに、Java を実行するメインクラスを指定する必要があります。この例では、メインクラスはコマンド行で指定されますが、JAR ファイルのマニフェストに指定することもできます。

JNLP の仕様のコアは (大幅に単純化している)、次のことを行なっています。

  • アプリケーションを記述するための XML ドキュメントの形式を規定。たとえば、必要な JAR、使用すべきシステムプロパティの設定、提供すべきコマンド行引数、および実行するメインクラスなど。
  • その XML ドキュメント (一般的には JNLP ドキュメントまたは JNLP ファイルと呼ばれる)、および XML ドキュメントがリストする JAR ファイルを、HTTP を使用して取り出すことを規定。

開発者として JNLP に従ってアプリケーションを提供することは、必要なすべてのクラスとリソースを 1 つまたは複数の JAR ファイルにパッケージ化し、アプリケーションを記述する JNLP ファイルを準備し、次に JNLP ファイルと JAR ファイルを Web サーバーで利用できるようにすることを意味します。

次のコードフラグメントは、描画ツールの仮定に基づいた JNLP ドキュメントの一部です。

<jnlp codebase="http://myserver.mycorp.com/drawtool">
        <resources>
                <j2se version="1.5+"/>
                <jar href="drawtool.jar"/>
                <property name="background" value="blue"/>
        </resources>
        <application-desc main-class="com.mycorp.draw.DrawTool">
                <argument>circle</argument>
     </application-desc>
</jnlp>
 

JNLP ドキュメントの要素は、同じアプリケーションを起動する java コマンド行の一部に対応しています。

エンドユーザーは、JNLP ファイルの URL をブラウザに入力するか、JNLP ファイルの URL を示す Web ページのリンクを単にクリックすることで、アプリケーションのダウンロードと起動が簡単にできます。Java Web Start の実装には、JNLP ファイルの URL をコマンド行引数として受け取り、ブラウザを使用せずにアプリケーションのフェッチと起動を行う javaws コマンドもあります。Java Web Start テクノロジ自体が、URL から JNLP ドキュメントを取り出して解釈し、必要な JAR のダウンロード、Java 実行環境の準備、およびメインクラスのロードと起動を行います。

この時点で、次のような質問があるかもしれません。毎回ダウンロードする代わりに、ダウンロード済みのファイルをキャッシュに書き込んでから再使用できるか (はい、これは自動的に実行されます)。JNLP ファイルと JAR ファイルが提供されている Web サーバーにアクセスできない場合でも、ダウンロード済みのアプリケーションを実行できるか (はい、これは開発者の選択により実行できます)。セキュリティーの面で良い点があるか (はい)、などです。これらはすべて重要な質問ですが、この簡単な概要の範囲を超えています。 詳細は、仕様Java Web Start のマニュアル、および オンラインフォーラム を参照してください。

Java Platform, Enterprise Edition (Java EE) の仕様に記載されているように、アプリケーションクライアントは、エンドユーザーのシステムで実行し充実したクライアント体験を提供するエンタープライズアプリケーションの一部です。アプリケーションクライアントはエンタープライズアプリケーションの純粋な Java コンポーネントで、アプリケーションクライアントの開発者は通常、使い慣れた Swing GUI フレームワークを使用して、強力で親しみやすいユーザーインタフェースを提供する一方で、リモートアプリケーションサーバーに配備した Web サービスや EJB などのエンタープライズコンポーネントを活用します。開発者は、単体で、またはアプリケーションサーバーに配備する大型のエンタープライズアプリケーション (EAR) の一部として、アプリケーションクライアントを構築できます

アプリケーションクライアントは、Java EE アプリケーションクライアントコンテナ (ACC) で実行します。Java EE の実装には、ACC とともに、Web コンテナや EJB コンテナなどのより親しみやすいコンテナが含まれています。ただし、バックエンドで実行する他のコンテナとは異なり、ACC はエンドユーザーシステムで実行します。また、ACC は通常、他のコンテナよりも軽くなっています。

ユーザーがアプリケーションクライアントを実行する前に、アプリケーションクライアントと ACC をエンドユーザーシステムに配置する必要があります。Java EE の仕様では、異なったアプリケーションサーバーの実装で配置方法を選択できます。たとえば、GlassFish アプリケーションサーバーには、特定のアプリケーションクライアントと ACC を持つ JAR ファイルを作成できるスクリプトが含まれています。その結果、各エンドユーザーシステムへの JAR のコピー、JAR の展開、ACC を認識するための環境設定、および GlassFish の appclient コマンドを実行してクライアントを起動するためのスクリプトまたはデスクトップアイコンの設定などができます。

これは、大変そうな作業の印象を与えますか。支援するスクリプトがあるときでも、アプリケーションクライアントを多数のエンドユーザーシステムに配備する場合には、特にそう思われるかもしれません。あるいは、事前にエンドユーザー全体が不明な場合、また、アプリケーションクライアントの新規リリースをエンドユーザーに提供する場合にもそう思われるかもしれません。

これまではっきりわからなかった場合でも、組み込み型の Java Web Start のサポートを GlassFish サーバーに追加することは多大な意義があると明白になったはずです。次に、開発者、エンドユーザー、および管理者がこの新機能をどのように使用するかを説明します。

この記事の パート 3では、開発者、管理者、およびエンドユーザーが体験する、GlassFish アプリケーションサーバーでの Java Web Start テクノロジの特長を示します。

参照情報
BigAdmin