JNLPの実行

ブラウザでJWS/JNLPアプリケーションを実行する

このクイックスタートチュートリアルでは、ブラウザでCheerpJを使用してJNLPアプリ(Java Web Startアプリケーションとしても知られています)を実行する手順を説明します。

Java Web Startアプリケーションを実行するためのすぐに使えるツールに興味がある場合は、CheerpJ JNLP Runner ブラウザ拡張機能をご覧ください。

必要なもの:

  • アプリケーションの.jnlp ファイル。
  • JavaアプリをラップするHTMLファイル。
  • ウェブページをローカルでテストするための簡単なHTTPサーバー。

1. .jnlp ファイル

.jnlpファイルには、Javaアプリケーションを起動するための詳細が記載されています。 通常のパイプラインは、このファイルがウェブサイトからトリガーされ、ユーザーのローカルJNLPクライアントに渡され、アプリケーションの.jarファイルやその他のリソースがダウンロードされるところから始まります。最終的に、アプリはローカルのJREインストールで実行されます。 CheerpJを使用すると、このアプリケーションをブラウザのサンドボックス内で実行でき、Javaのインストールは不要です。

.jnlpファイルは、以下の例のような形式になっているかもしれません。次の3つの重要な要素を見つける必要があります:

  1. <resources>要素の下で指定された.jarファイル、通常は<jar>または<nativelib>タグで示されています。
  2. アプリケーションの種類。<application-desc>または<applet-desc>タグを探してください。
  3. <jnlp>で指定されたcodebase URLが必要になる場合があります。
example.jnlp
<?xml version="1.0" encoding="utf-8"?>
<!-- JNLP Example -->
<jnlp
spec="1.0+"
codebase="code-base-url"
href="example.jnlp">
<information>
<title>Your application name</title>
<vendor>Vendor name</vendor>
<homepage href="home-page-url"/>
<description>Description of your Java application</description>
<description kind="short">Another description of your Java application</description>
<icon href="image-url"/>
<icon kind="icon-name" href="image-url"/>
<offline-allowed/>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.4+" initial-heap-size="64m" max-heap-size="640m"/>
<jar href="my_application_archive.jar"/>
<jar href="lib/my_dependency.jar"/>
<property name="key" value="overwritten"/>
</resources>
<application-desc main-class="com.application.MyClassName"/>
</jnlp>

2. プロジェクトディレクトリを作成する

<jar>または<nativelib>タグの場所をJNLPファイル内で確認したら、ブラウザのナビゲーションバーにURLをコピー、ペーストすることでダウンロードできます。これらのURLが相対パスの場合は、codebase URLにjar URLを追加して完全なURLを構築してください:

例えば:

code-base-url/my_application_archive.jar
code-base-url/lib/my_dependency.jar

プロジェクト用のディレクトリを作成し、先ほどダウンロードしたJARファイルをこのフォルダ内に配置してください。.jnlpに示されているのと同じディレクトリ構造を維持することを忘れないでください。

例えば:

Terminal window
mkdir -p directory_name/lib

JARファイルを移動すると、次のようになるはずです:

└── directory_name
├── my_application_archive.jar
└── lib
└── my_dependency.jar

3. 基本的なHTMLファイルを作成する

3.1 アプリケーションの種類を特定する

JNLPアプリは、スタンドアロンアプリケーションまたはアプレットのいずれかです。これは、.jnlpファイル内 の <application-desc> または <applet-desc> タグで簡単に確認できます。

CheerpJランタイムが統合され、Javaアプリケーションが表示される基本的なHTMLファイルを作成します。このファイルをプロジェクトフォルダのルートに作成してください。アプリケーションがスタンドアロンアプリかアプレットかによって、アプリの読み込み方法が異なる場合があります。次の手順では、それぞれの場合におけるHTMLの構造について説明します。

3.2 アプリケーションがスタンドアロンアプリの場合

<application-desc>の内容をよく確認し、以下の点を把握しておいてください:

  • アプリケーションクラス名: これはmain-class属性にあります。この属性がない場合は、クラス名がマニフェストに含まれている可能性があります。
  • アプリケーション引数: 引数が必要な場合、これらは<argument>タグで見つけることができます。
ご注意
上記の要素が見つからない場合は、アプリケーションを実行するためにこれらの要素は必要ないことを意味します。

クラス名がマニフェストに含まれているアプリのHTMLファイルの例:

index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>CheerpJ test</title>
<script src="https://cjrtnc.leaningtech.com/4.0/loader.js"></script>
</head>
<body>
<script>
(async function () {
await cheerpjInit();
cheerpjCreateDisplay(800, 600);
await cheerpjRunJar("/app/my_application_archive.jar");
})();
</script>
</body>
</html>

また、クラス名が.jnlpファイルにあり、マニフェストにはない場合は、cheerpjRunJar()cheerpjRunMain()に置き換えてください:

cheerpjRunMain(
"com.application.MyClassName",
"/app/my_application_archive.jar:/app/lib/my_dependency_archive.jar"
);

アプリケーションの引数がある場合は、cheerpjRunJar()またはcheerpjRunMain()に渡す必要があります。 /app/プレフィックスは、このページがロードされているウェブサーバーのルートを参照する仮想ファイルシステムのマウントポイントです。

3.2 アプリケーションがアプレットの場合

.jnlpファイルの<applet-desc>タグをよく確認し、以下の点を把握しておいてください:

  • アプレットタグのパラメーター:

    • アプレットクラス名: main-class 属性に記載されています。
    • アプレットの理想的なサイズ: width およびheight属性で定義されています。
    • アプレットパラメーター: アプレットがそれを必要とする場合、<applet-desc>内の <param>タグとして見つけることができます。
  • documentBase: このURLを取得すると、アプレットがラップされているHTMLファイルが得られます。これを使用するか、以下の例のように独自のHTMLを作成することもできます。documentBaseのHTMLファイルを使用する場合は、CheerpJランタイムが統合され、呼び出されるスクリプトを追加することを忘れないでください。

アプレット用のHTMLは次のようになります:

index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>CheerpJ applet test</title>
<script src="https://cjrtnc.leaningtech.com/4.0/loader.js"></script>
</head>
<body>
<applet
archive="my_applet_archive.jar"
code="com.applet.MyClassName"
height="900"
width="900"
></applet>
<script>
cheerpjInit();
</script>
</body>
</html>

アプレットのパラメーターは、通常通り<applet>タグ内の<param>として渡す必要があります。

<applet
archive="my_applet_archive.jar"
code="com.applet.MyClassName"
height="900"
width="900"
>
<param name="paramName" value="paramValue" />
</applet>

ユーザーがネイティブのJavaプラグインをインストールしている場合、元のHTMLタグを cheerpj- プレフィックス付きのバージョンに置き換えることができます。<cheerpj-applet>, <cheerpj-object>および<cheerpj-embed> がすべてサポートされています。

4. ページをホストする

最終的なプロジェクトディレクトリの構成は、以下のようになります:

└── directory_name
├── index.html
├── my_application_archive.jar
└── lib
└── my_dependency.jar

これで、プロジェクトディレクトリに移動し、http-serverユーティリティのようなシンプルなHTTPサーバーでこのウェブページを提供することができます。

Terminal window
cd directory_name
npm install http-server
http-server -p 8080

終わり

これでこのチュートリアルは終了です。CheerpJを使用してスタンドアロンアプリケーションやアプレットを実行する方法について詳しく学びたい場合は、専用のチュートリアルをご覧ください:

このページは役に立ちましたか?
ページの変更を提案する