Java Platform, Standard Editionデプロイメント・ガイド
目次      

4 アプリケーションの起動

JDK 8u451では、JavaFXはJava SE 8の一部として含まれなくなりました。 詳細は、https://www.oracle.com/javase/javafxを参照してください。

このトピックでは、アプリケーションの起動プロセス、ユーザー操作、およびカスタマイズ・オプションに関する情報を提供します。

ユーザー操作は、アプリケーションが成功するうえで重要な要因です。 アプリケーションのデプロイメントはユーザーに第一印象を与え、アプリケーションへのユーザーの満足度に影響を及ぼします。

このトピックでは、JavaおよびJavaFXアプリケーションのユーザーのデフォルトの操作について説明し、ユーザー操作をカスタマイズするオプションを示します。 この節の内容は以下のとおりです。

4.1 ユーザー操作に関する考慮事項

ユーザーは、アプリケーションを起動できない場合、次のステップがわからない場合、アプリケーションが低速であるまたはハングしていると感じる場合、および他の様々な理由でよく悩まされます。

デフォルトのJavaパッケージ化では、次のような多くの問題の領域を処理します。

  • ユーザーにとって必要なJREが確実にインストールされているようにする。

  • 欠落した依存性を自動インストールするか、必要に応じてインストールを提案する。

  • アプリケーションのロード中、ユーザーに視覚的なフィードバックを提供する。

  • 説明的なエラー・メッセージを表示する。

たとえば、ユーザーがJavaをインストールしていなくて、アプリケーションのJARファイルをダブルクリックすると、JREをダウンロードおよびインストールする必要があることを示すダイアログ・ボックスが表示されます。

開発者には、次のように、ユーザーの操作の調整方法に関する広範囲のオプションがあります。

  • スプラッシュ画面の表示

  • カスタムのロード進捗インジケータの使用

  • JavaFXアプリケーションの場合は、メッセージ(たとえば、JREを英語以外の言語でインストールする必要がある理由をユーザーに説明)をカスタマイズ

4.2 アプリケーションの起動プロセス、操作およびカスタマイズ

次の各項では、アプリケーション起動の遷移フェーズ、これらのフェーズのユーザーによる操作方法、およびユーザーへのデフォルトの視覚的なフィードバックのカスタマイズ方法について説明します。

4.2.1 起動プロセス

アプリケーションが起動したときからメイン・ダイアログが表示されるまでの間、操作がバックグラウンドで実行中に画面で一連のイベントが発生します。 図4-1では、これらのアクティビティを示し、次の段落でそれを説明しています。 この起動順序は、実行モードおよびバックグラウンド操作が完了する速度に応じて、部分的に異なります。 図4-1では、一定期間のバックグラウンド操作を表す一連のボックスを示し、JavaFXアプリケーションでこれらの操作が発生したときにユーザーに表示されるスクリーンショットも含まれています。

図4-1 アプリケーションの起動中のバックグラウンド操作および画面イベント

図4-1の説明が続きます
「図4-1 アプリケーションの起動中のバックグラウンド操作および画面イベント」の説明

アプリケーションの起動プロセスには次のフェーズがあります。

  • フェーズ1: 初期化

    JREの初期化およびアプリケーションの最初の調査によって、アプリケーションの起動前にロードおよび実行する必要があるコンポーネントが特定されます。 初期化フェーズは、図4-1の上の行の最初の2つのボックスで示しています。

  • フェーズ2: ロードおよび準備

    必要なリソースがネットワークまたはディスク・キャッシュロードされ、検証手順が行われます。 JavaFXアプリケーションでは、すべての実行モードでデフォルトまたはカスタムの進捗バーが表示されます。 このフェーズは、図4-1の上の行の3番目のボックスで示しています。

  • フェーズ3: アプリケーション固有の初期化

    アプリケーションが起動しても、追加のリソースをロードする必要がある、またはアプリケーションが完全に機能するようになるまでに他に長期間の準備を実行する必要がある可能性があります。 たとえば、高い権限が必要かどうかを確認し、ユーザーに権限に対する適切な要求を表示することが必要な場合があります。

  • フェーズ4: アプリケーションの実行

    図4-1に示すバックグラウンド操作が終了すると、アプリケーションが表示され、使用する準備ができています。

4.2.1.1 フェーズ1の初期化中の視覚的なフィードバック

最初の初期化のフェーズ中の視覚的なフィードバックを提供するオプションは限られています。 その時点では、アプリケーションを起動するために行うべきことがまだわかっておらず、Javaプラットフォームはまだ初期化されていません。 視覚的なフィードバックは、外部の手段(アプリケーションがWebページに埋め込まれている場合はJavaScriptやHTMLなど)を使用して提供する必要があります。 デフォルトでは、4.2.2項「デフォルトのユーザー操作」で説明されているように、このフェーズの間にスプラッシュ画面が表示されます。

4.2.1.2 初期化後の視覚的なフィードバック

JavaFXアプリケーションの初期化フェーズ後に視覚的なフィードバックを提供するために、JavaFXではプリローダーが提供されます。これはロード進捗に関する通知を取得し、アプリケーション固有の通知を取得することもできます。 デフォルトでは、4.2.2項「デフォルトのユーザー操作」で説明されているように、このフェーズの間に進捗バーの付いたプリローダーが表示されます。

デフォルトのローダーは、第4.2.3項、「"JavaFXアプリケーションのカスタマイズ・オプション。"項」の説明に従ってカスタマイズできます 独自のローダーを作成して、表示およびメッセージをカスタマイズすることもできます。 詳細は、第13章「JavaFXアプリケーションのプリローダー」を参照してください。

Javaアプレットの場合、カスタムの進捗バーを指定できます。 詳細は、14.3.2項「カスタマイズされたロード進捗インジケータの実装」を参照してください。

4.2.2 デフォルトのユーザー操作

適切にパッケージ化されたアプリケーションでは、すべての実行モードで、最初の2つのフェーズ中に、デフォルトの視覚的なフィードバックをユーザーに提供します。 実際の動作は、アプリケーションの実行モードおよびタイプに応じて異なります。

スタンドアロン・モードで起動すると、大部分のアプリケーションはすばやく起動し、視覚的なフィードバックは必要ありません。

表4-1では、アプリケーションが最初に起動され、ネットワークからロードされるときの実行モードに応じたデフォルトの動作をまとめています。

表4-1 最初の起動中のデフォルトの動作

起動フェーズ Java Web Startの起動 Webページに埋込み

フェーズ1
初期化

スプラッシュ画面:

java8_splash.gifの説明が続きます
図java8_splash.gifの説明

スプラッシュ画面、JavaFXアプリケーション:

html_splash_75.gifの説明が続きます
図html_splash_75.gifの説明

スプラッシュ画面、Javaアプリケーション:

html_splash_se8.gifの説明が続きます
図html_splash_se8.gifの説明

フェーズ2
コードのロード

進捗ウィンドウ、JavaFXアプリケーション:

ws_load.pngの説明が続きます
図ws_load.pngの説明

進捗ウィンドウ、JavaFXアプリケーション:

progress_dialog2_40.gifの説明が続きます
図progress_dialog2_40.gifの説明

フェーズ3
アプリケーションへの遷移

進捗ウィンドウの非表示

進捗ウィンドウのフェードアウト、JavaFXアプリケーション


表4-2では、JARファイルがキャッシュからロードされる、2回目以降の起動のデフォルトの動作をまとめています。 この場合、コードのロード・フェーズ中にネットワークから何もロードする必要がないので、プロセスでは視覚的な遷移が少なくなります。そのため、起動時間は大幅に短くなります。

表4-2 2回目以降の起動中のデフォルトの起動動作


Java Web Startの起動またはショートカットからの起動 Webページに埋込み

フェーズ1
初期化

スプラッシュ画面:

java8_splash.gifの説明が続きます
図java8_splash.gifの説明

スプラッシュ画面、JavaFXアプリケーション:

html_splash_75.gifの説明が続きます
図html_splash_75.gifの説明

スプラッシュ画面、Javaアプリケーション:

html_splash_se8.gifの説明が続きます
図html_splash_se8.gifの説明

フェーズ2
コードのロード

スプラッシュ画面:

java8_splash.gifの説明が続きます
図java8_splash.gifの説明

スプラッシュ画面、JavaFXアプリケーション:

html_splash_75.gifの説明が続きます
図html_splash_75.gifの説明

スプラッシュ画面、Javaアプリケーション:

html_splash_se8.gifの説明が続きます
図html_splash_se8.gifの説明

フェーズ3
アプリケーションへの遷移

スプラッシュ画面の非表示

スプラッシュ画面の非表示


4.2.3 JavaFXアプリケーションのカスタマイズ・オプション

19.2.3項「onGetSplash」に示すように、埋込みアプリケーションのスプラッシュ画面がWebページに表示され、onGetSplashコールバックを使用して簡単にカスタマイズできます。

他のJavaFXコンポーネントと同様に、CSSスタイル・シートを使用して、デフォルトのJavaFXプリローダーをカスタマイズできます。 アプリケーションのjavafx.default.preloader.stylesheetパラメータを使用して、カスタマイズされたスタイル・データを渡します。 このパラメータに有効なアイテムは、次のとおりです。

  • CSSスタイル・シートの絶対または相対URI (.css拡張子のテキスト・ファイルまたは.bss拡張子のバイナリ形式として)。 バイナリ変換の詳細は、5.4項「スタイル・シート変換」を参照してください。

  • 実際のCSSコード。

プリローダーをカスタマイズするには、.default-preloaderクラスを使用します。 標準CSSキーに加えて、プリローダーには次の特殊なキーがあります。

  • -fx-preloader-status-text

    プリローダーに表示されるステータス・テキスト

  • -fx-preloader-graphic

    プリローダーで使用されるイメージの絶対または相対URI

例4-1は、CSSファイルmy.cssの例を示しています。

例4-1 JavaFXプリローダーをカスタマイズするCSSクラスの例

.default-preloader { 
    -fx-background-color: yellow; 
    -fx-text-fill: red; 
    -fx-preloader-graphic: url("http://host.domain/duke.gif"); 
    -fx-preloader-text: "Loading, loading, LOADING!"; 
} 

例4-2に示すように、<fx:deploy> Antタスクにスタイル・シートを追加します。

例4-2 <fx:deploy> AntタスクへのJavaFXプリローダー・スタイルシートの追加

<fx:deploy ...>
    <fx:application ...>
        <fx:htmlParam  name="javafx.default.preloader.stylesheet" 
                value="my.css"/>
    <fx:application>
</fx:deploy>

少しのカスタマイズのみ必要な場合、ファイルのダウンロードのオーバーヘッドを回避するため、ファイル名ではなくCSSコードを渡します。 例4-3は、背景色を黄色に変更する方法を示しています。

例4-3 デフォルトのJavaFXプリローダーの背景色の変更

<fx:deploy ...>
    <fx:application ...>
    <!-- Using fx:param here, so it will be applicable to all web
            execution environments -->
        <fx:param  name="javafx.default.preloader.stylesheet"
                value=".default-preloader { -fx-background-color: yellow; }"/>
    <fx:application>
</fx:deploy> 

デフォルトのJavaFXプリローダーに会社ロゴを追加するには、javafx.default.preloader.stylesheetパラメータの値として次の文字列を渡します。

".default-preloader { -fx-preloader-graphic:url
('http://my.company/logo.gif'); }"

デフォルトのJavaFXプリローダーのカスタマイズでは不十分で、別の外観や動作が必要な場合、独自のプリローダーの実装方法については第13章「JavaFXアプリケーションのプリローダー」、パッケージへのカスタム・プリローダーの追加方法については第5章「パッケージ化の基本」を参照してください。

4.2.4 Javaアプレットのカスタマイズ・オプション

アプレットのデプロイ時に追加のパラメータを渡すことによって、Javaアプレットでカスタムのスプラッシュ画面を使用できます。 詳細は、14.3.1項「スプラッシュ画面の追加」を参照してください。

カスタムの進捗バーをアプレットに追加するには、DownloadServiceListenerインタフェースを実装するクラスを作成します。

4.3 ユーザーがアプリケーションを起動する際のヘルプ

場合によっては、ユーザーにとってアプリケーションの実行が困難であることがあります。 たとえば、次のような状況ではアプリケーションが失敗します。

  • ユーザーがサポートされていないプラットフォームを使用している。

  • ユーザーのシステムにJREがインストールされていない。

  • Javaが正しく構成されていない(たとえば、プロキシ情報が設定されていない)。

  • ユーザーがアプリケーションへの権限の付与を拒否した。

  • アプリケーションが現在のセキュリティ要件を満たしていない。

問題を解決するためのガイダンスを提供するか、アプリケーションを正常に失敗するようにしてから解決できない理由をユーザーに説明するかのいずれかを行って、問題が発生したユーザーのために計画することが重要です。

次の各項では、一般的な問題に対処する方法について説明します。

4.3.1 JREがない

ユーザーがJREをインストールしていない場合、アプリケーションを起動できません。 アプリケーション・パッケージには、この場合にユーザー操作性を向上させるいくつかのフックが含まれています。

次の各項で説明するように、デフォルトの動作をカスタマイズできます。 JREをインストールするプロンプトのカスタマイズ方法、およびWebアプリケーションのエラー処理の詳細は、第19章「ブラウザでのデプロイメント」を参照してください。

4.3.1.1 スタンドアロンの起動

メイン・アプリケーションのJARファイルには、JREの検出に使用される起動ツール・プログラムが含まれています。 JREが見つからない場合、JREを取得する場所を説明するダイアログ・ボックスが表示されます。

4.3.1.2 配備ツールキットで起動

第19章「ブラウザでのデプロイメント」で説明されているように、配備ツールキットを使用してアプリケーションをWebページに埋め込んだりブラウザから起動したりする場合、配備ツールキットでは、アプリケーションを起動しようとする前に、JREの検出を処理します。 JREがない場合、配備ツールキットは、インストーラへのリンクをユーザーに提供して、インストールを開始します。 デフォルトでは、ユーザーがJava Web Startを使用してアプリケーションを起動し、最新バージョンのJREがある場合のみ、自動ダウンロードが行われます。

4.3.2 ランタイム・エラー

様々なランタイム・エラーやユーザーによる誤り(アプリケーションJARファイルのロードに必要なネットワーク接続がないなど)が原因で、アプリケーションが起動に失敗することがあります。

最も一般的なエラーの1つは、ユーザーがアプリケーションに権限を付与していない場合です。 その場合、アプリケーションは失敗し、ユーザーはアプリケーションを再起動してから実行する権限を付与する必要があります。 このような場合、アプリケーションが失敗した理由と、正常に再起動するためにユーザーが行うべきことをユーザーに説明することが有用です。 デフォルトでは、ダイアログ・ボックス内か、アプリケーションが埋め込まれている場所のWebページ内に、エラー・メッセージが表示されます。

配備ツールキットを使用する場合、onDeployErrorハンドラを使用して、Webページのアプリケーション領域にエラー・メッセージを表示できます。 権限の付与に関してユーザーにアラートするためにスプラッシュ画面に指示を含めることを検討することもできます。 詳細は、第19章「ブラウザでのデプロイメント」を参照してください。

JavaFXアプリケーションの場合、プリローダーの起動中にエラーが発生しないかぎり、エラーに関する通知を取得するようにカスタム・プリローダーを含めることもできます。 JavaFXプリローダーおよびコード例の詳細は、第13章「JavaFXアプリケーションのプリローダー」を参照してください。

4.3.3 複数のJREがインストールされました

Java Web Startアプリケーションを実行し、コンピュータに32ビットJREと64ビットJREの両方がインストールされている場合、Java Web Startアプリケーションでは最新バージョンのJREが使用されます。 同じバージョンの32ビットJREと64ビットJREの両方がインストールされている場合は、32ビット・バージョンが最初に使用されます。 アプリケーションは、このJREのJava Web Startを使用し、このJREのクラスおよびライブラリも使用します。

ブラウザを構成すると、Java Web Startアプリケーションを起動するときに使用するJava Web Startのバージョンが表示されます。 デフォルトでは、ブラウザは、通常、ブラウザのインストール時に使用可能だった最新のインストール済バージョンのJava Web Startを使用します。

<resources>要素のarch属性および<java>要素のversion属性を使用して、Java Web Startアプリケーションで使用するアーキテクチャおよびJREバージョンを指定できます。 たとえば:

<resources arch="x86_64">
    <java version="8u251">
</resources>

この要素の詳細は、「Java Web Startガイド」resources要素」を参照してください。

ただし、Java Web Startでは、セキュリティ設定、デプロイメント・ルール・セット、Java Web Startのバージョンを選択して(ブラウザにプロンプトが表示されたら)を使用する場合に、JNLPファイルで指定されたJREバージョンおよびアーキテクチャ値のみが使用され、デプロイ・コード(Java Web Startを実装するコード)で許可されます。

たとえば、システムに64ビットJRE 8u261および32ビットJRE 8u251がインストールされているとします。 前述の例のように、<resources>要素が指定されているJNLPファイルを使用してアプリケーションを起動します。 Java Web Startは、含まれているものと同じJREのJVMで実行されます。 この構成では、通常、これは64ビットJRE 8u261 (最新バージョン)になります。 この時点では、Java Web Startはアプリケーションのコードを実行していません。 Java Web Startは、最終的にアプリケーションを実行するJNLPファイル32ビットJRE 8u251で指定されたJREを使用して、Java Web Start (64-bit JRE 8u261のデプロイ・コードを使用)の別のインスタンスを起動します。

この場合も、前述したファクタにより、アプリケーションでJNLPファイルに指定されたJREバージョンおよびアーキテクチャ値が使用されない可能性があります。

目次      

Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved.