このトピックでは、JavaおよびJavaFXアプリケーションのデプロイに使用可能な、アプリケーションの様々な実行モードについて説明します。
Javaアプリケーション・モデルの主な機能の1つは、1つのアプリケーションを書き込み、それを様々な方法で簡単にデプロイできることです。ユーザーは、同じアプリケーションを、デスクトップ上やブラウザ内で実行したり、ブラウザ内のリンクから起動したりできます。
ただし、実行モード間で違いがあり、アプリケーションの開発時に考慮する必要があります。
この節の内容は以下のとおりです。
表3-1では、Javaアプリケーションをデプロイできる実行モードについて説明します。
表3-1 Javaの実行モード
実行モード | 説明 |
---|---|
スタンドアロン・プログラムとして実行 |
アプリケーション・パッケージはローカル・ドライブで使用できます。ユーザーは、 |
Java Web Startを使用してリモート・サーバーから起動 |
ユーザーは、Webページのリンクをクリックして、リモートWebサーバーからアプリケーションを起動します。ダウンロードすると、デスクトップ・ショートカットからJava Web Startアプリケーションを起動することもできます。 |
ブラウザに埋込み |
Javaコンテンツは、Webページに埋め込まれ、リモートWebサーバーでホストされます。 |
自己完結型アプリケーションとして起動 |
アプリケーションは、ローカル・ドライブにインストールされ、JREのプライベート・コピーを使用してスタンドアロン・プログラムとして実行します。アプリケーションは、そのオペレーティング・システムの他のネイティブ・アプリケーションと同じ方法で(たとえばデスクトップ・ショートカットやメニュー・エントリを使用して)起動できます。 |
それぞれの実行環境には欠点があります。たとえば、リモート・アプリケーションの場合、アプリケーションをネットワークからロードする必要があるため、ロードのフェーズが非常に長くなることがあります。ローカル・ドライブで実行するアプリケーションの場合は、これはそれほど問題ではありません。
図3-1では、異なる環境において異なる動作をする機能の一部を示しています。次の各項では、この図の詳細を説明します。
プリローダーは、アプリケーションのロードおよび初期化の進捗状況に関する通知を受信する小規模のJavaFXアプリケーションです。プリローダーはすべての実行モードで使用されますが、実行モードに応じて、プリローダー実装は異なるイベントのセットを受信し、最適な動作が異なる可能性があります。
たとえば、自己完結型アプリケーション、スタンドアロン実行モードまたはショートカットからの起動時では、ロードするものがないため、プリローダーはロード進捗イベントを取得しません。プリローダー実装および動作の相違点の詳細は、第13章「JavaFXアプリケーションのプリローダー」を参照してください。
適切にパッケージ化されたJavaアプリケーションには、JRE構成設定に従って初期化されたプロキシ設定があります。アプリケーションがWebページに埋め込まれている場合、デフォルトでは、プロキシ設定は現在のブラウザから取得されます。それ以外の場合、システムのプロキシ設定が使用されます。プロキシ設定は、デフォルトではすべての実行モードで初期化されます。
大部分のオペレーティング・システムでは、アプリケーションは、2回目以降の起動が簡略化され、デスクトップ・ショートカットを作成したり、プログラム・メニューまたはドックへのリンクを追加したりすることでユーザーのデスクトップと統合できます。
デスクトップ・ショートカットの組込みサポートは、自己完結型アプリケーションおよびWeb配備アプリケーションで使用できます。
デフォルトでは、ブラウザから起動されたりWebページに埋め込まれたりするJavaアプリケーションは、サンドボックスと呼ばれる制限された環境で実行されます。アプリケーションをサンドボックスに制限すると、次の利点があります。
ローカル・ファイルに影響を及ぼす可能性のある有害なコードからユーザーを保護する。
ネットワーク上のデータに対してアクセスや破壊を試みる可能性のあるコードから企業を保護する。
サンドボックスに制限されたアプリケーションは、次の操作を実行できません。
クライアント・リソース(ローカル・ファイル・システム、実行可能ファイル、システム・クリップボード、プリンタなど)へのアクセス。
サードパーティ製のサーバー(つまり元のサーバー以外のサーバー)からのリソースへの接続またはリソースの取得。
ネイティブ・ライブラリのロード。
SecurityManagerの変更。
ClassLoaderの作成。
特定のシステム・プロパティの読取り。禁止されているシステム・プロパティのリストは、システム・プロパティに関する項を参照してください。
ブラウザで実行される、または以前にWebページからインストールされたJavaアプリケーションは、アプリケーションがロードされた元の場所で、アプリケーションへの更新を自動的にチェックします。このチェックはアプリケーションが起動するたびに行われ、デフォルトでは、更新はバックグラウンドで実行されます。更新が検出されると、アプリケーションは自動的に更新されます。
スタンドアロン・アプリケーションおよび自己完結型アプリケーションの場合、更新のハンドリングはユーザーが担当します。
配備ツールキットは、次の2つの重要な機能を実行します。
更新を管理することによって、JavaアプリケーションのWebデプロイメントを簡略化します。
アプリケーションの起動の待機中のユーザーの操作性を向上させます。
アプリケーションの起動フェーズはユーザーの満足度の重要な要素であるため、これら2つの機能はつながっています。たとえば、配備ツールキットでは、ユーザーがJREをインストールしたことを確認し、インストールしていない場合、アプリケーションの実行前にインストールすることを提案します。ユーザー側に必要な労力は少しです。
配備ツールキットは、JavaScript APIを提供し、Webページに埋め込まれたりブラウザから起動されるアプリケーションでのみ使用できます。
配備ツールキットの詳細は、第19章「ブラウザでのデプロイメント」を参照してください。
Webページに埋め込まれたアプリケーションは、JavaScriptを使用してWebページと通信できます。通信を開始するには、JavaFXアプリケーションはJavaFX HostServices
APIからWebコンテキストを取得する必要があります。他の実行環境の場合、Webコンテキストへの参照を取得しようとすると、nullが返されます。
例3-1は、新しいページに移動するためにJavaScriptを使用する例を示しています。
例3-1 JavaScriptを使用した新しいページへの移動
final HostServices services = getHostServices(); JSObject js = services.getWebContext(); js.eval("window.location='http://javafx.com'");
JavaFXアプリケーションの場合の、JavaScriptを使用したブラウザとの通信の詳細は、第16章「JavaおよびJavaScript」を参照してください。
Javaアプレットの場合の、JavaScriptを使用したブラウザとの通信の詳細は、アプレットからのJavaScriptコードの呼出しに関するトピックを参照してください。
Javaコンテンツを実行するには、最新バージョンのJREが必要です。アプリケーションが自己完結型ではないかぎり、JREをユーザーのシステムにインストールする必要があります。
必要なバージョンのJREがユーザーにない場合、インストールするように指示されます。しかし、たとえば次に示すように、JREのシステム・インストールおよび自動更新機能が不十分な状況があります。
ユーザーにJREをインストールするための管理権限がない。
ユーザーが他のアプリケーション用に古いバージョンのJREを必要としている。
アプリケーションで使用する正確なバージョンのJREを設定する。
配布チャネルが外部フレームワークへの依存性を許可しない。
自己完結型アプリケーションとしてアプリケーションをデプロイすると、これらの問題は解決します。JREはアプリケーション・パッケージに付属しており、ユーザーは別にインストールする必要はありません。自己完結型アプリケーション・パッケージは、.zipファイルの配布と同様に単純にすることができ、ターゲット・オペレーティング・システムに固有のテクノロジを使用して、インストール可能なパッケージにラップすることができます。自己完結型アプリケーション・パッケージの詳細は、第5章「パッケージ化の基本」を参照してください。