Java Web Start Version 6 の拡張機能


「policy」および「check」属性を持つ、新しい <update> 要素がサポートされました。 update 要素には、Java Web Start が Web 上で更新をチェックする方法、および起動前に更新が入手可能であることがわかった場合の動作に関するアプリケーション設定を指定します。
以前のバージョンの Java Web Start では、<offline-allowed> 要素が多重定義されていて、次のような状態でした。:  1.「オフライン」モードでのアプリケーション実行が許可されていた(アプリケーションをオフラインモードで実行するには、コマンド行に「-offline」引数を追加するか、キャッシュビューアを使用する)。2. アプリケーション (オフラインモードで実行されていない場合) の起動前に、更新のチェックがタイムアウトできた。 更新のチェックがタイムアウトした場合、アプリケーションはキャッシュから起動され、更新のチェックがバックグラウンドで続行されます。
6.0 では、<update> 要素および check 属性の登場に伴い、<offline-allowed> 要素は後者の意味を持たなくなりました。 デフォルト値は <update check="timeout"/> で、この動作は以前のバージョンで <offline-allowed> を指定した場合と同じです。 以前に <offline-allowed> を省略した場合に行った動作を再現するには、<update check="always"/> を指定する必要があります。バックグラウンドで更新をチェックしながら、キャッシュから常に即時起動する場合は、3 番目の値 <update check="background"/> を指定できます。2 番目の属性「policy」を使用して、アプリケーションの起動前に更新が入手可能であることがわかっている場合の動作を指定します。 常に更新を取得することも、ユーザーに指定を求めることもできます。policy 属性値には、「always」(デフォルト)、「prompt-update」、「prompt-run」 のいずれかを指定できます。
以前のバージョンでは、API に引数として渡すことのできる URL は、API の種類にかかわらず、実行中のアプリケーションの jnlp ファイルに記述されたリソースへの URL に限られていました。 この制限が変更され、署名され信頼されたコードに関しては制限がなくなりました。また、信頼されないコードに対する制限は、jnlp ファイルに記述されているかではなく、同じコードベースからのコードであるかで判断されるようになりました。
さらに、jnlp ファイル自体への URL が許可されるようになったため、DownloadService.removeResource() の呼び出しを使って、キャッシュからアプリケーション全体を削除したり、DownloadService.loadResource() を使ってアプリケーションをインポートしたりできるようになりました。
この変更により、いかなる jnlp ファイルにも記述されていないリソースをアプリケーションで使用できるようになります。 たとえば、ロケールを en_xx に設定すれば、使用可能なリソース jar を jnlp ファイルに記述しなくても、アプリケーションは DownloadService を使って resources_en_xx.jar をロードできます(サポートするロケールを、jnlp ファイルを変更せずに動的に追加することが可能)。
サンドボックスの定義の明確化も重要な仕様変更です。これは、デフォルトのサンドボックスのみを対象としており、その実装ではサンドボックスの許可しない操作をユーザーが自由に許可できます。 1.5.0 では、これが印刷に関して実現されていました。つまり、awt 内の通常の印刷 api を使用するだけで、サンドボックスを展開してアプリケーションからプリンタへのアクセスを許可することができました (ユーザーが同意した場合)。 6.0 では、これがソケット接続でも可能になりました。このため、信頼されないアプリケーションが url への接続を試みた場合でも、ユーザーは接続を許可するよう求められます。 

Java Web Start Version 6.0 以降でのみ使用される jnlp ファイルでは、<java> 要素を使用して <j2se> タグを置き換えることができます (主に、今は Java Platform Standard Edition が j2se とは呼ばれないため)。 下位互換性を維持するため、<j2se> タグは引き続き動作します。 <java> 要素は、<j2se> 要素と同一です。
Java Web Start アプリケーションとファイル拡張子および mime タイプとの関連付けの作成時に、アプリケーション用のデフォルトアイコンを使用するのではなく、関連付けごとに別個のアイコンを指定できるようになりました。 また、説明も指定できます。
JNLPClassLoader が書き換えられ、URLClassLoader の拡張となりました。 これには、いくつかの強力な利点があります。 
まず、Jar インデックスが完全にサポートされます。  複数の jar ファイルが存在し、すべての jar ファイルをインデックス化する jar インデックスをメイン jar ファイル内に作成する場合、追加する各 jar に遅延のマークを付けて、その内部のリソースまたはクラスが参照されるまでダウンロードされないようにできます。  これにより、古い part や package 要素が不要になり、遅延 jar が使用に先立ってダウンロードされないことが保証されます。
また、JNLPClassLoader が URLClassLoader を拡張するようになったため、アプリケーションは getURLs() を呼び出して jnlp ファイル内に記述されている jar 要素 (または jnlp ファイルに記述されていなくても、DownloadService API を使用してダウンロードされた jar 要素、前述の説明を参照) の一覧を取得できます。
また、ClassLoader.getResource() の呼び出しで返される URL が、ネット上の項目の適切な JAR URL になります。  以前のバージョンでは、返される URL はキャッシュ内の項目のファイル url の jar url でした。   URLClassLoader を拡張することにより、キャッシュされた場所 (存在する場合) は意味がなくなり、Java Web Start がキャッシュなしで動作することが可能になりました。
Java Web Start では、2 つのアイコン形式「.png」および「「.ico」が新たにサポートされます。 これにより、指定したアイコンを、用途に応じて異なる形式に変換する必要がなくなります。 また、「kind="shortcut"」も指定できるようになり、Java Web Start は幅と高さのヒント情報を参照するようになりました。たとえば、次のように指定したとしましょう。
<icon kind="shortcut" href="menushortcut.ico" width="16" height="16"/>
<icon kind="shortcut" href="desktopshortcut.ico" width="32" height="32"/>
この場合、作成されたデスクトップおよびメニューショートカットのすべてで、別個のイメージを指定できます (注:Java Web Start の使用するアイコンサイズは、デスクトップショートカットの場合はおよそ 32X32、メニューショートカットの場合はおよそ 16X16 である)。
Windows の「プログラムの追加と削除」内の Java Web Start アプリケーション用エントリに、jnlp ファイルの情報ブロックから取得した発行者、発行者の Web サイト、インストール日付、およびアプリケーションアイコンが含まれるようになりました。 
Java Web Start によって作成されたデスクトップショートカットでは、jnlp ファイル内の <description> 要素を使って、アプリケーションを説明するツールヒントが生成されるようになりました。
JnlpDownloadServlet に $$hostname  と $$sight の両方のマクロが含まれるようになりました。 拡張により、$$hostname マクロにはホスト名が含められます。   $$site マクロには、WAR コンテキスト部分なしの Web サイトアドレスが含められます。
セキュリティー保護された vm 引数とプロパティーの最新のリストについては、開発者ガイドを参照してください。

Java Web Start と Java Plug-in に共通の拡張機能

Java Web Start と Java Plug-in で表示されるすべてのダイアログおよび画面が、User Experience チームの協力のもとに再設計され、より使いやすく便利になりました。
Java Web Start と Java Plug-in 間で、キャッシュ機構およびダウンロードエンジン全体が再設計および統合されました。 
これにより、Java Plug-in のみで利用できた機能が Java Web Start で新たに利用可能になり、Java Web Start のみで利用できた機能が Java Plug-in で新たに利用できるようになりました。
注: キャッシュの形式は完全に変更されているため、決して憶測や推測で判断しないようにしてください。 キャッシュ形式が以前のままであることを前提とする既存のコードは、Java Web Start 用であれ、Java Plug-in 用であれ、動作しません。 Java Web Start キャッシュ内の既存のアプリケーションは、Java Web Start アプリケーションの初回実行時またはキャッシュビューアの起動時 (「javaws -viewer」を使用) にアップグレードされ、新規キャッシュ形式に変換されます。 同様に、Java Web Start をシステムモードで初めて起動するか、「javaws -system」を使って起動すると、システムキャッシュが新しい形式にアップグレードおよび変換されます。
Java 6 の AWT で追加された新しいモーダリティー機能を使用することで、アプリケーションにモーダルダイアログが表示されている場合でも、Java コンソールとの対話処理を実行できるようになりました。
Java Web Start および Java Plug-in が、証明書の検証用に CRL (Certificate Revocation Lists) および OCSP (Online Certificate Status Protocol) を新たにサポートするようになりました。
Java コントロールパネルに、デフォルトの SSL ハンドシェークプロトコルを選択するオプションが追加されました。
デフォルトでは SSLv3 および SSLv2 が設定されますが、あとでユーザーや企業が TSL に変更できます。