プライマリ・コンテンツに移動
Java Platform, Standard Editionデプロイメント・ガイド
リリース9
E90918-01
目次へ移動
目次

前
次

7 JNLPファイルの構文

この章の内容は次のとおりです。

JNLPファイルの構文の概要

このリリースで使用している形式は、「Java Network Launching Protocol & API Specification (JSR-56) version 6.0」に指定されている形式と同じです。リッチ・インターネット・アプリケーション(RIA)のJava Network Launch Protocol (JNLP)ファイルはXMLファイルです。すべての要素およびその属性は小文字で入力する必要があります。次の表は、JNLPファイルで最もよく使用される要素について説明しています。この形式の完全な説明については、仕様を参照してください。

要素 説明 属性 必須

jnlp

JNLPファイルでメインとなるXML要素。すべてjnlp要素に含まれています。

spec
そのJNLPファイルが適切に動作できる、JNLP仕様の最小バージョンを指定します。有効な値は、1.0、1.5、6.0、6.0.10、6.0.18、7.0、8.20、9または1.0+などのワイルドカードです。
codebase
JNLPファイルのhref属性で指定されているすべての相対URLの基本となる場所を指定します。
href
JNLPファイル自体のURLを指定します。
version
起動されたアプリケーションのバージョンとJNLPファイル自体のバージョンを指定します。

はい

information

アプリケーションとそのソースを説明する他の要素を含みます。

os
このinformation要素に対して適切なオペレーティング・システムを指定します。1.5.0で追加されました。
arch
このinformation要素に対して適切なアーキテクチャを指定します。1.5.0で追加されました。
platform
このinformation要素に対して適切なプラットフォームを指定します。1.5.0で追加されました。
locale
このinformation要素に対して適切なロケールを指定します。1.5.0で追加されました。

いいえ

title

アプリケーションのタイトルを指定します。

該当なし

いいえ

vendor

アプリケーションのプロバイダを指定します。

該当なし

いいえ

homepage

アプリケーションのホーム・ページ。

href
このアプリケーションの詳細情報が得られるURLを指定します。必須。

いいえ

description

アプリケーションを説明する短い文。

kind
説明のタイプを指定します。有効な値は、one-lineshortおよびtooltipです。

いいえ

icon

ユーザーがアプリケーションを識別できるようにアイコンを示します。

href
アイコン・ファイルのURLを指定します。次の形式のいずれかにできます: GIF、JPG、PNG、ICO。必須。
kind
アイコンの推奨される用途を示します。有効な値は、defaultsplashおよびshortcutです。
width
イメージの解像度を指定するために使用できます。
height
イメージの解像度を指定するために使用できます。
depth
イメージの解像度を指定するために使用できます。

いいえ

offline-allowed

クライアント・システムがネットワークから切断されてもこのアプリケーションが稼働できることを示します。

該当なし

いいえ

shortcut

使用すると、アプリケーションのデスクトップの統合に対する設定方法を示すことができます。1.5.0で追加されました。

online
使用すると、アプリケーションの設定で、作成するショートカットをオンラインで実行するか、オフラインで実行するかを示すことができます。
install
shortcut要素内で使用すると、インストール済と見なされることに関するアプリケーションの設定を示すことができます。値がtrueの場合、アプリケーションはインストール済と見なされることを選択しています。install属性のデフォルト値はfalseです。Windowsでは、これによってアプリケーションが「プログラムの追加と削除」パネルに表示されるかどうかが決まります。7.0で追加されました。

いいえ

desktop

使用すると、アプリケーションの設定で、ショートカットをユーザーのデスクトップに配置するかどうかを示すことができます。1.5.0で追加されました。

該当なし

いいえ

menu

使用すると、アプリケーションの設定で、メニュー項目をユーザーのスタート・メニューに配置するかどうかを示すことができます。1.5.0で追加されました。

sub-menu
使用すると、アプリケーションの設定で、メニュー項目を配置する場所を示すことができます。

いいえ

association

特定の拡張子および特定のMIMEタイプのプライマリ・ハンドラとしてオペレーティング・システムに登録する必要があることをJNLPクライアントに伝えるために使用できます。この要素を含める場合は、offline-allowed要素も含めるか、jnlp要素のhref属性を設定する必要があります。1.5.0で追加されました。

extensions
アプリケーションが処理するために登録が必要なファイル拡張子のリスト(スペース区切り)を含んでいます。
mime-type
アプリケーションが処理するために登録が必要なMIMEタイプを含んでいます。

いいえ

related-content

アプリケーションに統合できる関連コンテンツの追加部分を示します。1.5.0で追加されました。

href
関連コンテンツのURLを指定します。必須。

いいえ

update

JNLPクライアントがアプリケーションの更新を処理する方法の設定を示します。6.0で追加されました。

check
JNLPクライアントが更新を確認する必要がある時期についての設定を示します。有効な値は、alwaystimeoutおよびbackgroundです。
policy
アプリケーションの起動前に更新が可能であることがわかったとき、JNLPクライアントがアプリケーション更新を処理する方法の設定を示します。有効な値は、alwaysprompt-updateおよびprompt-runです。

いいえ

security

拡張権限を要求します。

該当なし

いいえ

all-permissions

すべてのアクセス権を使用できる状態でアプリケーションを実行できるよう要求します。

該当なし

いいえ

j2ee-application-client-permissions

J2EEアプリケーション・クライアント環境のセキュリティ仕様を満たす権限セットでアプリケーションが実行されるように要求します。

該当なし

いいえ

resources

アプリケーションに必要なすべてのリソースを示します。

os
このresources要素に対して適切なオペレーティング・システムを指定します。
arch
このresources要素に対して適切なアーキテクチャを指定します。
locale
このresources要素に対して適切なロケールを指定します。

はい

java (またはj2se)

アプリケーションの実行に使用するJavaのバージョンを指定します。java要素は6.0で追加されました。

version
使用するバージョンの範囲を順番にまとめたリストを示します。必須。
href
このJavaのバージョンの供給者とダウンロードできる場所を示すURL。
java-vm-args
Java起動時にアプリケーションがJNLPクライアントに使用させる標準の仮想マシンの引数と非標準の仮想マシンの引数の追加セットを示します。
initial-heap-size
Javaヒープの初期サイズを指定します。
max-heap-size
Javaヒープの最大サイズを指定します。

いいえ

jar

アプリケーションのクラス・パスの一部であるJARファイルを指定します。

href
JARファイルのURL。必須。
version
要求されたJARファイルのバージョン。バージョン・ベースのダウンロード・プロトコルを使用する必要があります。
main
このJARファイルにアプリケーションのmainメソッドを含むクラスが含まれているかどうかを示します。
download
このJARファイルを定期的または不定期に、あるいは進捗表示のためにダウンロードできることを示す場合に使用できます。
size
JARファイルのダウンロード可能なサイズをバイトで指定します。
part
使用すると、リソースをグループ化して同時にダウンロードできます。

いいえ。ただし、メインJNLPファイルがJARファイルを指定しない場合、リソース・セクションに少なくとも1つのjar要素があるコンポーネント拡張機能をJNLPファイルに含める必要があります。

nativelib

ルート・ディレクトリにネイティブ・ライブラリを含むJARファイルを指定します。

href
JARファイルのURL。必須。
version
要求されたJARファイルのバージョン。バージョン・ベースのダウンロード・プロトコルを使用する必要があります。
download
このJARファイルを不定期にダウンロードできることを示す場合に使用できます。
size
JARファイルのダウンロード可能なサイズをバイトで指定します。
part
使用すると、リソースを一緒にグループ化して同時にダウンロードできます。

いいえ

extension

このアプリケーションで使用する追加のcomponent-descまたはinstaller-descに対するポインタを含みます。

href
追加の拡張JNLPファイルのURL。必須。
version
追加の拡張JNLPファイルのバージョン。
name
追加の拡張JNLPファイルの名前。

いいえ

ext-download

extension要素で使用して、コンポーネント拡張機能の一部を示すことができます。

ext-part
拡張機能で見つかることが期待される部分の名前を示します。必須。
download
この拡張機能を定期的または不定期にダウンロードできることを示す場合に使用できます。
part
拡張機能を中に含めるための、このJNLPファイルの一部の名前を示します。

いいえ

package

どのJARファイルにどのパッケージを実装するかをJNLPクライアントに示す場合に使用できます。

name
指定部分のJARファイルに含まれるパッケージ名。必須。
part
指定のパッケージ名を含むJARファイルを含んでいる部分の名前。必須。
recursive
指定の部分で見つけることができる、指定の名前で始まるすべてのパッケージ名を指定する場合に使用できます。

いいえ

property

System.getPropertySystem.getPropertiesメソッドで使用できるシステム・プロパティを定義します。

name
システム・プロパティの名前。必須。
value
プロパティの値を示します。必須。

いいえ

application-desc

アプリケーションのJNLPファイルであることを示します。

main-class
アプリケーションのpublic static void main(String[])メソッドを含むクラス名。必須。
progress-class
DownloadServiceListenerの実装を格納するクラスの名前で、ダウンロードの進捗状況を示すために使用できます。6.0.18で追加されました。
type
デプロイするアプリケーションのタイプ。有効な値は、JavaおよびJavaFXです。デフォルトはJavaです。JavaFXアプリケーションを定義するために以前使用されていたXML拡張機能のかわりにこの属性を使用します。
JNLPファイルに次のいずれかの要素を含める必要があります。
  • application-desc

  • applet-desc

  • component-desc

  • installer-desc

argument

各argumentには、アプリケーションのmainメソッドに渡される追加の引数が(順番に)含まれています。

該当なし

いいえ

applet-desc

アプレットのJNLPファイルであることを示します。

注意: アプレットAPIは、JDK 9で使用可能でありサポートされていますが、将来のリリースでの削除に備えて非推奨とマークされています。アプレットのかわりに、Java Web Startまたは自己完結型アプリケーションなどの代替を検討してください。

main-class
メインAppletクラスの名前。必須。
documentbase
URLとしてのアプレットのドキュメント・ベース。
name
アプレットの名前。必須。
width
アプレットの幅(ピクセル)。必須。
height
アプレットの高さ(ピクセル)。必須。
progress-class
DownloadServiceListenerの実装を格納するクラスの名前で、ダウンロードの進捗状況を示すために使用できます。6.0.18で追加されました。
JNLPファイルに次のいずれかの要素を含める必要があります。
  • application-desc

  • applet-desc

  • component-desc

  • installer-desc

param

アプリケーションに渡すことができるパラメータのセット。この要素は、applet-descまたはapplication-desc要素のサブ要素として使用できます。application-desc要素内で使用する場合、type属性がJavaFXに設定されている場合のみ値が使用されます。type属性がJavaに設定されている場合は、値が無視されます。

name
パラメータの名前。必須。
value
パラメータの値。必須。

いいえ

component-desc

コンポーネント拡張機能のJNLPファイルであることを示します。

progress-class
DownloadServiceListenerの実装を格納するクラスの名前で、ダウンロードの進捗状況を示すために使用できます。6.0.18で追加されました。
JNLPファイルに次のいずれかの要素を含める必要があります。
  • application-desc

  • applet-desc

  • component-desc

  • installer-desc

installer-desc

インストールされた拡張機能のJNLPファイルであることを示します。

main-class
インストーラのpublic static void main(String[])メソッドを含むクラス名。必須。
JNLPファイルに次のいずれかの要素を含める必要があります。
  • application-desc

  • applet-desc

  • component-desc

  • installer-desc

JNLPファイルはXMLドキュメントです。JNLPファイルの例を参照してください。

JNLPファイルの例

カスタマイズをあまり必要としない基本的なアプリケーションの場合、JNLPファイルを単純にできます。複雑なアプリケーションの場合は、JNLPファイルに追加要素を追加できます。

要素は、JNLP要素で説明されています。

基本的なJNLPファイル

この例は単純なJNLPファイルを示しています。ルート要素はjnlpで、この要素には2つのサブ要素resourcesおよびapplication-descがあります。

<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="9">
    <resources>
        <jar href="https://docs.oracle.com/javase/tutorialJWS/samples/deployment/NotepadJWSProject/Notepad.jar" />
    </resources>
    <application-desc main-class="Notepad"/>
</jnlp>

アプリケーション・カスタマイズを含むJNLPファイル

この例は、アプリケーションの属性に対する設定を含むJNLPファイルの基本的なアウトラインを示しています。ルート要素はjnlpですが、この要素には、4つのサブ要素informationsecurityresourcesapplication-descがあります。さらに、Java Web Startはapplet-desc要素を使用することで、アプレットの起動もサポートします。

<?xml version="1.0" encoding="utf-8"?>
<!-- JNLP File for SwingSet2 Demo Application -->
<jnlp
  spec="6.0+"
  codebase="http://my_company.com/jaws/apps"
  href="swingset2.jnlp">
  <information>
    <title>SwingSet2 Demo Application</title>
    <vendor>Sun Microsystems, Inc.</vendor>
    <homepage href="docs/help.html"/>
    <description>SwingSet2 Demo Application</description>
    <description kind="short">A demo of the capabilities 
    of the Swing Graphical User Interface.</description>
    <icon href="images/swingset2.jpg"/>
    <icon kind="splash" href="images/splash.gif"/>
    <offline-allowed/> 
    <association mime-type="application-x/swingset2-file"  extensions="swingset2"/> 
    <shortcut online="false" install="false">
      <desktop/>
      <menu submenu="My Corporation Apps"/>
    </shortcut>
  </information>
  <information os="linux">   
    <title> SwingSet2 Demo on Linux </title>
    <homepage href="docs/linuxhelp.html">
  </information>
  <security>
      <all-permissions/>
  </security>
  <resources>
    <j2se version="1.6+" java-vm-args="-esa -Xnoclassgc"/>
    <jar href="lib/SwingSet2.jar"/>
  </resources>
  <application-desc main-class="SwingSet2"/>
</jnlp> 

JNLPの要素

一般的に使用されるJNLPの要素については、次の各項で説明します。

jnlp要素

spec属性: この属性が1.0以上でないと、このリリースで正しく動作しません。デフォルト値は1.0+です。したがって、通常はこの属性を省略してもかまいません。Java Web StartのJDK 9バージョンでは、バージョン9までのすべてのバージョンのspecがサポートされることに注意してください。 以前のバージョンのJava Web Startでは、JDKリリースの時点で使用可能であった仕様(spec)のバージョンのみがサポートされます。spec="9+"を指定するJNLPファイルは、このバージョンで動作しますが、以前のバージョンのJava Web Startでは動作しません。

codebase属性: JNLPファイルのhref属性に指定された相対URLはすべて、このURLを基準として処理されます。

href属性: 存在する場合、この属性は、アプリケーションのダウンロードおよび実行に使用されるJNLPファイルを示します。存在しない場合は、アプリケーションの起動に使用するメソッドによってはJava Web StartがJNLPファイルの場所を認識しない場合もあり、このことがセキュリティ・ダイアログ・ボックスに影響を及ぼす可能性があります。

information要素

os属性: この属性には、この要素のオペレーティング・システム名のリストが含まれます。os属性の詳細については、後述のresources要素の説明を参照してください。

title要素: アプリケーションの名前。

vendor要素: アプリケーション・ベンダーの名前。

homepage要素: 単一の属性hrefを含みます。これは、アプリケーションのホーム・ページを示すURLです。この要素は、Javaアプリケーション・キャッシュ・ビューアが、アプリケーションの詳細情報を含むWebページにユーザーをリダイレクトする際に使用されます。

description要素: アプリケーションに関する短い文。description要素は省略可能です。kind属性は、descriptionの用途を定義します。kindには、次の値が有効です。

  • one-line: アプリケーションへの参照をリストまたは表の1行に表示する場合に、このdescriptionが使用されます。
  • short: アプリケーションへの参照を表示する際に1段落分のスペースが取れる場合に、このdescriptionが使用されます。
  • tooltip: アプリケーションへの参照をツールヒント内に表示する場合に、このdescriptionが使用されます。

個々の種類に対して指定可能なdescription要素は、1つだけです。kind属性を含まないdescription要素は、デフォルト値として使用されます。したがって、Java Web Startがshortの種類のdescription要素を必要としているが、それがJNLPファイル内に指定されていなかった場合、属性を含まないdescription要素のテキストが使用されます。

description要素に含まれるテキストは、プレーン・テキストでなければなりません。HTMLタグなどを含む形式はサポートされていません。

icon要素: GIF、JPEG、ICO、またはPNG形式のイメージ・ファイルへのHTTP URLを含みます。これらのアイコンは、次の場合にアプリケーションを表現するために使用されます。

  • アプリケーション起動時にJava Web Startがアプリケーションをユーザーに表示する際
  • Javaアプリケーション・キャッシュ・ビューア内
  • デスクトップ・ショートカット内

ダウンロード中は64x64のアイコンが表示されます。Javaアプリケーション・キャッシュ・ビューア内とデスクトップ・ショートカット内では32x32のアイコンが使用されます。Java Web Startは、アイコンのサイズ変更を必要に応じて自動的に行います。

省略可能な属性widthheightを使えば、イメージのサイズを指定できます。

省略可能なkind属性には、次の値のいずれかを指定できます。

  • default: 指定されたイメージはJavaアプリケーション・キャッシュ・ビューア内で使用されます。また、icon要素に特定のkind属性が指定されていない場合にも使用されます。kind属性を指定しないことは、default値を指定することと同じです。
  • splash: 指定されたイメージは、アプリケーションの2回目以降の起動時にスプラッシュ・イメージとして使用されます。リソースがダウンロードされる前の、アプリケーションの初回起動時は、デフォルトのスプラッシュ・イメージが使用されます。
  • shortcut: 指定されたイメージは、デスクトップ・ショートカット内で使用されます。

JNLPファイルには、kind属性がそれぞれ異なる複数のicon要素を含めることができます。これにより、アプリケーションのアイコン・イメージを複数指定できます。

offline-allowed要素: 省略可能なoffline-allowed要素は、オフラインでのアプリケーション起動を許可するかどうかを示します。

offline-allowedが指定されている場合、Javaアプリケーション・キャッシュ・ビューアでアプリケーションをオフラインで起動できます。またアプリケーションをオフラインで起動するショートカットを作成できます。

アプリケーションをオフラインで起動した場合、更新のチェックは行われません。また、API呼出しBasicService.isOffline()trueを返します。

また、offline-allowed要素は、Java Web Startがアプリケーションの更新をチェックする方法も制御します。この要素が指定されていない場合(つまり、アプリケーションをオンラインで実行する必要がある場合)、Java Web Startは、更新版があるかどうかをチェックした後でアプリケーションを起動します。更新版が見つかった場合は、その新しいアプリケーションをダウンロードおよび起動します。したがって、ユーザーが実行するアプリケーションが常に最新版であることが保証されます。ただし、オフラインの場合、アプリケーションを実行することはできません。

offline-allowedが指定されている場合も、Java Web Startは更新版があるかどうかをチェックします。ただし、アプリケーションがダウンロード済であった場合、そのチェックは数秒でタイムアウトになります。タイムアウトになった場合、キャッシュ済のアプリケーションがかわりに起動されます。サーバーとの接続がある程度高速であれば、通常、最新版のアプリケーションが実行されますが、保証はありません。ただし、アプリケーションはオフラインで実行できます。

shortcut要素: 省略可能なshortcut要素を使用すると、アプリケーションのデスクトップ統合に対する設定方法を示すことができます。shortcut要素とそのサブ要素は、JNLPクライアントが使用する可能性のあるヒントを提供します。shortcut要素には省略可能なonline属性とinstall属性、および省略可能な2つのサブ要素desktopmenuが含まれます。

association要素: 省略可能なassociation要素は、特定の拡張子および特定のMIMEタイプのプライマリ・ハンドラとしてオペレーティング・システムに登録する必要があることを示すJNLPクライアントへのヒントです。association要素にはextensionsおよびmime-type属性を指定する必要があります。association要素を含める場合は、offline-allowed要素も含めるか、アプリケーションを見つけて実行できるようにjnlp要素のhref属性を設定する必要があります。

related-content要素: 省略可能なrelated-content要素は、READMEファイル、ヘルプ・ページ、登録ページへのリンクなどの関連コンテンツの追加要素を、JNLPクライアントへのヒントとして説明します。アプリケーションは、このコンテンツをデスクトップ統合に含めるように要求します。related-content要素には、hreftitleの必須属性があります。次のサブ要素のいずれかを含めることもできます。

  • description要素: 関連コンテンツの簡単な説明。
  • icon要素: JNLPクライアントがユーザーへの関連コンテンツを識別するために使用できるアイコン。

security要素

各サンドボックス・アプリケーションは、アプレットのサンドボックスに類似した、制限された実行環境で実行されます。security要素を使うことで、無制限のアクセス権を要求できます。

all-permissions要素が指定された場合、アプリケーションはクライアント・マシンおよびローカル・ネットワークに対する完全なアクセス権を持ちます。すべてのJARファイルに署名する必要があります。ユーザーは、証明書を受け入れてアプリケーションの実行に同意するよう求められます。

update要素

update要素は、Java Web Startがアプリケーションの更新を処理する方法の設定を示します。

update要素には、次に示す2つの属性をオプションで含めることができます。

check属性: check属性は、JNLPクライアントが更新を確認する必要がある時期についての設定を示します。有効な値は次のとおりです。

  • always: アプリケーションを起動する前に更新を確認します。

  • timeout (デフォルト): アプリケーションを起動する前に、タイム・アウトになるまで更新を確認することを意味します。更新確認が完了せずにタイム・アウトした場合、アプリケーションの起動後に、更新確認がバックグラウンドで継続して行われます。

  • background: バックグラウンドでの更新の確認中にアプリケーションを起動します。

policy属性: policy属性は、アプリケーションの起動前に更新が可能であることがわかったとき、JNLPクライアントがアプリケーション更新を処理する方法の設定を示します。有効な値は次のとおりです。

  • always (デフォルト): ユーザーに通知することなく、更新をダウンロードします。

  • prompt-update: ユーザーに更新バージョンをダウンロードして実行するかどうか、またはキャッシュされたバージョンを起動するかどうかを尋ねます。

  • prompt-run: ユーザーに更新バージョンをダウンロードして実行するかどうか、またはキャンセルしてアプリケーションの実行を停止するかどうかを尋ねます。

次に例を示します。

<update check="always" policy="prompt-update">

resources要素

resources要素は、アプリケーションに含まれるJavaクラス・ファイル、ネイティブ・ライブラリ、システム・プロパティなど、すべてのリソースを指定するために使用します。 リソース定義を特定のオペレーティング・システム、アーキテクチャまたはロケールに制限するには、osarchおよびlocale属性を使用します。

os属性には、リソースのオペレーティング・システム名のリストが含まれます。たとえば、それぞれ異なるos属性を指定した複数のresources定義を使用して、複数のオペレーティング・システムのネイティブ・ライブラリを指定できます。

os属性には、スペースで区切られたオペレーティング・システム名のリストが含まれます。実行時に、osの値とos.nameシステム・プロパティの先頭が比較され、一致するものが検索されます。たとえば、os属性の値が「Windows」であれば、「Windows 8」および「Windows 10」の両オペレーティング・システムに一致します。

リストに指定するオペレーティング・システムの名前にスペースが含まれている場合は、スペースがオペレーティング・システム名の一部であることを示すためにバックスラッシュを使用します。次の例は、「Windows 8」および「Windows 10」に明確に一致します。

    <resources os="Windows\ 8 Windows\ 10">
      <jar href="hello.jar"/>
    </resources>

resources要素に指定可能なサブ要素は、jarnativelibj2sepropertypackageextensionの6つです。この開発者ガイドでは、package要素とextension要素については説明しません。

jar要素は、アプリケーションのクラス・パスに含めるJARファイルを指定します。  次に例を示します。

      <jar href="myjar.jar"/>

ClassLoaderオブジェクトを使用して、jarファイルがJVMにロードされます。  通常、jarファイルには、特定のアプリケーションのコードを含むJavaクラスが含まれますが、getResourceメカニズムで使用できるアイコンや構成ファイルなどの他のリソースも含めることができます。

nativelib要素は、ネイティブ・ライブラリを含むJARファイルを指定します。次に例を示します。

      <nativelib href="lib/windows/corelib.jar"/>

JNLPクライアントは、System.loadLibraryメソッドを使用して、JARファイルのルート・ディレクトリ(/)にある各ファイル・エントリが実行中のプロセスに確実にロードできるようにする必要があります。  各エントリには、プラットフォーム固有の共有ライブラリを正しい命名規約を使用して含める必要があります(Windowsの*.dll、SolarisやLinuxのlib*.soなど)。System.loadLibraryへの呼出しを実際に行うのは、アプリケーションの役目です。

通常、ネイティブ・ライブラリは、特定のオペレーティング・システムとアーキテクチャに対応したresources要素に含まれます。次に例を示します。

    <resources os="SunOS" arch="sparc">
      <nativelib href="lib/solaris/corelibs.jar"/>
    </resources>

デフォルトでは、jarおよびnativelibリソースが定期的にダウンロードされます。つまり、これらはアプリケーションが起動される前にダウンロードされ、アプリケーションを実行しているJVMでローカルに使用可能になります。jarnativelib要素では、リソースをlazyと指定することもできます。この設定にすると、アプリケーションの起動前にリソースをクライアント・システムにダウンロードする必要がなくなります。

download属性は、リソースが定期的にダウンロードされるか、不定期にダウンロードされるか、あるいは進捗のカスタム実装を含んでいるかの制御に使用します。次に例を示します。

    <jarhref="sound.jar" download="lazy"/>
    <nativelibhref="native-sound.jar" download="eager"/>

    <jarhref="progress.jar" download="progress"/>

download="progress"が指定されているJARファイルは、定期的にダウンロードされます。また、他のリソースのダウンロード中に進捗を示すためにも使用できます。

j2se要素は、アプリケーションがサポートされるJava Platform, Standard Edition Runtime Environment (JRE)のバージョンおよびJava仮想マシンの標準パラメータを指定します。  複数のJREを指定する場合、サポート対象のJREを優先順にリストに示します。最も望ましいバージョンを最初に指定します。次に例を示します。

       <j2se version="9" initial-heap-size="64m" max-heap-size="128m"/>
      <j2se version="1.8.0_101+" href="http://java.sun.com/products/autodl/j2se" java-vm-args="-esa -Xnoclassgc"/>

version属性は、デフォルトでJava Platform Standard Editionのプラットフォーム・バージョン(仕様バージョン)を参照します。現時点で定義されているプラットフォーム・バージョンは、1.2、1.3、1.4、1.5、1.6、1.7、1.8および9です。(通常、プラットフォーム・バージョンには、マイクロ・バージョン番号(1.4.2など)は含まれません。)

正確な製品バージョン(実装バージョン)を、href属性を使用して指定することもできます(1.7.0_111や1.8.0_92など)。次に例を示します。

<j2se version="1.7.0_111" href="http://java.sun.com/products/autodl/j2se"/

または

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

プラットフォーム・バージョンが指定された場合(つまり、href属性が指定されなかった場合)、Java Web Startは、インストール済の非General Availability (GAマイルストン)のJREを、要求に一致するものとみなしません。たとえば、次の要求では、インストール済の9-ea JREは要求に一致するものとみなされません。

<j2se version="9+"/>

j2se要素のjava-vm-args属性は、javaの起動時に優先的に使用される仮想マシンの一連の引数を指定します。

<j2se version="9+" java-vm-args="-ea -Xincgc"/>

このバージョンでは、次のjava-vm-argsがサポートされます。

 -d32,                                                          /* use a 32-bit data model if available (unix platforms only) */
 -client,                                                       /* to select the client VM */
 -server,                                                       /* to select the server VM */
 -verbose,                                                      /* enable verbose output */
 -version,                                                      /* print product version and exit */
 -showversion,                                                  /* print product version and continue */                                              
 -help,                                                         /* print this help message */
 -X,                                                            /* print help on non-standard options */
 -ea,                                                           /* enable assertions */
 -enableassertions,                                             /* enable assertions */
 -da,                                                           /* disable assertions */
 -disableassertions,                                            /* disable assertions */
 -esa,                                                          /* enable system assertions */
 -enablesystemassertions,                                       /* enable system assertions */
 -dsa,                                                          /* disable system assertione */
 -disablesystemassertions,                                      /* disable system assertione */
 -Xmixed,                                                       /* mixed mode execution (default) */
 -Xint,                                                         /* interpreted mode execution only */
 -Xnoclassgc,                                                   /* disable class garbage collection */
 -Xincgc,                                                       /* enable incremental garbage collection */
 -Xbatch,                                                       /* disable background compilation */
 -Xprof,                                                        /* output cpu profiling data */
 -Xdebug,                                                       /* enable remote debugging */
 -Xfuture,                                                      /* enable strictest checks, anticipating future default */
 -Xrs,                                                          /* reduce use of OS signals by Java/VM (see documentation) */
 -XX:+ForceTimeHighResolution,                                  /* use high resolution timer */
 -XX:-ForceTimeHighResolution,                                  /* use low resolution (default) */
-XX:+PrintGCDetails,          /* Gives some details about the GCs */
-XX:+PrintGCTimeStamps,       /* Prints GCs times happen to the start of the application */
-XX:+PrintHeapAtGC,           /* Prints detailed GC info including heap occupancy */
-XX:+PrintTenuringDistribution,  /* Gives the aging distribution of the allocated objects */
-XX:+TraceClassUnloading,     /* Display classes as they are unloaded */
-XX:+CMSClassUnloadingEnabled,/* It needs to be combined with -XX:+CMSPermGenSweepingEnabled */
-XX:+CMSIncrementalPacing,    /* Automatic adjustment of the incremental mode duty cycle */
-XX:+UseConcMarkSweepGC,      /* Turns on concurrent garbage collection */
-XX:-ParallelRefProcEnabled,
-XX:+DisableExplicitGC,       /* Disable calls to System.gc() */
-XX:+UseG1GC,
-XX:+HeapDumpOnOutOfMemoryError,
-XstartOnFirstThread,
-XX:+UseG1GC,
-XX:+UseStringDeduplication,
-XX:+PrintStringDeduplicationStatistics,
-XX:+UseParallelOldGC,
-XX:-UseParallelOldGC",
-XX:+UseParallelOldGCCompacting",
-XX:-UseParallelOldGCCompacting",
-XX:+UseParallelGC,
-XX:-UseParallelGC,
-XX:+UseGCTimeLimit,
-XX:-UseGCTimeLimit,
-XX:+UseGCOverheadLimit,
-XX:-UseGCOverheadLimit,
-XX:+ScavengeBeforeFullGC,
-XX:-ScavengeBeforeFullGC,
-XX:+UseParallelScavenge,
-XX:-UseParallelScavenge,
-XX:-TransmitErrorReport,

次の文字列のいずれかで開始する任意の引数もサポートされます。

-ea,                          /* enable assertions for classes */
-enableassertions,            /* enable assertions for classes */
-da,                          /* disable assertions for classes */
-disableassertions,           /* disable assertions for classes */
-verbose,                     /* enable verbose output */
-Xms,                         /* set initial Java heap size */
-Xmx,                         /* set maximum Java heap size */
-Xss,                         /* set java thread stack size */
-XX:NewRatio,                 /* set Ratio of new/old gen sizes */
-XX:NewSize,                  /* set initial size of new generation */
-XX:MaxNewSize,               /* set max size of new generation */
-XX:PermSize,                 /* set initial size of permanent gen */
-XX:MaxPermSize,              /* set max size of permanent gen */
-XX:MaxHeapFreeRatio,         /* heap free percentage (default 70) */
-XX:MinHeapFreeRatio,         /* heap free percentage (default 40) */
-XX:UseSerialGC,              /* use serial garbage collection */
-XX:ThreadStackSize,          /* thread stack size (in KB) */
-XX:MaxInlineSize,            /* set max num of bytecodes to inline */
-XX:ReservedCodeCacheSize,    /* Reserved code cache size (bytes) */
-XX:MaxDirectMemorySize,
-XX:PrintCMSStatistics,               /* If > 0, Print statistics about the concurrent collections */
-XX:SurvivorRatio,                    /* Sets the ratio of the survivor spaces */
-XX:MaxTenuringThreshold,             /* Determines how much the objects may age */
-XX:CMSMarkStackSize,
-XX:CMSMarkStackSizeMax,
-XX:CMSIncrementalDutyCycleMin,       /* The percentage which is the lower bound on the duty cycle */
-XX:ParallelCMSThreads,
-XX:ParallelGCThreads,                /* Sets the number of parallel GC threads */
-XX:CMSInitiatingOccupancyFraction,   /* Sets the threshold percentage of the used heap */
-XX:+UseCompressedOops,               /* Enables compressed references in 64-bit JVMs */
-XX:GCPauseIntervalMillis,
-XX:MaxGCPauseMillis,                 /* A hint to the virtual machine to pause times */
-XX:+CMSIncrementalMode,              /* Enables the incremental mode */
-XX:StringDeduplicationAgeThreshold,
-XX:GCTimeLimit",
-XX:GCHeapFreeLimit",
-XX:MarkStackSize,
-XX:MarkStackSizeMax,
-XX:ConcGCThreads,

property要素はシステム・プロパティを定義します。これらのプロパティは、System.getPropertySystem.setPropertiesの両メソッドを介して取得できます。これには2つの必須属性nameおよびvalueがあります。次に例を示します。

<property name="key" value="overwritten"/>

セキュアだとみなされるプロパティは、VMの起動後、アプリケーションの呼出し前に、Java Web Startによって設定されます。これらのプロパティは、呼び出されると-Dkey=value引数としてjavaコマンドに渡されます。次のプロパティはセキュアだとみなされます。

  • 署名付きJNLPファイルに設定されているプロパティ

  • 次の文字列のいずれかが前に付いた、署名されていないJNLPファイルに設定されているシステム・プロパティ: jnlp.javaws.またはjavapi

  • 事前定義されたセキュアなプロパティ:

        sun.java2d.noddraw,
        javaws.cfg.jauthenticator,
        swing.useSystemFontSettings,
        swing.metalTheme,
        http.agent,
        http.keepAlive,
        sun.awt.noerasebackground,
        sun.java2d.opengl,
        sun.java2d.d3d,
        java.awt.syncLWRequests,
        java.awt.Window.locationByPlatform,
        sun.awt.erasebackgroundonresize,
        sun.awt.keepWorkingSetOnMinimize,
        swing.noxp,
        swing.boldMetal,
        awt.useSystemAAFontSettings,
        sun.java2d.dpiaware,
        sun.awt.disableMixing,
        sun.lang.ClassLoader.allowArraySyntax,
        java.awt.smartInvalidate"
        apple.laf.useScreenMenuBar,
        java.net.preferIPv4Stack,
        java.util.Arrays.useLegacyMergeSort",
        sun.locale.formatasdefault,
        sun.awt.enableExtraMouseButtons,
        com.sun.management.jmxremote.local.only,
        sun.nio.ch.bugLevel,
        sun.nio.ch.disableSystemWideOverlappingFileLockCheck,
        jdk.map.althashing.threshold
    

application-desc要素

application-desc要素は、JNLPファイルの起動対象が、アプレットではなくアプリケーションであることを示します。application要素には省略可能な属性main-class属性があり、アプリケーションのメイン・クラス(実行を開始する必要があるクラス)の名前を指定できます。

  • Javaアプリケーションの場合、メイン・クラスはpublic static void main(String argv[])メソッドを含むクラスです。

  • JavaFXアプリケーションの場合、メイン・クラスはjavafx.application.Applicationを拡張するクラスです。

main-class属性を省略できるのは、JNLPファイル内に指定された最初のJARファイルにMain-Class属性を含むマニフェスト・ファイルが含まれている場合です。

省略可能なtype属性を使用して、アプリケーションのタイプ(デフォルトのJavaまたはJavaFXのいずれか)を指定できます。Java Web Startでは、呼び出す方法を知るためにJavaFXアプリケーションであるかどうかがわかっている必要があります。

アプリケーションへの引数を指定するには、1つ以上のネストされたargument要素を含めます。次に例を示します。

  <application-desc main-class="Main">
      <argument>arg1</argument>
      <argument>arg2</argument>
  </application-desc>

アプレットの場合と同様に、1つ以上のparam要素を含めることによって、type属性がJavaFXに設定されたアプリケーションにパラメータを追加できます。次に例を示します。

<application-desc type="JavaFX" main-class="fxApp">
    <param name="key1" value="value1"/>
    <param name="key2" value="value2"/>
</application-desc>

(省略可能な) progress-class属性を使用すると、この名前のクラスがjavax.jnlp.DownloadServiceListenerインタフェースを実装することを示すことができます。このクラスは最初にロードし、ダウンロードされ検証される他のリソースの進捗を示すために使用できます。

applet-desc要素

Java Web Startは、Javaアプレットの起動をサポートします。このサポートにより、既存コードのJava Web Startへの移行が容易になります。

注意:

アプレットAPIは、JDK 9で使用可能でありサポートされていますが、将来のリリースでの削除に備えて非推奨とマークされています。

アプレットは、application-desc要素ではなくapplet-desc要素を使用して起動されます。次に例を示します。

  <applet-desc
      documentBase="http://..."
      name="TimePilot"
      main-class="TimePilot.TimePilotApp"
      width="527"
      height="428">
    <param name="key1" value="value1"/>
    <param name="key2" value="value2"/>
  </applet-desc>

アプレットを構成するJARファイルは、アプリケーションの場合と同様に、resources要素を使用して記述します。documentBaseを明示的に指定する必要があるのは、JNLPファイルがHTMLページに埋め込まれないからです。その他の属性はそれぞれ、特定のHTMLアプレット・タグ要素に対応します。

code属性のかわりにmain-class属性が使用されます。main-class属性にはAppletクラスの名前(.class拡張子は除く)を指定します。メインのJARファイル内のMain-Classマニフェスト・エントリからAppletクラスが検索可能である場合、この属性を省略してもかまいません。

(省略可能な) progress-class属性を使用すると、この名前のクラスがjavax.jnlp.DownloadServiceListenerインタフェースを実装することを示すことができます。このクラスは最初にロードし、ダウンロードされ検証される他のリソースの進捗を示すために使用できます。

注意:

アプレットは、Java Web Startで動作するためにJARファイル内にパッケージ化する必要があります。

component-desc要素

component-desc要素は、JNLPファイルがアプリケーションまたはアプレットではなく、アプリケーション、アプレットまたは他の拡張機能のリソースとして使用できる拡張機能であることを示します。

通常、コンポーネント拡張機能は、複数のアプリケーション間で共有される、または個別のセキュリティが必要なリソース・セットを取り除くために使用されます。

(省略可能な) progress-class属性を使用すると、この名前のクラスがjavax.jnlp.DownloadServiceListenerインタフェースを実装することを示すことができます。このクラスは最初にロードし、ダウンロードされ検証される他のリソースの進捗を示すために使用できます。

installer-desc要素

installer-desc要素は、JNLPファイルがアプリケーションを定義するインストーラの拡張機能であることを示します。この拡張機能のJNLPファイルは、アプリケーション、アプレットまたは他の拡張機能で最初に1度使用されると、その後は実行されません。

通常、インストーラの拡張機能は、ネイティブ・ライブラリをVMに単純にロードする以上に複雑な設定を必要とする、プラットフォーム固有のネイティブ・コードをインストールするために使用されます。