Java Web Startは、プラットフォームに依存しない安全かつ強固な配備用テクノロジを提供します。これにより、開発者はフル機能のアプリケーションを標準のWebサーバーで使用できるようにすることで、アプリケーションをエンド・ユーザーに配備できます。Webブラウザがあれば、エンド・ユーザーはアプリケーションを起動するだけで、常に最新のバージョンを安心して利用できます。
トップに戻る
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バージョン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では、クライアントとサーバーとの通信にHTTPを使用します。標準のWebサーバーをアプリケーションのホストとして使用できます。その他のサービス(バージョン・ベースのダウンロード、増分更新、アプリケーションのpack200圧縮など)が必要な場合は、WebサーバーでサーブレットやJava Server Pagesをサポートする必要があります。これらの機能を実装するサーブレットの例がJDKのサンプル用のディレクトリに収められています。
トップに戻る
はい。Java Web Start 1.5.0は、Java Community Processを通じて開発されたJava Network Launching Protocol (JNLP)テクノロジの製品品質のリファレンス実装です。JNLPは、仕様番号JSR 056です。ほかのプラットフォーム・ベンダーは、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ディスカッション・フォーラム: Oracle Forum Home
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サーバーからクライアント・マシンに簡単に配布できます。
ソフトウェア配布テクノロジは、Java Web Startの1つの局面にすぎません。これは、セキュリティ、アプリケーションへの更新、エンド・ユーザーにとっての使いやすさ、開発者がアプリケーションを作成するときの柔軟性も備えています。
トップに戻る
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プラットフォーム用に作成し、一組のJARファイルとして配布する場合は、アプリケーションを修正する必要はありません。Java Web Startはpublic static void main(String[] args)メソッドを呼び出してアプリケーションを起動するため、必ずアプリケーションがJARファイルからすべてのリソース(イメージやリソース・バンドルなど)を取り出すようにしてください。
アプリケーションにシステムに対する無制限のアクセス権(ネットワークやディスクへのアクセス権)が必要な場合は、コードに署名する必要があります。
トップに戻る
Java Web Startは、主としてアプリケーションの配備用に設計されています。アプリケーションの要件はすべてJNLPファイルに指定し、ユーザーは介入しません。これには、従来のAppletViewerとほとんど同じ方法でアプレットを起動する機能があります。この組込み型のAppletViewerを使えば、Java Web Startを必要とする既存のアプレットを簡単に移行できます。ただし、この機能はPlug-inを完全に実装するためのものではありません。Plug-inは、アプレットの主要な起動手段です。Java Web Startに含まれる組込み型のAppletViewerには、クラス・ファイルをリソースとして指定できないことやポリシー・ファイルを受け入れないなどの制限があります。
トップに戻る
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仕様または開発者ガイドを参照してください。
トップに戻る
JNLPクライアント(Java Web Startなど)がダウンロードする各JARファイルは、URLによって一意に識別されます。2つのJNLPファイルが同じURLを使用する場合、リソースは一度だけダウンロードされ、共有されます。これは、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を組み込みます。OracleのJREの場合、URLはhttp://javadl.sun.com/webapps/jawsautodl/AutoDL/j2seとなります。たとえば、次のJ2SEタグはSun 1.3.1の実装を要求しています。
<j2se version="1.3.1*" href="http://javadl.sun.com/webapps/jawsautodl/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... >要素を使用して、一組のJARファイルとの依存関係を別のJNLPファイルに分けることができます。このため、Class-Pathエントリを使用した場合と同様に再利用しやすく、保守も簡単に行えます。この機能については、仕様の中で説明されています。
JNLPは、アプレットと同様に、Just-in-Timeダウンロード・メカニズムも実装します。JNLPファイル内のリソースごとに、どの部分のダウンロードをすぐに行うか、あとで行うかを指定できます。即時ロードされるリソースはアプリケーションが起動される前にロードされ、遅延ロードされるリソースはしばらくたってからロードされます。デフォルトは、即時ダウンロードです。さらに、仕様には、どのリソースが利用できるかをプログラムによってJava Web Startに問い合わせ、利用できるリソースをダウンロードするように要求するためのAPIも含まれています。したがって、ダウンロード/ネットワーク対応のアプリケーションを作成できます。
アプリケーションがネイティブ・コードに依存しているか、それを使用している場合でも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ファイルの位置です。たとえば、次のコマンドは、(Javaチュートリアルから)Dynamic Tree Demoアプリケーションを起動します。
javaws http://docs.oracle.com/javase/tutorialJWS/deployment/webstart/ex6/webstart_ComponentArch_DynamicTreeDemo/dynamictree-webstart.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サーバーによって異なります。
さらに、企業がプロキシ・サーバーを使用している場合は、必ずファイルの更新版が返されるようにします。このためには、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ファイルに示されている最初のリソースがロードされるまで設定されません。これにより、プロパティはいずれかのコードが実行される前に必ず設定されますが、プロパティの中にはほかのパッケージがロードされる前に設定する必要があるものもあります。一部のプロパティは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が指定されているアプリケーションのショートカットのみを作成できます。
トップに戻る
JNLPアプリケーションに関連付ける複数のファイル拡張子やMIMEタイプはどのように作成するのですか。
JNLPアプリケーションへ関連付ける複数のファイル拡張子やMIMEタイプを作成する場合、複数の関連タグを使用することをお薦めします。また、各関連タグには、ファイル拡張子とMIMEタイプの両方を指定する必要があります。たとえば、
<association extensions="aaa" mime-type="x-application/aaa"/> <association extensions="bbb" mime-type="x-application/bbb"/>トップに戻る
ネイティブ・コードからFindClass()を呼び出すと失敗することがあるのはなぜですか。
EventDispatch Threadで呼び出されるjniコードがfindClass()を呼び出す場合、失敗する可能性があります。詳細は、FindClass関数を参照してください。
Java Web Startのセキュリティ保護はどのように行われているのですか?
セキュリティは、Java Web Startを設計する上で考慮すべき重要なポイントの1つです。 Java Web Startでは、すべてのアプリケーションがデフォルトで安全な「サンドボックス」で起動されます。
トップに戻る
安全なサンドボックスにあるアプリケーションは、ディスクやネットワークなどのローカルのコンピューティング・リソースへのアクセスが制限されます。
トップに戻る
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のリソースに使用できますが、Web Start 1.4.2で対処されたいくつかの問題の1つが発生することがあります。HTTPSプロトコルを使用する場合は、Java Web Start 1.4.2以上を使用することをお薦めします。
トップに戻る
セキュリティ・ツールに関する詳細情報を得るためのオンライン・リソースはありますか?
次のサイトを参照してください。
4825415: 1.4.2ではWeb Startのデスクトップ統合とセキュリティのダイアログが表示されない
バージョン1.4.2のみ。
この問題は、デスクトップ統合ダイアログが、アプリケーションによって表示されたモーダル・ダイアログとフォーカスをめぐって競合するか、別のアプリケーション・ウィンドウの背後で消失した場合に発生します。
この問題は、バージョン1.4.2_06および1.5で修正されました。
トップに戻る
すべてのバージョン。
複数のネイティブ・ライブラリがある場合は、System.LoadLibraryで各ライブラリをロードしてから、それを参照するほかのライブラリをロードする必要があります。ライブラリの依存関係が循環している場合は、この操作が不可能になることがあります。
トップに戻る
5008460: パスに空白が含まれ、TraceSecurityがオンになっている場合にWeb Startが失敗する。
バージョン1.2および1.4.2
TraceSecurityがオンになっている場合、キャッシュ・ディレクトリへのパスに空白が含まれていると、Windowsプラットフォームで例外が発生することがあります。この問題が発生した場合は、TraceSecurityデバッグ・スイッチ(<property name=”javaws.debug.0”name=”-TraceSecurity”/>)をオフにします。
この問題は、バージョン1.5で修正されました。
トップに戻る
5074087: Windowsでrelated-contentがtitleを付けずに指定された場合、アプリケーションが起動できない。
バージョン1.5.0。
JNLPファイルの仕様では、titleサブ要素を付けないでrelated-content要素を指定できます。ただし、Windowsプラットフォームでこの操作を行なった場合、関連コンテンツへのショートカットがインストールされると、例外がスローされて、プログラムが実行できません。この問題を回避するには、related-content要素のtitleを必ず指定するようにします。
トップに戻る
5074524: 署名のない拡張機能の最初のjarはすぐにダウンロードしなければならない。
すべてのバージョン。
コンポーネント拡張機能を使用する場合は、それに含まれる最初のjarを、遅延のマークが付いていても、すぐにダウンロードする必要があります。
トップに戻る
5047548: パッケージが含まれる部分の遅延ダウンロードが機能しない。
すべてのバージョン。
パーツおよびパッケージ・メカニズムを使用して、どのjarファイルにどのパッケージを含めるかを宣言した場合は、宣言されたどのパッケージにも存在しないリソースにアクセスしたときに、宣言された遅延jarのダウンロードをスキップできなければなりません。この操作は機能しません。また、Jarインデックスが実装されていない場合は、すべてのjarがダウンロードされないようにする方法はありません。
トップに戻る
5074526: アプリケーションが署名付きの場合でも、ExtenededServiceファイルのAPIにセキュリティ用のダイアログが表示される。
バージョン1.5.0。
FileOpenサービスを使用しているときは、アプリケーションにファイル・アクセス権がない場合にのみセキュリティ用のダイアログが表示されます。ただし、新しいExtendedService OpenFileやOpenFilesメソッドを使用する場合はこれが当てはまらず、セキュリティ用のダイアログがどうしても表示されてしまいます。
トップに戻る
4925768: Gnomeではシステム・レベルのショートカットがサポートされていない。
バージョン1.5.0。
アプリケーションをショートカット付きでシステム・キャッシュにインポートするか、キャッシュ・ビューアをシステム・モードで実行してショートカットを作成する場合。ショートカットは、すべてのユーザー向けに作成する必要があります。Windowsではこれを行えますが、Gnomeを採用しているSolaris、Linux、またはMac OS Xでは行えません。
トップに戻る
5072969: 起動エラーによってWeb Startがハング・アップしたように見える。
すべてのバージョン。
Java Web Startによって例外やほかのThrowableがキャッチされない場合。メインのrunメソッドがSystem.exit()を呼び出さないで終了した可能性があります。これによってアプリケーションがハング・アップしているように見えます(場合によっては、進行状況を示さないDownloadProgressのウィンドウが表示されることがあります)。
1.4.2では、アプリケーションまたはJava Web Startがエラー(NoSuchMethodErrorなど)をスローしたときにこの問題が発生することがあります。ファイルへのロギングをオンにし、<property name=”javaws.debug.0”value=”+TraceIgnoredExceptions”/>で実行してエラーを確認する必要があります。
1.5.0では、アプリケーションの主要なクラス内の静的コードがエラー(NoSuchMethodErrorなど)をスローした場合にのみこの問題が発生します。
トップに戻る
5074530: Web Startが正しいJREを選択していない。
すべてのバージョン。
Java Web Startでは、JNLPファイル内にj2se要素のバージョン属性の要件を満たしている複数のJREを見つけた場合は、必ず一致する最新のバージョンを使用する必要があります。
1.4.2では通常、最初に見つかった一致するバージョンを使用します。
1.5.0では通常、最新のバージョンを使用しますが、ある特定の環境の下では以前のバージョンを使用することもあります。
トップに戻る