Java Web Start は、Web を利用して Java アプリケーションをクライアントに配布する仕組みです。
仕組みの基本はいたって単純で、Java アプリケーションを JAR ファイルにし、それをダウンロードするための記述である
JNLP(Network Launching Protocol) ファイルを記述して Web サーバーにおいておくだけです。
メリットとしては、サーバー側から見ればやはり Java アプリケーションを簡単に配布できる、ということでしょう。
クライアント側としては、JSP などのサーバーサイド技術が進歩してもまあ結局は
HTML の範囲をほぼ出ないので、Java による GUI のアプリケーションの方が見栄えやたいていのばあいの使い勝手はよく、それを面倒な導入などの手間なしで使用できる、というのがメリットになるでしょう。
いろいろ可能性のあるテクノロジーには違いないと思います。
より詳しくはこちらの記事などを参照してみてください。
JNLP ファイルを使用するためには、サーバー側に新しい MIME タイプとして jnlp
というものが登録されている必要があります。
Tomcat 5.x の場合には、以下の web.xml の例にあるように、もうすでに jnlp という MIME タイプが登録済みになっているので、特別何かを変更する必要はありません。

ダウンロードの対象とする Java アプリケーションには以前紹介した JTOpen のサンプルアプリケーションを使用してみました。
このサンプルアプリケーションには、当然ながら JTOpen のいろんなクラスが必要になるのですが、クラスパスなどの設定のしかたが意外と難しく、正直よくわからなかったので
Toolbox for Java のライブラリーである jt400.jar にこのデモ用のアプリケーションを追加してしまいました。
つまり、もともとの JTOpen のアーカイブである jt400.jar にサンプルアプリケーションを追加してひとつの
JAR ファイルにして、これをダウンロード用の JAR ファイルとして使用している、ということです。
今回は Web サーバーに iSeries 上で稼動させた Tomcat 5.0.19 を使用しています。(稼動のさせ方等はたとえばこちらなどをご参照ください)
webapps/ROOT サブディレクトリーの下に jt400jws というサブディレクトリー
(URI になります) を作成し、そこに上記の JAR ファイルと、その JAR ファイルをダウンロードさせる記述である
JNLP ファイルを置きます。JNLP ファイルの内容は後述します。拡張子は .jnlp
とします。

JAR ファイルにはメインとなるクラスの指定を行います。
以下の例はもう署名 (後述) をしてしまった後のものなのですが、Manifest ファイルでその指定を行っています。

JNLP ファイルの内容はこんなかんじです。
名前は HTML のリンクやブラウザーからの接続に使用されるだけですので、特別な制約などはありません。
だいたい内容は見ればわかると思います。最後の <argument> はアクセスする先のシステム名になっています。
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+"
codebase="http://AS400E:8080/jt400jws/"
href="LoadJt400Demo.jnlp" >Java
<information>
<title>Load JT400 Demo</title>
<vendor>iSeries Corp</vendor>
<description>iSeries Toolbox for Java Demo</description>
<offline-allowed/>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.4+"/>
<jar
href="jt400.jar"
main="true"
download="eager" />
</resources>
<application-desc main-class="com.ibm.as400.demo.AS400Demo">
<argument>AS400E</argument>
</application-desc>
</jnlp>
|
JAR ファイルに署名を行います。
まず証明書の発行を行います。
keytool ユーティリティを使用します。使い方は以下のようなかんじですが、詳しくは
Sun のサイトを見てください。

生成したキーと証明書を元に JAR ファイルに署名します。
jarsigner ツールを使用します。こちらも使い方は以下のようなかんじですが、詳しくは
Sun のサイトを見てください。

jnlp ファイルにブラウザーからアクセスします。
実際にはほとんどこの jnlp ファイルのリンクを埋め込んだ HTML ファイルを用意して、そこからアクセスする、という使い方になるんでしょうね。

アクセスが OK だと、まず以下のようなスプラッシュ画面が出ます。
そして以下のような状況表示画面に続きます。
JAR ファイルをダウンロードしているのがわかりますね。

署名つきの JAR ファイルなので、これを信頼するかどうかのダイアログボックスが、通常のブラウザーの設定だと出ると思います。
「はい」か「常に」を押して先に進んでください。

JNLP ファイルには引数としてシステム名だけを渡しているので、ユーザー/パスワードが必要になります。
以下のようなダイアログボックスを JTOpen のクラスが出してきますので、ここでアクセス可能なユーザー/パスワードを指定します。
サインオンがうまく行くと、以下のようなサンプルアプリケーションの状況表示画面になります。

しばらく待つと、こんなようにサンプルアプリケーションが表示されます。

|
|