このトピックでは、JavaおよびJavaFXアプリケーションのデプロイの基本について説明します。
この節の内容は以下のとおりです。
アプリケーションを公開する準備はできていますか。次の基本的なデプロイメントの手順に従います。
ユーザーによるアプリケーションへのアクセスおよびアプリケーションの実行方法を決定します。
アプリケーションは、ユーザーのデスクトップでのデプロイ、Webページへの埋込み、またはブラウザからの起動が可能です。
アプリケーション・パッケージを作成します。
アプリケーション・パッケージは、アプリケーションの実行に必要なJARファイル、およびWebページに埋め込まれたりブラウザから起動されるアプリケーションのデプロイメント記述子またはJNLPファイルで構成されます。アプリケーションをWebページに埋め込んだりブラウザから起動したりする場合、有効な署名証明書を使用してJARファイルに署名する必要があります。自己完結型アプリケーション・パッケージにも、必要なJREを含めます。
アプリケーションをWebページに埋め込んだりブラウザから起動したりする場合、Webページを設定します。
Webページには、ページに埋め込まれたアプリケーションを実行するためのHTML要素またはJavaScriptコードが必要です。ブラウザからアプリケーションを起動するには、JavaScriptコードが必要です。Javaパッケージ化ツールによって、Webページにコピーできる、両方のタイプを実行するためのJavaScriptコードが生成されます。
ユーザーがアクセスする場所にパッケージをコピーします。
Webページに埋め込まれたりブラウザから起動されるアプリケーションには、通常、Webサーバーが使用されます。デスクトップ・アプリケーションは、ユーザーに直接配信したり、アプリケーション・ストアを介して使用可能にしたりすることができます。
JavaおよびJavaFXアプリケーションは、複数の実行環境で実行できます。ユーザーによるアプリケーションへのアクセス方法によって、アプリケーションのデプロイ方法が決まります。使用可能なオプションは次のとおりです。
デスクトップ・アプリケーションとして起動
ユーザーは、Java起動ツールを使用してコマンド行から、またはアプリケーションのJARファイルをダブルクリックして、アプリケーションを起動できます。
ブラウザから起動
ユーザーは、ブラウザ内のリンクをクリックして、アプリケーションをダウンロードおよび起動できます。
Webページで表示
Webページがロードされると、アプリケーションが起動します。
それぞれの環境には、メリットとデメリットがあります。詳細は、3.1項「実行モード」を参照してください。
デフォルトでは、Javaパッケージ化ツールにより、アプリケーションの実行に必要な次のファイルのコレクションが生成されます。
アプリケーションJARファイル(または大規模なアプリケーションの複数のJARファイル)
Webページに埋め込まれたりブラウザから起動されるアプリケーションには、有効な署名証明書を使用して署名する必要があります。パッケージ化ツールまたはjar
コマンドは、JARファイルへの署名に使用できます。
デプロイメント記述子を含むJNLPファイル
デプロイメント記述子は、アプリケーション・コンポーネント、プラットフォーム要件および起動ルールを記述するXMLファイルです。
Webページからアプリケーションの埋込みや起動を行うJavaScriptコードを含むHTMLファイル
アプリケーションは、プラットフォーム固有の自己完結型アプリケーションとしてパッケージ化することもできます。自己完結型アプリケーションには、すべてのアプリケーション・リソース、JREおよび起動ツールが含まれます。これらのアプリケーションでは、オペレーティング・システムのネイティブ・アプリケーションと同じインストールおよび起動操作が提供されます。
自己完結型アプリケーションは、zipファイルまたはインストール可能なパッケージとして配布できます。Windowsの場合はEXEまたはMSI、OS Xの場合はDMG、PKGまたはmac.appStore、Linuxの場合はRPMまたはDEBです。
自己完結型アプリケーションには次の利点があります。
ターゲット・プラットフォームのネイティブ・アプリケーションと似ています。
ユーザーは、使い慣れたインストーラでアプリケーションをインストールし、通常の方法で起動します。
互換性が煩わしくありません。
アプリケーションで使用されるJREのバージョンは、アプリケーション開発者によって制御されます。
JREをインストールする必要なしに、新しいシステムに簡単にデプロイされます。
ZIPまたはユーザー・レベルのインストーラを使用すると、管理権限がなくてもデプロイメントが行われます。
詳細は、第7章「自己完結型アプリケーションのパッケージ化」を参照してください。
アプリケーションのパッケージ化には、次の3つの異なるツールが使用できます。
Javaのパッケージ化の詳細は、第5章「パッケージ化の基本」を参照してください。
Netbeans IDEを使用すると、多くの作業が行われます。「プロジェクト・プロパティ」を開いて、JavaFXアプリケーション・シーンの優先ディメンションを指定します。「消去してビルド」を使用してプロジェクトをビルドします。アプリケーション・パッケージはdist
フォルダに生成されます。アプリケーションをテストするには、Windowsエクスプローラでこのフォルダを開き、実行環境に応じて、HTML、JNLPまたはJARファイルをダブルクリックします。
自己完結型アプリケーションをパッケージ化するには、NetBeans IDEでbuild.xml
スクリプトをカスタマイズします。詳細は、7.3.2項「基本的なビルド」を参照してください。
別のIDEを使用している場合、JDKに含まれているAntタスクを使用して、ビルド後のステップとしてJavaパッケージ化を追加できます。例2-1は、JavaFXの例Colorful CirclesのAntパッケージ・タスクを示しています。Colorful Circlesの完全な例は、ColorfulCircles.zipファイルをダウンロードします。
nativeBundles="all"
属性を<fx:deploy>
Antタスクに追加すると、使用可能なすべてのパッケージ(スタンドアロン・アプリケーション・パッケージ、実行中のプラットフォームに応じた1つ以上の自己完結型アプリケーション・パッケージ、およびWebデプロイメント・パッケージ)が作成されます。インストール可能なパッケージは、パッケージ化の際に使用可能なサード・パーティ製のソフトウェアに基づいて作成されます。たとえば、Windows上にInno SetupとWiXの両方がある場合、3つのパッケージ(アプリケーションが含まれるフォルダ、.exeインストーラ・ファイルおよび.msiインストーラ・ファイル)を取得します。詳細は、第5章「パッケージ化の基本」を参照してください。nativeBundles
属性を含む単純なAntタスクを、例2-1に示します。
例2-1 ColorfulCirclesアプリケーションのすべてのパッケージを作成するAntタスク
<taskdef resource="com/sun/javafx/tools/ant/antlib.xml" uri="javafx:com.sun.javafx.tools.ant" classpath="${javafx.sdk.path}/lib/ant-javafx.jar"/> <fx:jar destfile="dist-web/ColorfulCircles.jar"> <fx:application mainClass="colorfulcircles.ColorfulCircles"/> <fileset dir="build/classes/"> <include name="**"/> </fileset> </fx:jar> <fx:deploy width="800" height="600" outdir="dist-web" outfile="ColorfulCircles" nativeBundles="all"> <fx:info title="Colorful Circles"/> <fx:application name="Colorful Circles example" mainClass="colorfulcircles.ColorfulCircles"/> <fx:resources> <fx:fileset dir="dist-web" includes="ColorfulCircles.jar"/> </fx:resources> </fx:deploy>
アプリケーションをWebページに埋め込んだりブラウザから起動したりする場合、必要なJARマニフェスト属性を<fx:jar>
タスクおよび<fx:signjar>
タスクに含めます。
Antを使用できず、コマンド行ツールを使用する場合、JDKに付属のJavaパッケージャ・ツールを使用します。第9章「Javaパッケージャ・ツール」で説明されているように、Javaパッケージャ・ツールには、アプリケーションをパッケージ化するためのいくつかのコマンドがあります。迅速なテスト・ビルドを行うには、例2-2
に示すようなjavapackager -makeallコマンドを使用できます。このコマンドに簡単なオプションを追加すると、ソース・コードがコンパイルされ、javapackager -createjar
コマンドとjavapackager -deploy
コマンドが結合されます。
例2-2 アプリケーションをビルドするjavapackager -makeallコマンド
javapackager -makeall -appclass colorfulcircles.ColorfulCircles -name "Colorful Circles" -width 800 -height 600
コマンドは単純なプロジェクトを迅速にビルドすることのみを目的としているため、-makeall
コマンドがサポートしているコマンドの動作をカスタマイズするオプションは限られています。-makeall
コマンドでは、入力ファイルと出力ファイルについて次のことを前提としています。
ソース・ファイルおよび他のリソース・ファイルは、メイン・プロジェクト・ディレクトリの下のsrc
という名前のディレクトリに配置する必要があります。
作成されるパッケージは、常にdist
という名前のディレクトリに生成され、ファイル名はすべてdistという接頭辞で始まります。
デフォルトでは、-makeall
コマンドは自己完結型アプリケーション・パッケージをビルドしようとします。これが不可能な場合、他の実行モードにデプロイできるように、JAR、HTMLおよびJNLPファイルが生成されます。
注意: Webページに埋め込まれたJavaFXアプリケーションの場合、ステージの幅および高さを常に指定する必要があります。 |
アプリケーションが稼働する準備ができている場合、-makeall
コマンドではなく-createjar
および-deploy
コマンドを使用します。-createjar
および-deploy
コマンドには、かなり多くのオプションがあります。アプリケーションをWebページに埋め込んだりブラウザから起動したりする場合、-signjar
コマンドも使用します。たとえば次のように、-deploy
コマンドに-native
オプションを追加して、自己完結型アプリケーション・パッケージを作成できます。
javapackager -deploy -native -outdir packages -outfile ColorfulCircles -srcdir dist -srcfiles ColorfulCircles.jar -appclass colorfulcircles.ColorfulCircles
詳細は、5.3.1項「Javaパッケージ化ツール」を参照してください。
ヒント: オプションの柔軟性をさらに高くするには、Javaパッケージャ・ツールではなくAntタスクを使用します。 |
アプリケーションをWebページに埋め込んだりブラウザから起動したりする場合、ユーザーがアプリケーションにアクセスできるWebページを設定する必要があります。Webページに埋め込まれたアプリケーションを実行するには、Java Plug-inを使用します。ブラウザから起動されたアプリケーションを実行するには、Java Web Startを使用します。
Webページに埋め込まれ、実行にJava Plug-Inを使用するアプリケーションには、<applet>
要素か<object>
要素、またはJavaScriptコードを使用できます。ブラウザからアプリケーションを起動するためにJava Web Startを呼び出すリンクまたはボタンを作成するには、JavaScriptコードを使用します。Javaパッケージ化ツールによって、Webページにコピーできる、両方のタイプを実行するためのJavaScriptコードが生成されます。
パッケージ化ツールによって生成されるHTMLページは、アプリケーションの単純なテスト・ページです。これには、アプリケーションの起動および埋込みを行うサンプルJavaScriptコードが含まれており、これを自身のWebページにコピーできます。手動でコピーを行わないようにするには、JavaScriptコードを既存のWebページに挿入するためのアプリケーションのパッケージ化のHTMLテンプレートを使用することを検討します。詳細は、5.7.4項「Webページ・テンプレート」を参照してください。
使用中のアプリケーション・パッケージおよびWebページがある場合、それらを適切な場所にコピーして、アプリケーションをユーザーが使用できるようにします。
アプリケーションをWebページに埋め込んだりブラウザから起動したりする場合、パッケージおよびWebページを、それらがロードされるWebサーバーにコピーします。
アプリケーションがデスクトップ・アプリケーションである場合、ユーザーがダウンロードする場所にアプリケーションをコピーします。自己完結型アプリケーションでは、インストール可能なパッケージおよび必要なJREが提供され、ユーザーにとってアプリケーションのインストールおよび実行が容易になります。
このトピックでは、パッケージ化ツールで提供されるデフォルトの処理を利用する、単純なアプリケーションのデプロイに必要な最低限の情報を提供します。より高度なアプリケーションには、たとえば次のような追加の要件があります。
アプリケーションのロード時に表示されるカスタム・スプラッシュ画面を含める。
アプリケーションのロード中に表示されるカスタム進捗バーを含める。
アプリケーションと、アプリケーションが埋め込まれるWebページとの間の通信に、JavaScriptコードを使用する。
埋込みJavaFXコンテンツを含むSwingおよびSWTアプリケーションをデプロイする。
アプリケーションの実行が安全であることをユーザーに保証するための、セキュリティ・ダイアログおよびダイアログに含まれる警告の数を最小限にする。
また、Javaチュートリアルの「デプロイメント」コースでも、Webページに埋め込まれたアプリケーションやブラウザから起動されたアプリケーションのデプロイに役立つ情報を提供しています。