Java Web Startを使用して、SWTアプリケーションを配置する

見栄えの良いクライアントサイドJavaアプリケーションの開発

ここ数か月にわたって、Standard Widget Toolkit (SWT)は弾みをつけ続けており、Java開発者の興味をますます捕らえています。SWTアプリケーションの開発プロセスのある時点(通常は、基本的なプロトタイプが使用可能になった後)では、配置過程に対する懸念が生じます。従来のJavaアプリケーションとは異なり、SWTアプリケーションは、アプリケーションが機能する前にいくつかのオペレーティング・システムに特有のライブラリのロードが必要となります。これらのライブラリの配置とメンテナンスを行っている間、頭が痛くなるかも知れませんが、解決策として”SunのJava Web Start”があるので安心してください。Java Web StartとSWTとの調和は、見栄えの良いクライアント側Javaアプリケーションを配置させる強力なツールとなります。

Jeff Gunther (jeff.gunther@intalgent.com), General Manager, Intalgent Technologies

Jeff Gunther (Studio B著者)は、Java 2 Enterprise EditionおよびLotus Notes/Dominoを使用するソフトウェア製品とソリューションの新興プロバイダーである、Intalgent Technologiesのゼネラルマネージャーおよび創設者です。Jeffは複雑なソフトウェア・システムを分析、設計、開発、展開、保守した経験を持つ、アプリケーションとインフラストラクチュアの設計者です。彼の多種多様な経験は、ウェブサーバーからエンベディッドデバイスまで、マルチプラットフォームで動作するソフトウェアの完全なライフ・サイクル開発を含んでいます。彼はその初期の、「pre-Mosaic」の時代からインターネット業界に携わっています。Jeffの連絡先はjeff.gunther@intalgent.com です。



2003年 6月 19日

SWTの概要

開発コミュニティーへのStandard Widget Toolkit(SWT)の紹介は、よりよい時期に実現できませんでした。SunのJava Foundation Classes(JFC)が、数年間クライアント・サイドのアプリケーション開発者を満足させていた一方、多くの人はさまざまな理由のためにSWTを使用することを避けてきました。多くの開発者および設計者にとって、従来のネイティブ・デスクトップ・アプリケーションのようにビジュアルで見ることができ、操作でき、実行できるクライアント側Javaアプリケーションを開発するという夢の実現は、とても遠いことのように感じられました。

その後2001年の半ばに、Eclipseプロジェクトが開発業界に突然現れました。当初、EclipseプロジェクトはJava用のオープン・ソースIntegrated Development Environment (IDE)としてのみ認められていました。しかしながら、プロジェクトの適用範囲ははるかに広く、Eclipseの開発中に、SWTツールキットが誕生しました。JFCや同系統にあたるAbstract Window Toolkit (AWT)と同様に、SWTツールキットは開発者に一連のウィジェットを供給します。しかし、SWTと他のツールキットの主な違いは、オペレーティング・システムが強調するGUIウィジェットをSWTが使用していることです。このアプローチは、Java開発者にネイティブ・デスクトップ・アプリケーションのように「感じる」ソリューションを実装するためのクロス・プラットフォームのAPIを提供します。


Java Web Startの概要

言語に関係なく、ツールなしで従来のデスクトップ・アプリケーションを配置しメンテナンスすることは、開発者にとって、頭痛の種です。ソフトウェアの新バージョンがリリースされると、すべてのワークステーションに手を入れて更新しなければならないという思いには、最も優秀なサポート部門でさえ頭を悩ませています。Java開発者の配布とメンテナンスの要件を緩和するために、Sun MicrosystemsはJava Web Startを数年前に発表しました。このテクノロジーを使えば、エンドユーザのワークステーションにおけるJavaアプリケーションの配布、メンテナンス、改良は非常に単純化させることができます。

アプリケーションを立ち上げる最初のツールとしてウェブ・ブラウザを使うと、Java Web StartはSunのJava Runtime Environmentに含まれているヘルパー・アプリケーションをローカルにインストールします。ユーザがJava Network Launching Protocol (JNLP)ファイルにアクセスする場合は常に、このアプリケーションは、ユーザのワークステーションに自動的にダウンロードされて起動されます。全体のプロセスは、エンドユーザとの対話をほとんど要求せず、アプリケーションを配布する努力を非常に単純化します。Java Web Startについての詳細に関しては記事の最後にある参考文献を参照してください。


File viewerアプリケーション

Java Web Startを使用したSWTアプリケーションを配置させる方法に関する実装について検討する前に、配置させる予定のアプリケーションについて見ておきましょう。この記事に収められたアプリケーションは、Eclipseプロジェクトによって提供されたアプリケーションの一例です。図1で示されるように、アプリケーションはユーザがハード・ディスク上のファイルおよびフォルダーを参照することができるシンプルなクロス・プラットフォームfile viewer です。

図1. File viewer はWindows XP上で動かしています。
図1. File viewer はWindows XP上で動かしています。

SWTおよびJava Web Startのクロス・プラットフォーム能力を実証するため、スタンド・アロン・アプリケーションの例は、Microsoft Windows および Red Hat Linux上で動くようにパッケージ化されました。


環境条件

このドキュメントの中で使用されるコードは、この記事の最後でダウンロードすることが可能です。Java Web Startでfile viewerアプリケーションの十分なテストをするためには、最低限、次のような環境を満たしていなければなりません。(参考文献よりダウンロード・リンクを参照してください)

  • Microsoft Windows XP あるいは Red Hat Linux 8 のオペレーティング・システム
  • Java 2 SDK, Standard Edition 1.4以降のバージョンがインストールされていること。
  • Apache Ant 1.5.3以降のバージョンがインストールされていること。
  • Jakarta Tomcat 4.1.24以降のバージョンがインストールされていること。

Antビルドスクリプトはクロス・プラットフォームで構築できるように配慮されていますが、file viewerアプリケーションはMicrosoft Windows XP並びに、Red Hat Linux8のオペレーティングシステム上だけでテスト確認されています。さらに、Tomcatがあなたのローカルのワークステーション上で8080ポートを仕様して動作していると仮定しています。では、例題のアプリケーションをインストールして、ビルドし、実行してみましょう。


file viewerアプリケーションのインストール

file viewerアプリケーションのインストールは、次のステップで行います。:

  1. 参考文献のリンクより、ソース・コード・パッケージをダウンロードしてください。
  2. fileviewer.zip ファイルをテンポラリーのディレクトリへ解凍してください。

セキュリティとコードサインニング

AWTやJFCと異なり、SWTはオペレーティング・システムのネイティブ・ウィンドウ環境と強固に統合されています。SWTは、プラットフォーム非依存のAPIとオペレーティング・システムとの間の統合を管理するために、システム・ライブラリーを使用します。デフォルトでは、Java Web Start 上で動くアプリケーションは、限定されたサンドボックス内で起動しています。この環境は、ワークステーションのファイル・システムやシステム・ライブラリーや他のリソースなどへのアクセスをコントロールしています。SWTがシステム・ライブラリーをロードするためには、サンドボックスの外部で動作する必要があるので、Java Web Startで配置された全てのJARファイルにデジタル署名を付ける必要があります。このアプリケーションが広いユーザ・ベースへ配置される必要はないので、自己署名したテスト用の証明書を作成すればよいでしょう。

みなさんが生産物にSWTアプリケーションを導入するつもりならば、ThawteまたはVeriSignのような認証機関から証明書を得ることを強く勧めます。


自己署名証明書の作成

自己署名のテスト証明書を作成するためには、次のステップを行ってください。

  1. ソース・コードを解凍したディレクトリ内で次のコマンドを実行します。keytool -genkey -keystore keystore -alias myself

    パスワードや名前、住所などを含んだ新しいキーに関する詳細を入力するように促されるでしょう。提供されるAnt ビルドプロセスを使用するためには、パスワードに「password」をセットしてください。ハードコードされた「password」を使用したくない場合は、build.xmlファイル内の「sign-jars」ターゲットを編集してください。各JARファイルに署名する実際のプロセスは、Antのビルド中に終了します。

  2. Keystoreが適切に作成されたことを確認するために、ソース・コードを解凍したディレクトリ内で次のコマンドを実行します。keytool -list-keystore keystore

    出力は次のようなものになるでしょう。

    Keystore type: jks
    Keystore provider: SUN
           
    Your keystore contains 1 entry
           
    myself, Jun 3, 2003, keyEntry,
    Certificate fingerprint (MD5):B8:C4:48:ED:68:E8:FE:47:83:78:F5:14:4E:28:5C:80

file viewer アプリケーションの構築

file viewerアプリケーションを構築するためには、次のステップを行ってください。

  1. 環境を初期化するために、ソース・コードを解凍したディレクトリ内で次のコマンドを実行します。ant clean
  2. 下記のコマンドを実行してビルドプロセスを開始します。ant

もしあなたの環境が必要な条件を満たし適切に設定さていれば、次のような出力となるでしょう。

Buildfile: build.xml
init:
compile-common:
compile-module:
     [echo] Compiling ...
package-common:
package-swtlib:
sign-jars:
     [echo] Signing JARS...
  [signjar] Signing Jar : D:\FileViewer\dist\swt-lib.jar
  [signjar] Signing Jar : D:\FileViewer\dist\fileviewer.jar
     [copy] Copying 1 file to D:\FileViewer\dist
  [signjar] Signing Jar : D:\FileViewer\dist\swt-win32.jar
package-web:
      [war] Building war: D:\FileViewer\dist\fileviewer.war
default:
BUILD SUCCESSFUL
Total time: 6 seconds

file viewerアプリケーションの実行

Java Web Startを使用してfile viewerアプリケーションを配置する前に、アプリケーションをローカルで実行してみましょう。アプリケーションを開始するには、ソース・コードを解凍したディレクトリ内で次のコマンドを実行してください。ant run

Antスクリプトを実行するとfile viewerアプリケーションが現れます。図2のアプリケーションはRed Hat Linux 8での実行例です

図2. Red Hat Linux 8上で動作しているFile viewer
図2. Red Hat Linux 8上で動作しているFile viewer

file viewerアプリケーションの配置とテスト

Tomcat 4へアプリケーションを配置するには、次のステップを行ってください。

  1. Tomcat4下のdistディレクトリからwebappsディレクトリへfileviewer.war ファイルをコピーしてください。
  2. Tomcat4の起動のためにスクリプトを実行してください。
  3. ウェブ・ブラウザで次のURLを開き、「Launch Application」リンクをクリックしてください。http://localhost:8080/fileviewer/index.html

    リンクをクリックすると、アプリケーションのJARファイルがワークステーションにダウンロードされている間、次のような画が表示されるでしょう。

    図3.File viewer
    図3.File viewer
  4. アプリケーションが初めてダウンロードされたときに図4に示されるダイアログ・ボックスが表示されるでしょう。
    図4.セキュリティ警告
    Security warning

    file viewerアプリケーションを開始するために「start」をクリックしてください。


JNLPファイルの実装

ここまでに、SunのJava Web Startを使用して、SWTアプリケーションを構築し、配布し、配置させる方法を説明してきたので、JNLPファイルの実装方法についてレビューしてみましょう。Java Network Launching Protocol仕様は、Java Community Process (JCP)に準拠しています 。この記事の目的はこのテクノロジーを使用して、SWTアプリケーションを配置するという仕様を説明することなので、あまり多くのバックグランド情報は説明していません。Java Web Startに関しての詳細および背景に関しては、参考文献よりSteve Kim氏の記事「Java Web Start」を参照してください。

リスト1は、SWTアプリケーションのためにJNLPファイル内で使用される様々なタグを示しています。

リスト1.index.jnlpファイル
1    <?xmlversion="1.0" encoding="utf-8"?>
2       <jnlp spec="1.0+"codebase="http://localhost:8080/fileviewer"href="index.jnlp">
3           <information>
4                   <title>File Viewer</title>
5                   <vendor>IBM developerWorks</vendor>
6                   <homepage href="index.html"/>
7                   <description>File Viewer</description>
8                   <description kind="short">FileViewer</description>
9           </information>
10          <security>
11                   <all-permissions/>
12           </security>
13           <resources>
14                   <j2se version="1.4"/>
15                   <jar href="fileviewer.jar"/>
16                   <nativelib href="swt-lib.jar"/>
17           </resources>
18           <resources os="Windows"> 
19                   <jar href="swt-win32.jar"/>
20           </resources>
21           <resources os="Linux"> 
22                   <jar href="swt-linux.jar"/>
23           </resources>
24           <application-descmain-class="org.eclipse.swt.examples.fileviewer.FileViewer"/>
25   </jnlp>

このXMLファイルの重要な部分を見てみましょう。

  1. SWTアプリケーションは実行に際しシステム・ライブラリのロードが必要なので、ユーザのワークステーションにフルアクセスする必要があります。10~12行目では、アプリケーションがクライアント環境へフルアクセスを要求できるかについて表しています。Java Web Start がこのレベルのアクセスを認めるには、すべてのアプリケーションのJARファイルにデジタル署名を付ける必要があります。
  2. 16行目で示すように、JARファイルがネイティブ・ライブラリーを含んでいるということをJava Web Startに伝えるためには、nativelibタグを宣言する必要があります。file viewerアプリケーションの例では、このJARファイルが Windows DLLおよびLinux用の一連のSOファイルを含んでいます。
  3. 18~23行目では、各オペレーティング・システム向けの適切なSWT JARをロードしています。「resources」タグにより、固有のオペレーティング・システムおよびアーキテクチャーのみにリソースが使用されるよう保護することができます。OS属性は、資源エレメントが判断するべきオペレーティング・システムを指定します。この値は、エンドユーザのos.name Javaシステム・プロパティに基づきます。この例では使用されていませんが、Javaライブラリへのアクセスをさらに厳しく制限するために、arch属性を使用することもできます。arch属性は、エンドユーザのos.arch Javaシステム・プロパティに基づきます。

JNLPファイルの様々な要素およびフォーマットに関する詳細に関しては、後述の参考文献を参照してください。


要約

SWTユーザ・インターフェース・ツールキットおよびJava Web Startの結合は、高度な対話型のクライアント・サイドJavaアプリケーションを配置するための一連のツールを開発者に提供します。file viewerアプリケーションの例は、Java Web Startによって配布するスタンド・アロンのSWTアプリケーションを作成するために使用できるフレームワークを提供しています。

参考文献

  • この記事の全体にわたって実証されたソース・コードをダウンロードすることができます。
  • Sun MicrosystemsからJava 2 SDK1.4.1をダウンロードすることができます。
  • Apache Software FoundationからAnt 1.5.3 をダウンロードすることができます。
  • The Jakarta projectからTomcat 4.1.24 をダウンロードすることができます。
  • Java Web Startの概論およびクライアント・サイドのJavaアプリケーションの開発と配置に関する情報に関しては、Steve Kim氏の 「Java Web Start」 (developerworks, September 2001)を参照してください。
  • Java Network Launching Protocol and API の仕様および参照インプリメンテーションに関する情報は、Sunの Web siteで利用可能です。
  • Eclipse project はこの記事のソースコードで使用したSWTツールキットを提供しています。
  • Eclipse Technical Overview は、Eclipseプラットフォームのコア・コンポーネントへの導入を提供しています。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Open source, Java technology
ArticleID=237200
ArticleTitle=Java Web Startを使用して、SWTアプリケーションを配置する
publish-date=06192003