この章では、JDK 7での新規および変更されたデプロイメント機能の概要について説明します。
次の各項では、その改善点、および導入されたリリースについて説明します。
JDK 7u51リリースには、次の拡張機能が含まれています。
例外サイト・リスト機能は、最新のセキュリティ要件を満たさないJavaアプレットやJava Web Startアプリケーションを実行する方法をユーザーに提供します。例外サイト・リストに記載されたサイト上に動作するRIAは、適切なセキュリティ・プロンプトを表示して実行されることが許可されます。詳細は、第29章「例外サイト・リスト」を参照してください。
署名なしおよび署名付きのRIAは、セキュリティ・レベルがVery High
またはHigh
に設定されているとブロックされます。
セキュリティ・レベルがVery High
またはHigh
に設定されているときは、Permissions属性がメインJARファイルのJARファイル・マニフェストに含まれている必要があります。
JDK 7u45リリースには、次の拡張機能が含まれています。
ブラウザでのJavaアプレットおよびアプリケーションの実行時のセキュリティを向上させるために、JARファイル・マニフェストの属性を使用できます。Application-Name
属性を使用すると、RIAにセキュアなタイトルを指定できます。Application-Library-Allowable-Codebase
は、JNLPファイルまたはHTMLページがJARファイルと異なる場所にある場合に、RIAが起動されると予想される場所を識別します。The Caller-Allowable-Codebase
属性は、JavaScriptコードがRIA内のメソッドを呼び出すことができる場所を識別します。詳細は、第26章「セキュリティ用のJARファイル・マニフェストの属性」を参照してください。
Javaコントロール・パネルには、「次回から表示しない」オプションを選択した際に非表示にされたセキュリティ・プロンプトを復元するためのオプションがあります。Javaコントロール・パネルの「セキュリティ」タブの詳細は、20.4項「セキュリティ」を参照してください。
JDK 7u40リリースには、次の拡張機能が含まれています。
共通の実行環境を提供し、従業員がアクセスするアプリケーションを管理する企業では、デプロイメント・ルール・セット機能を使用すると、一部のアプリケーションにはセキュリティ・プロンプトなしで実行されることを許可し、その他のアプリケーションは自動的にブロックされるというルールを作成できます。この機能は、組織で内部的に使用されることを目的としています。詳細は、第28章「デプロイメント・ルール・セット」を参照してください。
RIAが起動されると、JREが期限切れになっているか、セキュリティ・ベースラインを下回っているかがチェックされます。そうなっている場合は、ユーザーに警告が表示され、そのJREをアップグレードする機会が与えられます。ユーザーのシステムの更新プロセスを管理する企業では、deployment.expiration.check.enabled
プロパティを設定することで、このチェックを抑止できます。詳細は、第21章「配備構成ファイルおよびプロパティ」を参照してください。
また、第24章「Rich Internet Application配備プロセス」では、RIAのデプロイメントがどのように処理されるかを確認できます。
JDK 7u25リリースには、次のセキュリティ拡張機能が含まれています。
JavaアプレットおよびJava Web Startアプリケーションが実行される前に、署名証明書が失効していないことがチェックされます。Javaコントロール・パネルの「詳細」オプションを設定すると、そのチェックが行われるかどうか、およびそのチェックに使用されるサービスを管理できます。デフォルトでは、すべての証明書がOCSPおよびCRLの両方を使ってチェックされるようになっています。詳細は、20.5.9項「証明書失効チェックを実行」および20.5.10項「次を使用した証明書失効のチェック」を参照してください。
Permissions
およびCodebase
は、承認されていないコードの再利用からRIAを守るために使用される、JARファイル・マニフェストの新しい属性です。これらの属性は、アプレットおよびJava Web Startアプリケーションの署名付きJARファイルで使用されます。これらの属性の詳細は、26.9項「RIAの転用の防止」を参照してください。Javaチュートリアルの「Deploying an Applet」および「Deploying a Java Web Start Application」レッスンの手順2と手順3には、これらの属性をマニフェストに含める方法が説明されています。
また、23.5項「セキュリティ・ダイアログ」にはRIAの起動時に表示されるプロンプトに関する情報が記載され、Javaチュートリアルのデプロイメントのベスト・プラクティスに関するトピックにはRIAをデプロイするための提案が記載されています。
このリリースには、JavaアプレットとJava Web StartアプリケーションであるRich Internet Application (RIA)を実行する際に役立つ、次のセキュリティ拡張機能が含まれています。
RIAは、RIAの初回起動時に実行を許可するようユーザーに求めるプロンプトを表示します。そのプロンプトには、アプリケーションの署名に使われた証明書、アプリケーションの場所、およびアプリケーションが要求するアクセスのレベルに関する情報が含まれています。ほとんどの場合、同じアプリケーションの次回以降の起動では、ユーザーはそれらのプロンプトをオフにできます。それらのプロンプトについては、「Javaからセキュリティ・プロンプトが表示される場合はどうすればよいですか。」を参照してください。
認識されている認証局が発行した証明書を使って署名されているRIAでは、ユーザーが1回クリックすれば、そのアプリケーションを実行できます。自己署名付きと署名なしのアプリケーションでは、その起動前にユーザーが追加の手順を実行する必要があります。そのため、最善のユーザー体験のためには、RIAを信頼できる証明書で署名してから、エンド・ユーザーに配備します。JARファイルの署名については、「Signing and Verifying JAR Files」を参照してください。
Javaコントロール・パネルで設定したセキュリティ・レベルやユーザーのJREバージョンによっては、自己署名付きまたは署名なしのアプリケーションの実行が許可されない場合があります。デフォルト設定の「高」では、ローカル・アプレット以外のすべてがセキュアなJREで実行されることが許可されます。ユーザーがセキュアでないJREを実行している場合は、認識されている認証局が発行した証明書で署名されているアプリケーションのみが実行を許可されます。
「低」および「カスタム」設定は使用できなくなりました。
詳細は、20章「セキュリティ」を参照してください。
サンドボックス・アプリケーション(以前は「署名なし」または「信頼できない」アプリケーションと呼ばれていた)は、セキュリティ・サンドボックスに制限されます。特権付きアプリケーション(以前は「署名付き」アプリケーションと呼ばれていた)は、ユーザーのシステムに無制限にアクセスできます。
JNLPを使って起動されるJava Web Startアプリケーション(アプレットを含む)の場合は、.jnlp
ファイル内のsecurity
要素を使ってアクセスのレベルを設定します。その要素が存在しない場合、アクセスはサンドボックスに制限されます。詳細は、「Security in Rich Internet Applications」を参照してください。
JNLPを使って起動されないアプレットの場合は、permissions
要素をapplet
またはobject
要素に追加して、アクセスのレベルをsandboxまたはall-permissionsに設定します。詳細は、「Deploying With the Applet Tag」を参照してください。
特権付きアプレット(サンドボックスの外側で実行されるアプレット)内のコードを呼び出すJavaScriptコードは、混合コードとして扱われます。署名付きJARファイルがTrusted-Library
属性でタグ付けされていない場合は、警告ダイアログが表示されます。詳細は、第27章「特権付きコードとサンドボックス・コードの混合」を参照してください。
JDK 7u10リリースには、次の拡張機能が含まれています。
ブラウザですべてのJavaアプリケーションを実行できないようにする機能。このモードは、Javaコントロール・パネルで、またはコマンド行インストール引数(Microsoft Windowsのみ)を使って設定できます。
ブラウザで実行される署名なしのアプレット、Java Web Startアプリケーション、および埋め込みJavaFXアプリケーションについて、適切なセキュリティ・レベルを選択する機能。4つのセキュリティ・レベルがサポートされています。この機能は、Javaコントロール・パネルで、またはコマンド行インストール引数(Microsoft Windowsのみ)を使って設定できます。
JREがセキュアでない(有効期限が切れているか、セキュリティ・ベースラインを下回っている)ため、更新する必要があることを警告する新しいダイアログ。
詳細は、第23章「Javaクライアントのセキュリティ・レベルの設定」および第20章「Javaコントロール・パネル」を参照してください。
このリリースには、OracleによるMac向けJREおよびJDKのリリースが含まれています。関連情報を次に示します。
このリリースで導入されたWeb配備アプリケーション用の機能強化を次に示します。
Java SEにJavaFXが含まれる: JDK 7 Update 2以降にはJavaFX SDKが含まれています。詳細は、JavaFX 2.0.2リリース・ノートを参照してください。
配備ツールキットを使用したJREとJavaFXの非ブロック・インストール: 配備ツールキットが必要なコンポーネントをダウンロードしてインストールする間、Webページは引き続きユーザー入力を受け入れます。詳細は、7052499を参照してください。
署名付きJARファイルのフットプリントの削減: このリリースで提供される新しい署名方式を使えば、すべてのJARエントリに個別に署名する代わりに、1つの大きなオブジェクトとしてJARファイルに署名できます。これにより、JARの合計サイズを最大10%節約できます。注: これらのJARを使用するためには、ユーザーはJRE 7 Update 2以降を実行する必要があります。7049193、および「パッケージ化」の項「JARファイルへの署名」(この項の情報はJava SEにも当てはまる)を参照してください。
署名付きアプリケーション用のJNLPファイルの証明書キャッシュの詳細: セキュリティを使用するアプリケーションの場合、バックグラウンドでアプリケーションをダウンロードしている間、ユーザーの承認を得るためにキャッシュ済みの証明書が即座にセキュリティ・ダイアログに表示されます。古いJREはこの機能を無視し、アプリケーションのダウンロード後に証明書情報を表示します。7049169、および「パッケージ化」の項「デプロイメント記述子への署名証明書の埋込み」(この項の情報はJava SEにも当てはまる)を参照してください。
キャッシュがデフォルトで有効にされる: Web Startモードで実行されるアプリケーション・コードのネットワーク・コンテンツのキャッシュが、デフォルトで有効になりました。これにより、アプリケーションのパフォーマンスが向上し、アプレットの実行モードとの一貫性も保てます。コンテンツの最新のコピーが確実に使用されるようにするには、アプリケーション内でURLConnection.setUseCaches(false)
を使用するか、あるいは要求ヘッダーCache-Control
の値no-cache
/no-store
を使用できます。
Web Startでの埋め込みJNLPのサポート: 配備ツールキットは、Webページに埋め込まれたJNLPファイルのコピーを使ってアプリケーションを起動できます。これにより、Web Startアプリケーションをブラウザから最初に起動するのに必要なネットワーク接続の数を減らせます。7052492、および「パッケージ化」の項「Webページへのデプロイメント記述子の埋込み」(この項の情報はJava SEにも当てはまる)を参照してください。
配備ツールキットを使ってWebページ内からWeb StartアプリケーションにセキュアなJVM引数を渡す機能: これにより、JVM構成の不一致によるJVM再起動を回避しやすくなるほか、Webページから動的パラメータを渡すことも容易になります。7072364、および「ブラウザでのデプロイメント」の項「プラットフォーム」(この項の情報はJava SEにも当てはまる)を参照してください。
gzipでエンコードされたコンテンツの処理の改善: 配備キャッシュはアプリケーション・コンテンツを圧縮形式のまま保持し、それをそのままアプリケーションに返します(HTTPヘッダーのcontent-encodingはgzip)。これにより、異なる実行モード(初回の起動と後続の起動、キャッシュの有効時と無効時)にわたる動作の一貫性が向上します。詳細は、6575586を参照してください。
JNLPアプリケーションのサポートの改善: JavaFXアプリケーションのアンインストールがよりクリーンに行われます。7085171と7053087を参照してください。JNLPインストール・ヒントの認識が改善しています。7046670を参照してください。
Javaコントロール・パネルの新しい設定「安全でないJREのバージョン」: ユーザーがセキュリティ・ベースライン未満のJavaバージョンをシステムで使用している場合、そのバージョンを使用してアプリケーションまたはアプレットを実行できるようになる前に、警告メッセージが表示されます。Javaコントロール・パネルの「詳細」タブの設定「安全でないJREのバージョン」を使用して、この警告メッセージを制御できます。これは、deployment.properties
ファイル内のプロパティdeployment.insecure.jres
を次のいずれかの値に設定します。
deployment.insecure.jres プロパティの値 |
「安全でないJREのバージョン」設定の値 | 説明 |
---|---|---|
NEVER |
安全でないJREのバージョンを使用しない | 信頼できないコンテンツは常にデフォルトのJREで実行されます。 |
PROMPT |
安全でないJREのバージョンを使用する前にユーザーに尋ねる | ユーザーに警告ダイアログが表示されます。これがデフォルト値です。 |
ALWAYS |
安全でないJREのバージョンの使用を許可(非推奨) | 信頼できないコンテンツは、ユーザーに通知することなく要求されたJREで実行されます。 |
deployment.propertiesファイルの詳細は、第21章「配備構成ファイルおよびプロパティ」
を参照してください。
JNLPファイルの構文で次の機能が拡張されました。「JNLPファイルの構文」を参照してください。
information
およびresources
要素のos
属性にWindowsの特定のバージョン(Windows Vista、Windows 7など)を含めることができるようになりました。
アプリケーションは、shortcut
要素のinstall
属性を使用して、インストールの要求を指定できます。インストールされたアプリケーションは、Java Web Startのキャッシュをクリアしても削除されませんが、Javaコントロール・パネルを使えば明示的に削除できます。
Java Web Startアプリケーションは、codebase
属性を指定しなくてもデプロイできます。コード・ベースを使用しないデプロイに関するトピックを参照してください。
HTMLページ内にJNLPファイルを埋め込むことができます。AppletタグへのJNLPファイルの埋込みに関するトピックを参照してください。
アプレットのロード中にそのステータス変数をチェックし、アプレットがJavaScriptコードからの要求を処理する準備が整っているかを判別できます。イベント・ハンドラを使用した初期化ステータスの処理に関するトピックを参照してください。
ショートカットから起動されたアプレットやブラウザの外側にドラッグされたアプレットのウィンドウ装飾スタイルやタイトルを制御できるようになりました。ドラッグ可能なアプレットの開発に関するトピックのアプレットの装飾の要求およびカスタマイズに関する項を参照してください。
署名付きJARファイルを使って配備されるアプリケーションの再配布を容易にするには、JNLPテンプレートを使用できます。JNLPテンプレートを使えば、JNLPファイルのどの部分であればメインのJARを署名し直さずに変更できるのかを、開発者が指定できます。詳細は、17.2項「JNLPテンプレートを使用したJARファイルへの署名」を参照してください。
さらに、次の拡張機能が導入されています。
分野: デプロイメント標準/プラットフォーム: JDK 7概要: 以前は、pack200ツールの出力はデフォルトでセグメント化されていました。このリリースのpack200ツールでは、jarファイルごとに1つの大きなセグメントが作成されます。このため、デプロイヤにエンド・ユーザーのシステム上で使用できる仮想メモリーよりも大きなjarファイルがある場合は、入力jarファイルを分割するか、あるいはコマンド行フラグ「--segment-limit=nnnnn」または同等のプロパティ「SEGMENT_LIMIT".RFE: 6575357」を使用して適切にセグメント化することを推奨します。
分野: デプロイメント標準/プラットフォーム: JDK 7概要: Windows XPマシンの、デフォルトのキャッシュ・ディレクトリが$USER\Local Settings\Application Data\Sun\Java\Deployment\cacheになりました。必要に応じてこれをネットワーク共有フォルダを指すようにカスタマイズすると、複数のドメイン・マシン間で1つのアプリケーション・キャッシュを利用できます。RFE: 7012538
分野: デプロイメント標準/プラットフォーム: JDK 7概要: オプションのアプレット・パラメータjnlp_embeddedを使用すると、JNLPコンテンツをHTMLページ上にキャッシュすることで、ネットワーク・アクセスをスキップしてアプレットの起動時間を短縮できます。jnlp_embeddedパラメータの値は、アプレットのJNLPファイルのコンテンツをbase64でエンコードしたものになります。たとえば、
<applet width="710" height="540" > <param name="jnlp_href" value="launch.jnlp"/> <param name="jnlp_embedded" value="PD94bWwgdmVyc2lvbj0iMS4wIiB . . . dC1kZXNjPg0KPC9qbmxwPg0K"/> <param name="draggable" value="true"/> </applet>
jnlp_embeddedパラメータが指定されると、この値によってjn.p_hrefパラメータが指定したJNLP値のコンテンツが置換されます。この場合、jnlp_refの値はオプションであり、jnlp_embeddedのコンテンツが無効である場合にバックアップとしてのみ使用されます。JNLPコンテンツの埋込みに関しては、いくつかの制限事項があります。
要素jnlpの属性hrefは相対値にすべきです。
要素jnlpの属性codebaseは空にすべきです(つまり、コード・ベース値はドキュメントのベースURLから取得されます)。
RFE: 6990877
分野: デプロイメント標準/プラットフォーム: JDK 7概要: JDK 7では、キャッシュのクリアは次のように実施されます。
javaws -XClearCacheを呼び出すと、インストールされていないリソースのみがキャッシュから削除されます。
javaws -uninstallを呼び出すと、インストールされたリソースとインストールされていないリソースの両方が削除されます。
以前は、JCPの「一時ファイルの削除」ダイアログには、「アプリケーションおよびアプレット」と「トレースおよびログ・ファイル」という2つのチェックボックスがあり、両方ともデフォルトでチェック・マークが付けられていました。JDK 7の場合、「トレースおよびログ・ファイル」、「キャッシュされたアプリケーションおよびアプレット」、「インストールされたアプリケーションおよびアプレット」という3つのチェックボックスがあり、最初の2つにデフォルトでチェック・マークが付けられています。
インストールされたアプリケーションのみが追加/削除パネルのエントリとして表示されます。
RFE: 6873615
分野: JNLPファイル標準/プラットフォーム: JDK 7概要: Java Web Startアプリケーションのデバッグをサポートするため、信頼できるアプリケーション向けにJNLPファイルで-XX:HeapDumpOnOutOfMemoryErrorフラグがサポートされるようになりました。RFE: 6664424
分野: JNLPファイル標準/プラットフォーム: JDK 7概要: 以前のバージョンのJava Web Startは、JNLP仕様のセクション6.0.10が正しく実装されていませんでした。この修正によって、os="Windows\ XP"、os="Windows\ Vista"、os="Windows\ 7"などの「os」属性の詳細な指定が期待どおりに動作するようになります。os="Win"やos="Windows"などの値は、引き続きすべてのWindowsプラットフォームに適合します。このリリースでは、os="Windows\ Vista Windows\ 7"という値はVistaまたはWindows 7にのみ適合し、Windows XPには適合しません。RFE: 7014170
分野: プラグイン標準/プラットフォーム: JDK 7概要: プラグイン1が使用されるたびに、最初の世代のJava Plug-inが非推奨になったことを示すメッセージがログ・ファイルとJavaコンソールに出力されるようになりました。RFE: 7027792
分野: プラグイン標準/プラットフォーム: JDK 7概要: Windows上で、トレイ・アイコンがデフォルトで無効になりました。トレイ・アイコンを有効にするには、Windowsの「スタート」メニューを使用します。RFE: 6694710
分野: プラグイン標準/プラットフォーム: JDK 7概要: 64ビットのツールキットが64ビットのWindowsプラットフォームでサポートされるようになりました。RFE: 6492139
分野: プラグイン標準/プラットフォーム JDK 7概要: 以前のpersistence APIは、アプレットに対して一時的な永続性のみを提供していました。VMが終了すると、データは失われていました。LiveConnectを使用してページのDOM内にデータを保存するか、またはJNLPサービスの1つを使用することで、任意の標準Javaメカニズムを介してデータを永続化できます。RFE: 6992419
分野: プラグイン標準/プラットフォーム: JDK 7概要: DT PluginでGoogle Chromeがサポートされるようになりました。RFE: 6907245