Java Web Start 1.5.0

よくある質問 (FAQ)


一般的な質問

  1. Java Web Start とは何ですか ?
  2. 詳しい情報はどこで入手できますか ?
  3. なぜ Java Web Start が必要なのですか ?
  4. Java Web Start を使ってアプリケーションを起動するにはどうしたらよいですか ?
  5. アプリケーションの起動方法には意味があるのですか ?
  6. Java Web Start のシステム要件は何ですか ?
  7. Java Web Start が動作するプラットフォームは何ですか ?
  8. Java Web Start のサーバ要件は何ですか ?
  9. Java Web Start は標準に基づいていますか ?
  10. 独自の Java Web Start を実装できますか ?
  11. サポートされるブラウザは何ですか ?
  12. Java Web Start の総合的なオンラインリソースのリストはありますか ?
  13. Java Web Start を使ってアプリケーションを配備できますか ?
  14. Java Web Start は、Marimba や MS SMS のようなソフトウェア配布機構ですか ?
  15. Java Web Start はアプリケーションのインストールプログラムですか ?
  16. Java Web Start が動作する Java プラットフォームのバージョンは何ですか ?
  17. Java Web Start は Java Plug-in テクノロジ (アプレット) とどのように関係していますか ?

技術的な問題

  1. Java Web Start を動作させるにはアプリケーションを変更する必要がありますか ?
  2. アプレットからアプリケーションへの移行パスはありますか ?
  3. VM 引数を Java 実行環境に渡す方法はありますか ?
  4. サーバのタイムスタンプに依存したくありません。バージョン化された JAR を指定するにはどうしたらよいですか。また、JAR の増分更新を入手するにはどうしたらよいですか ?
  5. JAR ファイルはアプリケーション間で共有されますか ?
  6. 独自のスプラッシュ画面を提供するにはどうしたらよいですか ?
  7. ローカルシステムでアプリケーション状態を保存するにはどうしたらよいですか ?
  8. 私のアプリケーションには特定のバージョンの JRE が必要です。この JNLP ファイルを指定するにはどうしたらよいですか ?
  9. マニフェストファイルの Class-Path を信頼できますか ?
  10. アプリケーションがネイティブコードに依存しているか、それを使用している場合でも Java Web Start を使用できますか ?
  11. Class.forName と ClassLoader.getSystemClassLoader を使用してアプリケーション内部にリソースをロードするにはどうしたらよいですか ?
  12. コマンド行から Java Web Start を起動するにはどうしたらよいですか ?
  13. 異なる証明書によって署名された複数の JAR ファイルを使用するにはどうしたらよいですか ?
  14. Java Web Start がインストールされているかどうかを調べるにはどうしたらよいですか ?
  15. なぜブラウザに JNLP ファイルがプレーンテキストとして表示されるのですか ?
  16. なぜ Java Web Start は常に JAR ファイルを IIS サーバから再ロードするのですか ?
  17. JnlpDownloadServlet で Pack200 圧縮を使用できますか ?
  18. アプリケーションのインスタンスを 1 つだけ確実に実行する最良の方法は何ですか ?
  19. JNLP ファイル内のプロパティはいつ設定されるのですか ?
  20. ダウンロードされた JNLP ファイルに対してファイルが見つからないというメッセージが表示される原因は何ですか ?
  21. ほかの目的で署名された署名付き jar (JCE 拡張機能など) を使用するにはどうしたらよいですか ?
  22. なぜ Gnome を採用した一部の Linux プラットフォームでは関連付け機能を使用できないのですか ?
  23. JNLP の MIME タイプを伝送するようにサーバを設定するにはどうしたらよいですか ?
  24. JnlpDownloadServlet を使用するようにサーバを設定するにはどうしたらよいですか ?
  25. アプリケーションを一意に識別するにはどうするのですか ?

セキュリティに関する質問

  1. Java Web Start のセキュリティ保護はどのように行われているのですか ?
  2. 安全なサンドボックス (sandbox) とは何ですか ?
  3. Java Web Start の安全なサンドボックスはアプレットのサンドボックスに比べてどのくらい柔軟性が高いのですか ?
  4. アプリケーションがシステムに対する無制限のアクセス権を取得できるようにするにはどうしたらよいですか ?
  5. JAR ファイルの暗号化されたダウンロードはサポートされていますか ?
  6. Java Web Start で NTLM 認証を使用できますか ?
  7. Java Web Start で HTTPS プロトコルを使用できますか ?
  8. セキュリティツールに関する詳細情報を得るためのオンラインリソースはありますか ?

既知のバグ

  1. 4825415: 1.4.2 では Java Web Start のデスクトップ統合とセキュリティのダイアログが表示されない
  2. 4491398: DLL リソースの依存に関する問題
  3. 5008460: パスに空白が含まれ、TraceSecurity がオンになっている場合に Java Web Start が失敗する
  4. 5074087: Windows で related-content が title を付けずに指定された場合、アプリケーションが起動できない
  5. 5074524: 署名のない拡張機能の最初の jar はすぐにダウンロードしなければならない
  6. 5047548: パッケージが含まれる部分の遅延ダウンロードが機能しない
  7. 5074526: アプリケーションが署名付きの場合でも、ExtenededService ファイルの API にセキュリティ用のダイアログが表示される
  8. 4925768: Gnome ではシステムレベルのショートカットがサポートされていない
  9. 5072969: 起動エラーによって Java Web Start がハングアップしたように見える
  10. 5074530: Java Web Start が正しい JRE を選択していない

一般的な質問

Java Web Start とは何ですか ?

Java Web Start は、プラットフォームに依存しない安全かつ強固な配備用テクノロジを提供します。これにより、開発者はフル機能のアプリケーションを標準の Web サーバで使用できるようにすることで、アプリケーションをエンドユーザに配備できます。Web ブラウザがあれば、エンドユーザはアプリケーションを起動するだけで、常に最新のバージョンを安心して利用できます。
トップに戻る

詳しい情報はどこで入手できますか ?

Java Web Start のオンラインマニュアルを参照してください。.

Java Web Start を使用してアプリケーションを配備する方法についての詳細な技術情報 (開発者向け) は、開発者ガイドを参照してください。
トップに戻る

なぜ Java Web Start が必要なのですか ?

アプリケーションを Web から直接配備する簡単で強固かつ安全な方法だからです。開発者は、簡単にアプリケーションを Web 経由で使用できるようにすることができます。また、Java Web Start には Java 実行環境 (JRE) 管理機能も備わっているため、設定が簡単で、ブラウザに依存せず、Web アプリケーションのソリューションを効率的に配備できます。

ユーザは、インストール手順を個別に行わなくても、アプリケーション (Web ページ) に簡単にアクセスできます。ユーザは、デスクトップから、Web ページで利用するよりも豊富ですぐに応答するユーザーインタフェースを使って、 Java アプリケーションにアクセスして使用できます。また、Java Web Start ベースのアプリケーションは、一度インストールすると、必要なときにいつでもクリックするだけで実行できます。

アプリケーションを起動するたびに、ユーザに意識させないで Web から アプリケーションが更新されるため、ユーザは 手動でアプリケーションを更新する必要がなく、常に最新バージョンを使用できます。
トップに戻る

Java Web Start を使ってアプリケーションを起動するにはどうしたらよいですか ?

まず、Web ページからリンクをクリックして、新しいアプリケーションを起動します。

アプリケーションを頻繁に使用する場合は、Java Web Start でデスクトップにアイコンを配置できるようにして、デスクトップまたは [スタート] メニューからショートカットを作成します。Java Web Start から、ショートカットを作成するか、[スタート]
メニューに項目を作成するかを尋ねられることがあります。[はい] をクリックすると、次回からブラウザを使わないでアプリケーションを起動できます。

また、Java Web Start には、Java コントロールパネルから起動できるアプリケーションキャッシュビューアが用意されています。アプリケーションキャッシュビューアを使用すると、ダウンロードしたアプリケーションを直接起動できます。

さらに、コマンドプロンプトで「javaws <jnlp_url>」と入力して、アプリケーションを起動することもできます。ここで <jnlp_url> はアプリケーションの JNLP ファイルへの URL です。
トップへ戻る

アプリケーションの起動方法には意味があるのですか ?

いいえ。どのような方法を使用しても、アプリケーションは同じように起動します。つまり、Web ページ、デスクトップ上のショートカット、[スタート] メニュー、または Java アプリケーションキャッシュビューアのどの方法で起動しても違いはありません。

Java Web Start は、必ず最新バージョンのアプリケーションが使用できるかどうかを確認し、使用できる場合は自動的にダウンロードします。

使用しているアプリケーションがデジタル署名されていない場合、Java Web Start はそのアプリケーションを制限された安全な実行環境で起動します。署名のないアプリケーションや信頼できないアプリケーションが、ローカルシステムやネットワークに対する無制限のアクセス権で実行されることはありません。
トップに戻る

Java Web Start のシステム要件は何ですか ?

Java バージョン 1.2.2 以上をサポートするクライアントシステムで Java Web Start を使用できます。Java Web Start はほとんどすべてのブラウザで動作します。
トップに戻る

Java Web Start が動作するプラットフォームは何ですか ?

Sun Microsystems では、Windows 98/NT/2000/XP/2003 版、Solaris オペレーティング環境 (SPARC 版と Intel 版)、および Linux/i486 版を提供しています。Apple では、それらの OS X リリース版を提供しています。
トップに戻る

Java Web Start のサーバ要件は何ですか ?

Java Web Start では、クライアントとサーバとの通信に HTTP を使用します。標準の Web サーバをアプリケーションのホストとして使用できます。その他のサービス (バージョンベースのダウンロード、増分更新、アプリケーションの pack200 圧縮など) が必要な場合は、Web サーバでサーブレットや Java Server Pages をサポートする必要があります。これらの機能を実装するサーブレットの例が JDK のサンプル用のディレクトリに収められています。
トップへ戻る

Java Web Start は標準に基づいていますか ?

はい。Java Web Start 1.5.0 は、Java Community Process を通じて開発された Java Network Launching Protocol (JNLP) テクノロジの製品品質のリファレンス実装です。 JNLP は、仕様番号 JSR 056 です。 他のプラットフォームベンダーは、Java Web Start を自分たちのプラットフォームに移植するか、この仕様を実装するよう奨励されます。

詳細は、JNLP 仕様を参照してください。 
トップに戻る

独自の Java Web Start を実装できますか ?

Java Web Start の基盤となるテクノロジである Java Network Launching Protocol and API は Java Community Process を通じて開発されているので、どの製品にもこのプロトコルを実装できます。ただし、JNLP テクノロジを含む JCP テクノロジを実装する場合は、追加のライセンスと条項が満たされなければなりません。
トップに戻る

サポートされるブラウザは何ですか ?

Java Web Start では、主として Internet Explorer 4 以上と Mozilla をサポートしています。ただし、MIME タイプの関連付けを正しく設定してある場合は、どのブラウザでも JNLP ファイルを起動できます。Java Web Start では、ブラウザの設定を使用し、ブラウザを起動して URL を表示することもあります。この機能は、サポートされていないブラウザでは動作しません。
トップに戻る

Java Web Start の総合的なオンラインリソースのリストはありますか ?

トップに戻る

Java Web Start を使ってアプリケーションを配備できますか ?

Java Web Start は、Web 配備されるように作成された Java アプリケーション用のアプリケーション起動ツールです。

アプリケーションは、1 組の JAR ファイルと JAR ファイルに含めなければならないすべてのアプリケーションリソース (イメージ、構成ファイル、ネイティブライブラリなど) で配布する必要があります。これらのリソースは、メソッド ClassLoader.getResource() またはそれと同等のメソッドを使って検索する必要があります。Java Web Start では、JAR ファイルを Web サーバからクライアントに転送するだけです。

アプリケーションを制限された実行環境 (サンドボックス) で実行されるように作成した場合は、ディスクへのアクセスが許可されず、アプリケーションはそれが常駐しているホストにしか接続できないことがあります。
トップに戻る

Java Web Start は、Marimba や MS SMS のようなソフトウェア配布機構ですか ?

Java Web Start は、Java アプリケーション用のアプリケーション起動ツールです。Java Web Start を使用すると、ユーザの操作を最小限に抑えて、Java プラットフォームに基づいたフル機能のアプリケーションを Web サーバからクライアントマシンに簡単に配布できます。

ソフトウェア配布テクノロジは、Java Web Start の 1 つの局面にすぎません。Java Web Start は、セキュリティ、アプリケーションへの更新、エンドユーザにとっての使いやすさ、開発者がアプリケーションを作成するときの柔軟性も備えています。
トップに戻る

Java Web Start はアプリケーションのインストールプログラムですか ?

Java Web Start は、Web 配備されるように作成された Java アプリケーション用のアプリケーション起動ツールです。Java Web Start は、ローカルでディスク上のリソースをキャッシュしますが、安全な実行環境やユーザにほとんど気付かれない更新機能もアプリケーションに提供します。アプリケーションは使用されるたびに更新されるため、エンドユーザは手動でソフトウェアの更新を行う必要がありません。
トップに戻る

Java Web Start が動作する Java プラットフォームのバージョンは何ですか ?

Java Web Start は、バージョン 1.2.2 以上の Java プラットフォーム用に作成されたアプリケーションのみを起動します。
トップに戻る

Java Web Start は Java Plug-in テクノロジ (アプレット) とどのように関係していますか?

これらの 2 つの方法は非常によく似ています。主な違いは、ユーザ側の操作です。Java アプリケーションまたはアプレットが Web ページとのやりとりを必要とし、Web ブラウザと強く結び付いている場合は、アプレットがソリューションとなることがあります。一方、ブラウザの独立性が重要な場合は、Java Web Start が選択した配備プラットフォームとなります。このほかにも違いはいくつかありますが、これが基本的な相違点です。

Java Plug-in テクノロジを使用すると、ユーザはブラウザ内部で Java アプレットを実行できます。

Java Web Start を使用すると、任意のブラウザでフル機能のアプリケーションをダウンロードできます。アプリケーションを一度ダウンロードして起動すると、アプリケーションを引き続き動作させながら、ブラウザを閉じることができます。アプリケーションは、ブラウザが開いていなくても機能できます。つまり、ブラウザをシャットダウンしたり、別の Web ページに移動しても、アプリケーションは引き続き実行されます。
トップに戻る

技術的な問題

Java Web Start を動作させるにはアプリケーションを変更する必要がありますか ?

アプリケーションを Java 2 プラットフォームに作成し、1 組の JAR ファイルとして配布する場合は、アプリケーションを修正する必要はありません。 Java Web Start は public static void main(String[] args) メソッドを呼び出してアプリケーションを起動するため、必ずアプリケーションが JAR ファイルからすべてのリソース (イメージやリソースバンドルなど) を取り出すようにしてください。

アプリケーションにシステムに対する無制限のアクセス権 (ネットワークやディスクへのアクセス権) が必要な場合は、コードに署名する必要があります。
トップに戻る

アプレットからアプリケーションへの移行パスはありますか ? 

Java Web Start は、主としてアプリケーションの配備用に設計されています。アプリケーションの要件はすべて JNLP ファイルに指定し、ユーザは介入しません。Java Web Start には、従来の AppletViewer とほとんど同じ方法でアプレットを起動する機能があります。この組み込み型の AppletViewer を使えば、Java Web Start を必要とする既存のアプレットを簡単に移行できます。ただし、この機能は Java Plug-in を完全に実装するためのものではありません。Java Plug-in は、アプレットの主要な起動手段です。Java Web Start に含まれる組み込み型の AppletViewer には、クラスファイルをリソースとして指定できないことやポリシーファイルを受け入れないなどの制限があります。 
トップに戻る

VM 引数を Java 実行環境に渡す方法はありますか ?

Java Web Start では、いくつかの JVM フラグを j2se 要素の java-vm-args 属性で設定できます (開発者ガイド を参照)。すべての設定を可能にすると、セキュリティが脅かされるだけでなく、プラットフォーム間や実装間の移植性が制限される可能性があります。j2se 要素の initial-heap-size と max-heap-size の各属性を使用すると、初期ヒープサイズと最大ヒープサイズを設定できます。たとえば、次のようになります。

<j2se version="..." max-heap-size="100M"/>

トップに戻る

サーバのタイムスタンプに依存したくありません。バージョン化された JAR を指定するにはどうしたらよいですか。また、JAR の増分更新を入手するにはどうしたらよいですか ?

Java Web Start では、バージョン化された JAR と増分更新をサポートしています。更新が利用できるかどうかを調べる場合は、タイムスタンプ情報に頼るのではなく、必要な JAR ファイルの正確なバージョンを指定できます。また、バージョン ID を使用すると、あるバージョンから別のバージョンに増分更新を提供できます。詳細は、JNLP 仕様または開発者ガイドを参照してください。
トップに戻る

JAR ファイルはアプリケーション間で共有されますか ?

JNLP クライアント (Java Web Start など) がダウンロードする各 JAR ファイルは、URL によって一意に識別されます。2 つの JNLP ファイルが同じ URL を使用する場合、リソースは 1 度だけダウンロードされ、共有されます。これは、Web ブラウザで使用されるキャッシュ実装と似ています。
トップに戻る

独自のスプラッシュ画面を提供するにはどうしたらよいですか ?

最初のスプラッシュ画面は、Java のロード中に Java Web Start が用意する必要があります。そのあとのアクセスでは、ユーザが次のタグを使ってスプラッシュ画面に使用するイメージファイルを JNLP ファイルに指定できます。

<icon href="mysplash.jpg" kind="splash"/> 

ここで、mysplash.jpg はユーザのスプラッシュ画面のイメージファイルです。 最初にアプリケーションが実行されるときは、標準のスプラッシュ画面が使用されます。そのあとは、指定したイメージが使用されます。
トップに戻る

ローカルシステムでアプリケーション状態を保存するにはどうしたらよいですか ?

サンドボックス内で実行されるアプリケーションは、PersistenceService API を使って状態を格納できます。この API は、HTML ページの cookie に似ています。したがって、これはクライアントコンピュータで持続的な情報を格納する安全な方法です。詳細は、次のサイトを参照してください。

トップに戻る

私のアプリケーションには特定のバージョンの JRE が必要です。この JNLP ファイルを指定するにはどうしたらよいですか ?

タグ <j2se version="versionNum"> は、プラットフォームのバージョンを示します。ここで、versionNum は 1.2、1.3、1.4、または 1.5 です。

特定の製品バージョンを要求するには、href 属性にベンダーの URL を組み込みます。Sun の JRE の場合、URL は http://java.sun.com/products/autodl/j2se となります。たとえば、次の J2SE タグは Sun 1.3.1 の実装を要求しています。

<j2se version="1.3.1*" href="http://java.sun.com/products/autodl/j2se"/>
 

Java コントロールパネルの [Java] タブに、インストールされている JRE のすべてのバージョンが表示されます。
トップに戻る

マニフェストファイルの Class-Path を信頼できますか ?

Java Web Start では、マニフェストファイルの Class-Path エントリをサポートしていません。Class-Path 属性は完全にファイル中心であるのに対し、Java Web Start と JNLP は Web 中心 (URL ベース) です。このため、2 つのモデルを 1 つにまとめるのは簡単ではありません。

Class-Path エントリに頼るのではなく、JNLP ファイルに含まれる複数の JAR ファイルの一覧を表示できます。次に例を示します。

<resources>
<jar href="A.jar"/>
<jar href="B.jar"/>
</resources>

JNLP ファイルでは、<extension... > 要素を使用して、1 組の JAR ファイルとの依存関係を別の JNLP ファイルに分けることができます。このため、Class-Path エントリを使用した場合と同様に再利用しやすく、保守も簡単に行えます。この機能については、JNLP の仕様に説明されています。

JNLP は、アプレットと同様に、Just-in-Time ダウンロード機構も実装します。JNLP ファイル内のリソースごとに、どの部分のダウンロードをすぐに行うか、あとで行うかを指定できます。すぐにロードするリソースはアプリケーションが起動される前にロードされ、あとでロードするリソースはしばらくたってからロードされます。 デフォルトでは、すぐにダウンロードされます。さらに、仕様には、どのリソースが利用できるかをプログラムによって Java Web Start に問い合わせ、利用できるリソースをダウンロードするように要求するための API も含まれています。したがって、ダウンロード/ネットワーク対応のアプリケーションを作成できます。

詳細は、「JNLP 仕様」を参照してください。
トップに戻る

アプリケーションがネイティブコードに依存しているか、それを使用している場合でも Java Web Start を使用できますか ?

Java Web Start を使用して、DLL や SO などのネイティブコードに依存する Java テクノロジベースのアプリケーションを配備できます。必要なネイティブライブラリを指定するには、<nativelib ...> 要素を使用します。詳細は、開発者ガイドを参照してください。
トップへ戻る

Class.forName と ClassLoader.getSystemClassLoader を使用してアプリケーション内部にリソースをロードするにはどうしたらよいですか ?

Java Web Start では、ユーザレベルのクラスローダを使用して、JNLP ファイルに指定されたすべてのアプリケーションリソースをロードします。このクラスローダによって、JNLP 仕様で定義されたセキュリティモデルとダウンロードモデルが実装されます。これは、 AppletViewer や Java Plug-In の動作と変わりありません。

ただし、このクラスローダには、Class.forName が JNLP ファイルに定義されているリソースを検索しないという残念な副作用があります。システムクラスローダ (ClassLoader.getSystemClassLoader) を使用してリソースやクラスを検索する場合も同様です。

Java Web Start でアプリケーションリソースを見つけるには、アプリケーションをロードしたクラスローダを使用します。たとえば、アプリケーションのメインスレッド内で次のメソッドを呼び出します。

this.getClass().getClassLoader();

次のメソッドも使用できます。

Thread.getCurrent().getContextClassLoader();
トップへ戻る

コマンド行から Java Web Start を起動するにはどうしたらよいですか ?

Java Web Start は、次のようにコマンド行から起動できます。

javaws [options] your-app-JNLP-URL

ここで、your-app-JNLP-URL はアプリケーションの JNLP ファイルの位置です。 たとえば、次のようになります。

javaws http://java.sun.com/products/demos/swingset2.jnlp 

コマンド行の構文の詳細については、開発者ガイド
を参照してください。トップへ戻る

異なる証明書によって署名された複数の JAR ファイルを使用するにはどうしたらよいですか ?

JNLP 1.0 仕様では、1 つの JNLP ファイルで使用される JAR ファイルはすべて同じ証明書で署名される必要があります。この制限により、ユーザは同じソースから複数の証明書を受け取る必要がなくなり、また Java Web Start ではユーザがアプリケーションに使用されたすべての証明書を受け取ったかどうかを確認できます。

ただし、Java Web Start では、コンポーネント拡張機能機構と複数の JNLP ファイルを使用することにより、異なる証明書で署名された複数の JAR ファイルを使用できます。 その場合は、JAR ファイルに異なるパッケージのコードを含める必要があるだけです。 したがって、次のように指定するのではなく、

<jar href="myjar1.jar"/>
<jar href="jh.jar"/> 

次のように指定します。

<jar href="myjar1.jar"/>
<extension name="Java Help" href="help.jnlp"/> 

次に、以下の内容を含む help.jnlp ファイルを追加します。

<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0+"
codebase="http://ws503" href="Help.jnlp">
<information>
<title>JavaHelp</title>
<vendor>Sun Microsystems, Inc.</vendor>
</information>
<resources>
<jar href="jh.jar"/>
</resources>
<component-desc/>
</jnlp> 

トップに戻る

Java Web Start がインストールされているかどうかを調べるにはどうしたらよいですか ?

Java Web Start がインストールされているかどうかを調べる場合は、簡単な JavaScript または VBScript を作成できます。詳細は、開発者ガイドを参照してください。
トップへ戻る

なぜブラウザに JNLP ファイルがプレーンテキストとして表示されるのですか ?

これは、ほとんどの場合、Web サーバが JNLP ファイルの適切な MIME タイプを認識していないために発生します。Java Web Start では、Web サーバに 1 つだけ変更を加える必要があります。つまり、ファイル拡張子 (通常は jnlp) と MIME タイプ application/x-java-jnlp-file との関連付けを作成する必要があります。このための手順は、使用している Web サーバによって異なります。

さらに、企業がプロキシサーバを使用している場合は、必ず JNLP ファイルの更新版が返されるようにします。このためには、プロキシがそのキャッシュを更新するなど、Web サーバ上のリソースのタイムスタンプを更新します。
トップに戻る

なぜ Java Web Start は常に JAR ファイルを IIS サーバから再ロードするのですか ?

IIS サーバ上のファイルのタイムスタンプが未来を指している場合、IIS は現在の時刻を最終更新時刻として返します。これにより、タイムスタンプが常に新しくなるので、Java Web Start は JAR を再ロードします。
トップに戻る

JnlpDownloadServlet で Pack200 圧縮を使用できますか ?

はい。JDK のサンプル用のディレクトリで配布された JnlpDownloadServlet は Pack200 をサポートするようになりました。yourfile.jar を yourfile.jar.pack.gz とともに配置した場合は、クライアントが Java Web Start 1.5.0 以上を実行しているときに圧縮されたファイルがダウンロードされます。
トップに戻る

アプリケーションのインスタンスを 1 つだけ確実に実行する最良の方法は何ですか ?

アプリケーションが起動したら、すぐに SingleInstanceService を使用して唯一のインスタンス (singleton) として登録します。唯一のインスタンスとして登録する前にアプリケーションを再度呼び出すと、別の Java VM が起動します。

プログラムを終了する前に必ず登録を解除してください。
トップへ戻る

JNLP ファイル内のプロパティはいつ設定されるのですか ?

通常、JNLP ファイル内のプロパティは、その JNLP ファイルに示されている最初のリソースがロードされるまで設定されません。これにより、プロパティはいずれかのコードが実行される前に必ず設定されますが、プロパティの中には他のパッケージがロードされる前に設定する必要があるものもあります。一部のプロパティは Java Web Start によって「安全」とみなされ、JNLP メインファイル内で見つかると、呼び出し側の VM に引数として渡されます (-Dname=value) 。

このバージョンの「安全な」プロパティの一覧については、開発者ガイドを参照してください。
トップへ戻る

ダウンロードされた JNLP ファイルに対してファイルが見つからないというメッセージが表示される原因は何ですか ?

JNLP ファイルをクリックすると、Internet Explorer によってそのファイルがダウンロードされ、 Java Web Start が起動しますが、次のメッセージが表示されます。「Could not load file/URL specified:C:\Documents and Settings\...\application[1].jnlp」

この問題は、Internet Explorer でのみ発生します。この問題はキャッシュが一杯の場合や IE でキャッシュをオフにした場合に発生することがありますが、通常は Web サーバかプロキシサーバからキャッシュ禁止 (no-cache) 指示が出された場合に発生します。IE はこの指示を受けて JNLP ファイルをディスクに書き込まないため、Java Web Start はファイルを見つけることができません。この問題は、Tomcat ベースのサーバをアップグレードするときに頻繁に発生します。以降のバージョンでは、web.xml の セキュリティ制約の範囲内にあるリソースに対して、デフォルトでキャッシュ禁止 (no-cache) 指示が設定されます。関連する URI が web.xml のセキュリティ制約を受けないようにしてください。
トップへ戻る

ほかの目的で署名された署名付き jar (JCE 拡張機能など) を使用するにはどうしたらよいですか ?

Java Web Start 1.5.0 以降、jar への署名を何倍にも増やして、コード署名証明書を他の既存の証明連鎖に追加できます。以前のバージョンでは、jar を完全なアクセス権 (all-permissions) を持たないコンポーネント拡張機能として実行するか、コード署名証明書を追加する前に既存の証明書を削除する必要がありました。(多くの場合、そのパッケージは操作不能になりました。)
トップへ戻る

なぜ Gnome を採用した一部の Linux プラットフォームでは関連付け機能を使用できないのですか ?

関連付け機能には、特に libgnomevsf-2.so が必要です。このライブラリがない場合、関連付けはサポートされません。
トップへ戻る

JNLP の MIME タイプを伝送するようにサーバを設定するにはどうしたらよいですか ?

MIME タイプを追加する方法は、Web サーバごとに異なります。たとえば、Apache Web サーバの場合、.mime.types 設定ファイルに次の行を追加する必要があります。

application/x-java-jnlp-file JNLP

お使いの Web サーバの詳細については、付属のマニュアルを参照してください。
トップに戻る

JnlpDownloadServlet を使用するようにサーバを設定するにはどうしたらよいですか ?

開発者ガイドのサーブレットの設定方法に関する節を参照してください。アプリケーションを Web アーカイブにパッケージ化する必要はありません。
トップへ戻る

アプリケーションを一意に識別するにはどうするのですか ?

アプリケーションは通常その href (その JNLP ファイルへの URL) によって識別されます。JNLP ファイルへの href がない場合、アプリケーションはその jar メインファイルへの href によって識別されます。複数のアプリケーションが同じ jar メインファイルを共有している場合は、それらのアプリケーションに href を 1 つだけ指定する必要があります。そうしないと、それらは同じアプリケーションとみなされます。

バージョン 1.5.0 以上では、Java アプリケーションキャッシュビューアにすべてのアプリケーション (href が指定されていないアプリケーションも含む) が表示されます。このビューアでは、href が指定されているアプリケーションのみをオンラインで起動できます。href が指定されていないアプリケーションは、JNLP ファイルの許可があれば (JNLP ファイルに <offline-allowed> が指定されていれば)、オフラインで起動できます。

以前のバージョンでは、アプリケーションマネージャに href が指定されているアプリケーションのみが表示されます。

ショートカットを作成する場合も同様です。1.5.0 では、href が指定されている場合にのみオンラインで起動するショートカットを作成でき、<offline-allowed> が指定されている場合にのみオフラインのショートカットを作成できます。1.4.2 では、href が指定されているアプリケーションのショートカットのみを作成できます。
トップへ戻る

セキュリティに関する質問

Java Web Start のセキュリティ保護はどのように行われているのですか ?

セキュリティは、Java Web Start を設計する上で考慮すべき重要なポイントの 1 つです。 Java Web Start では、すべてのアプリケーションがデフォルトで安全な「サンドボックス (sandbox)」で起動されます。
トップに戻る

安全なサンドボックス (sandbox) とは何ですか ?

安全なサンドボックスにあるアプリケーションは、ディスクやネットワークなどのローカルのコンピューティングリソースへのアクセスが制限されます。
トップに戻る

Java Web Start の安全なサンドボックスはアプレットのサンドボックスに比べてどのくらい柔軟性が高いのですか ?

アプレットのサンドボックスと同様に、すべてのアプリケーションはデフォルトではサンドボックス環境で実行されます。ただし、Java Web Start には安全な API が用意されており、アプリケーションはそれを使用してユーザの制御下にあるローカルディスクからファイルをインポートしたりエクスポートしたりできます。この API には、ファイルの保存やファイルのオープンといった操作用のダイアログボックスがありますが、それらのダイアログボックスは実際にはアプリケーションそのものではなく、Java Web Start によって描画されます。

このサンドボックスのデザインは、HTML を使用して作成できるものと似ています。HTML 形式のファイル入力フィールドを使用すると、ローカルディスクからファイルを取り出し、名前 (パスを除く) とコンテンツを Web  サーバーに送信できます。同様に、ほとんどのブラウザでは「名前をつけて保存 (Save as...)」オプションをサポートしています。
トップに戻る

アプリケーションがシステムに対する無制限のアクセス権を取得できるようにするにはどうしたらよいですか ?

無制限のシステムアクセスを要求するアプリケーションには、デジタル署名が必要です。そのようなアプリケーションを最初に起動すると、セキュリティ用のダイアログボックスが表示されます。Java Web Start では、アプリケーションを実行する前に、デジタル証明書に同意するようユーザに要求します。ユーザが証明書に同意すると、そのあとの呼び出しではセキュリティ用のダイアログボックスは表示されなくなります。
トップに戻る

JAR ファイルの暗号化されたダウンロードはサポートされていますか ?

サーバからクライアントに転送されるデータの暗号化をサポートすることは非常に重要です。これは、今後の課題として重要なポイントの 1 つであり、Java Web Start で起動されるアプリケーションで HTTPS ライブラリを確実に使用できるようにする予定です。HTTPS はオプションパッケージでサポートされることがあり、その場合はアプリケーションが依存していることを指定する必要があります。

サーバからクライアントに転送される JAR ファイルの暗号化は必要ないかもしれません。なぜなら、クラスファイルが回線上で暗号化されている場合でも、クライアント側で複号化してディスクに格納する必要があるため、JVM はそれらのクラスをロードできるからです。したがって、クラッカーが JAR ファイルの暗号化をすり抜けるのは非常にたやすいことである可能性があります。

その代わりに、JAR ファイルにとって重要なことは、ファイルを署名付きにして、想定されているベンダーからアプリケーションが確実に入手されるようにすることです。これはすでにサポートされています。
トップに戻る

Java Web Start で NTLM 認証を使用できますか ?

NTLM のサポートは、Windows プラットフォームでのみ Java 1.4.2 に追加されました。NTLM 認証は、Java Web Start 1.4.2 以上で使用できます。Java Web Start 1.4.2 で NTLM を使用しているときに、JAuthenticator ダイアログに誤ったテキストが表示されることがありますが、これは Java Web Start 1.5.0 で修正されました。
トップへ戻る

Java Web Start で HTTPS プロトコルを使用できますか ?

HTTPS のサポートは、バージョン 1.4 の Java に追加されました。バージョン 1.2 以上で HTTPS プロトコルを Java Web Start のリソースに使用できますが、いくつかの問題が発生することがあります。Java Web Start 1.4.2 では、これらの問題が解決されているので、HTTPS プロトコルを使用する場合は、Java Web Start 1.4.2 以上を使用することをお勧めします。
トップへ戻る

セキュリティツールに関する詳細情報を得るためのオンラインリソースはありますか ?

次のサイトを参照してください。

トップに戻る

既知のバグ

4825415: 1.4.2 では Java Web Start のデスクトップ統合とセキュリティのダイアログが表示されない

バージョン 1.4.2 のみ。

この問題は、デスクトップ統合ダイアログが、アプリケーションによって表示されたモーダルダイアログとフォーカスをめぐって競合するか、別のアプリケーションウィンドウの背後で消失した場合に発生します。

この問題は、バージョン 1.4.2_06 および 5.0 で修正されました。
トップへ戻る

4491398: DLL リソースの依存に関する問題

すべてのバージョン。

複数のネイティブライブラリがある場合は、System.LoadLibrary で各ライブラリをロードしてから、それを参照する他のライブラリをロードする必要があります。ライブラリの依存関係が循環している場合は、この操作が不可能になることがあります。
トップへ戻る

5008460: パスに空白が含まれ、TraceSecurity がオンになっている場合に Java Web Start が失敗する

バージョン 1.2 および 1.4.2。

TraceSecurity がオンになっている場合、キャッシュディレクトリへのパスに空白が含まれていると、Windows プラットフォームで例外が発生することがあります。この問題が発生した場合は、TraceSecurity デバッグスイッチ (<property name=”javaws.debug.0” name=”-TraceSecurity” />) をオフにします。

この問題は、バージョン 5.0 で修正されました。
トップへ戻る

5074087: Windows で related-content が title を付けずに指定された場合、アプリケーションが起動できない

バージョン 5.0。

JNLP ファイルの仕様では、title サブ要素を付けないで related-content 要素を指定することができます。ただし、Windows プラットフォームでこの操作を行った場合、関連コンテンツへのショートカットがインストールされると、例外がスローされて、プログラムが実行できません。この問題を解決するには、related-content 要素の title を必ず指定するようにします。
トップへ戻る

5074524: 署名のない拡張機能の最初の jar はすぐにダウンロードしなければならない

すべてのバージョン。

コンポーネント拡張機能を使用する場合は、それに含まれる最初の jar を、遅延のマークが付いていても、すぐにダウンロードする必要があります。
トップへ戻る

5047548: パッケージが含まれる部分の遅延ダウンロードが機能しない

すべてのバージョン。

パーツおよびパッケージ機構を使用して、どの jar ファイルにどのパッケージを含めるかを宣言した場合は、宣言されたどのパッケージにも存在しないリソースにアクセスしたときに、宣言された遅延 jar のダウンロードをスキップできなければなりません。この操作は機能しません。また、Jar インデックスが実装されていない場合は、すべての jar がダウンロードされないようにする方法はありません。
トップへ戻る

5074526: アプリケーションが署名付きの場合でも、ExtenededService ファイルの API にセキュリティ用のダイアログが表示される

バージョン 5.0。

FileOpen サービスを使用しているときは、アプリケーションにファイルアクセス権がない場合にのみセキュリティ用のダイアログが表示されます。ただし、新しい ExtendedService OpenFile や OpenFiles メソッドを使用する場合はこれが当てはまらず、セキュリティ用のダイアログがどうしても表示されてしまいます。
トップへ戻る

4925768: Gnome ではシステムレベルのショートカットがサポートされていない

バージョン 5.0。

アプリケーションをショートカット付きでシステムキャッシュにインポートするか、キャッシュビューアをシステムモードで実行してショートカットを作成する場合。ショートカットは、すべてのユーザ向けに作成する必要があります。Windows ではこれを行えますが、Gnome を採用している UNIX では行えません。
トップへ戻る

5072969: 起動エラーによって Java Web Start がハングアップしたように見える

すべてのバージョン。

Java Web Start によって例外や他の Throwable がキャッチされない場合。メインの run メソッドが System.exit() を呼び出さないで終了した可能性があります。これによってアプリケーションがハングアップしているように見えます (場合によっては、進行状況を示さない DownloadProgress のウィンドウが表示されることがあります)。

1.4.2 では、アプリケーションまたは Java Web Start がエラー (NoSuchMethodError など) をスローしたときにこの問題が発生することがあります。ファイルへのロギングをオンにし、<property name=”javaws.debug.0” value=”+TraceIgnoredExceptions” /> で実行してエラーを確認する必要があります。

5.0 では、アプリケーションの主要なクラス内の静的コードがエラー (NoSuchMethodError など) をスローした場合にのみこの問題が発生します。
トップに戻る

5074530: Java Web Start が正しい JRE を選択していない

すべてのバージョン。

Java Web Start では、JNLP ファイル内に j2se 要素のバージョン属性の要件を満たしている複数の JRE を見つけた場合は、必ず一致する最新のバージョンを使用する必要があります。

1.4.2 では通常、最初に見つかった一致するバージョンを使用します。

5.0 では通常、最新のバージョンを使用しますが、ある特定の環境の下では以前のバージョンを使用することもあります。
トップへ戻る