「Java」Java Web Start (JWS) を使ってみた
今更感が否めないですが、Java Web Start ( JWS ) を使ってみたので、その時のメモ。
[ 環境情報 ]
Windows 7 SP1
Java SE 8
Internet Explorer 11
Apache HTTP Server 2.2.22
今回は Swing アプリケーションで試したので、手順としては以下の感じになります。
1. Swing アプリケーションの作成
2. JNLP ファイルの作成
3. アプリケーション起動用の Web ページの作成
4. Web サーバ ( 今回は Apache を使用 ) の導入
もちろん、JWS も RIA ( リッチ・インターネット・アプリケーション ) になるので、以下のあたりの制限を受ける感じになります。今回は「ローカルの Apache」、「keytool、jarsigner で自己署名」、「例外サイト・リストに追加」でやってます。
・【Java 7 u51 関連情報(1)】Java 7 Update51におけるRIAの新しいセキュリティ要件について (Oracle Technology Network Japan Blog)
https://blogs.oracle.com/otnjp/entry/java_7_u51_update_info
・アプリケーション開発時の考慮点
http://docs.oracle.com/javase/jp/7/technotes/guides/javaws/developersguide/development.html#intro
---- 上記ページから抜粋 -----
安全なサンドボックス内で実行されるように記述されたアプリケーションには、次の制限が適用される。
・ローカルディスクにアクセスできない。
・すべての JAR ファイルを同一ホストからダウンロードする必要がある。
・ネットワーク接続は、JAR ファイルのダウンロード元のホストに対してのみ有効になる。
・セキュリティーマネージャーはインストールできない。
・ネイティブライブラリは使用できない。
・システムプロパティーへのアクセスが制限される。アプリケーションは、JNLP ファイル内に定義されたすべてのシステムプロパティーに対する読み取り/書き込みアクセス権を持つほか、アプレットからアクセス可能なプロパティーセットに対する読み取り専用アクセス権を持つ。
---- 上記ページから抜粋 -----
1. Swing アプリケーションの作成
■ Test.java ( パネルにボタン追加して、ボタン押下にダイアログ表示する )
package test; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; public class Test { public static void main(String[] args) { JFrame frame = new JFrame("swing test"); frame.setBounds(200, 200, 100, 100); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel = new JPanel(); JButton button = new JButton("Button"); panel.add(button); frame.getContentPane().add(panel); button.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { JPanel panel = new JPanel(); JOptionPane.showMessageDialog(panel, "dialog"); } }); frame.setVisible(true); } }
コンパイル、.jar ファイルの作成、自己署名しておく。
javac test\Test.java jar cf test.jar test\* keytool -genkeypair -keystore keystore -storepass password -alias test jarsigner -keystore keystore -storepass password test.jar test
2. JNLP ファイルの作成
■ swingtest.jnlp
<?xml version="1.0" encoding="utf-8"?> <!-- JNLP File for SwingSet2 Demo Application --> <jnlp spec="6.0+" codebase="http://localhost/jws" href="swingtest.jnlp"> <information> <title>swing test</title> <vendor>test</vendor> </information> <security> <all-permissions/> </security> <resources> <j2se version="1.6+"/> <jar href="test.jar"/> </resources> <application-desc main-class="test.Test"/> </jnlp>
3. アプリケーション起動用の Web ページの作成
■ index.html
<html> <body> <a href="swingtest.jnlp">swingtest.jnlp</a> </body> </html>
4. Web サーバ ( 今回は Apache を使用 ) の導入
以下から適当なバージョンをダウンロードして、インストールする。
・Download - The Apache HTTP Server Project
http://httpd.apache.org/download.cgi
< Apache インストールディレクトリ >\htdocs\jws に、上記で作成した test.jar、swingtest.jnlp、index.html を配置する。
上記で作業は完了です。あとは「http://localhost/jws/index.html」にアクセスして、"swingtest.jnlp" をクリックすれば、JWS を使用して Swing アプリケーションが起動するはず。
ドキュメント的には以下になりますね。
・Java Web Start 開発者ガイド
http://docs.oracle.com/javase/jp/7/technotes/guides/javaws/developersguide/contents.html
※ Web ブラウザ経由だけでなく、javaws コマンドなるものもあるんですね・・・これはまた時間ある時試してみよう。
・javaws コマンド行
http://docs.oracle.com/javase/jp/7/technotes/tools/share/javaws.html
以上です。