Java SE6 update10 を使って Applet で遊ぶ! jnlp でアプリケーションを配備
前回は、ブラウザから drag and drop できる Java Applet アプリケーションについて、執筆いたしました。今回は、その drag and drop されたアプリケーションを、 JavaWebStart のショートカットから呼び出せる様にする方法について、執筆して行きたいと思います。
ショートカットからアプリケーションを呼び出す方法として、、 jnlp ファイルを使用して、 Applet アプリケーションを、クライアント端末へ配布すると言う方法があります。これは、 URL にて、 Applet アプリケーションへ直接アクセスするのではなく、ブラウザから、いったん jnlp ファイルをアプリケーション配布元サイトから取得し、その jnlp ファイルに記述された情報を元に、 該当サイトから、 Applet アプリケーションを取得してブラウザ上、乃至は JavaWebStart 上で実行すると言う形式です。 jnlp の詳細についてはこちらをご覧ください。
それでは早速、前回ご紹介しました Applet サンプルを掲載したコンテンツを、ここをクリックしてみてみましょう。
上のように同じアニメーションを繰り返すアプレットが二つ並んで表示されているのが見えたでしょうか?
左側は、前回ご紹介したサンプル、右側が、 jnlp ファイルを使用して実装したサンプルです。
ではどのように html コードに実装したのかをお見せします。まずは左側の Applet タグの記述は以下のとおり、
<APPLET code="jp.glassfish.jacksparrow.applet.Duke.class" codebase="classes" width="320" height="240">
<PARAM name="draggable" value="true">
</APPLET>
そして右側の Applet タグの記述は以下のとおり、
<APPLET code="jp.glassfish.jacksparrow.applet.Duke" archive="applet.jar" width="320" height="240">
<PARAM name="draggable" value="true">
<PARAM name="jnlp_href" value="http://www7.atpages.jp/torutuga/dragable/DukeArsesOverTip.jnlp">
</APPLET>
上記2つの違いにもうお気づきかと思うのですが、まず codeBase が、 archive 属性に変わって、アーカイブファイル (jar) が指定されていること、そして PARAM タグに、 jnlp_href 属性と値に対象となる jnlp ファイル名の URL が指定された内容が追記されていること、この2点が大きく違う点です。
では、 jnlp ファイルは一体どんなファイルで、どんな情報を書けばよいのか?ってことになるわけで、本サンプルアプリケーション用に作成した jnlp ファイルのコンテンツを以下に記します。
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="http://www7.atpages.jp/torutuga/dragable/" href="DukeArsesOverTip.jnlp">
<information>
<title>Duke arses over tip! Why?</title>
<vendor>Jack Sparrow</vendor>
<homepage href="http://www7.atpages.jp/torutuga/dragable/" />
<description kind="short">
Duke animation series.
</description>
<shortcut online="true">
<desktop />
</shortcut>
</information>
<resources>
<!-- <property name="jnlp.packEnabled" value="true"/> -->
<j2se href="http://java.sun.com/products/autodl/j2se" version="1.6+"/>
<jar href="applet.jar" main="true" />
</resources>
<applet-desc
name="Duke arses over tip! Why?"
main-class="jp.glassfish.jacksparrow.applet.Duke"
width="320"
height="240">
</applet-desc>
</jnlp>
ご覧の様に、文書構成は xml 形式で記述されていて、それぞれのタグ属性のお約束事に沿って、設定内容を記述していきます。 jnlp ファイルの構文に関する詳細については、こちらをご覧ください。ここで注意すべき事は、 jnlp を利用してアプリケーションを呼び出す場合、クラスファイルではなくアーカイブファイル (jar) でなければならないと言うことです。
そしてもうひとつ、アプリケーションが、画像ファイルなどにアクセスしている場合は、同時にアーカイブファイルに同梱されていなければなりません。この部分はお約束事であると解釈して下さい。(本サンプルアプリケーションも、 jpeg ファイルにアクセスしているので、アーカイブファイル内に jpeg ファイル一式が同梱されています。)
では次に、ショートカットの作成方法について、執筆して行きたいと思います。まず最初に MS-DOS プロンプト (あるいは Term) を開いて以下のコマンドを実行し、 JavaWebStart の Viewer を起動します。
javaws -viewer
しばらくすると、以下のような画面が表示されます。(スクリーンショットでは一覧に何もないですが、サンプルページを見た方は、ここに何か表示されていると思われるので、削除してください。)
次に、ここをクリックして、サンプルページを再度開きます。以下のようなページが表示されます。
左右どちらの Applet にも、 <PARAM name="draggable" value="true"> を指定しているので、ドラッグアンドドロップできます。
次に、ブラウザを閉じて、 JavaWebStart の Viewer に戻ります。以下のスクリーンショットの様に、キャッシュビューワの一覧に、 "Duke arses over tip! Why?" が表示されています。
そして次に、 "Duke arses over tip! Why?" をドラッグし、キャッシュビューワの上にある
をクリックして、キャッシュされたアプリケーションを実行します。 JavaWebStart の View が起動され、
その上で、先ほど見ていたアプリケーションが動き出します。
この状態で、再び JavaWebStart の Viewer に戻り、キャッシュビューワ上にある
をクリックします。
画面を全て閉じて、デスクトップを確認すると、ショートカットが作成されたことが確認できます。
早速ショートカットをダブルクリックしてみます。すると、先ほどキャッシュビューワで実行した時と同じように、アプリケーションが起動されて動き出します。
このように、クライアントアプリケーションを、初回配布時のみブラウザから起動し、以降は JavaWebStart のショートカットから直接クライアントアプリケーションを呼び出すことができるようになるため、クライアントアプリケーションのインストールが、非常にシンプルなものに出来るというメリットがあります。このことにより、 Java で作成された Client / Server モデルのシステム導入に際し、各クライアントへのアプリケーションの配布で、省力化できると言うことを意味することになります。
そしてもうひとつ、ブラウザから Applet を呼び出すよりも、より早くアプリケーションを実行することができるようになると言うメリットもまた、兼ね備えることになります。また、 jnlp の有用性については、これだけではないので、未だしばらく執筆を続けていこうと思います。
長々とした記事にも関わらず、お付き合いいただきましたこと、感謝いたします。さて如何でしたでしょうか?
皆さんも、これを機会にご自分で作成された Applet を、 jnlp ファイルと draggable 属性を併用したアプリケーションを作成し、ご友人などを驚かせてみてください。(笑)
さて次回は、「 jnlp で複数バージョンの JDK を動かす」について執筆していきたいと思います。



Write a comment