目次
Java Web Startとは
Java Web Startとは、Webブラウザと関連付けることで使える補助アプリケーションのことです。
WebブラウザからJavaアプリケーションをダウンロードして実行できます。
その他、下記のような機能も備えています。
- ワンクリックでアプリケーションを起動可能
- 常に最新バージョンにアプリケーションをアップデート
- 複雑なインストール作業・アップグレード作業が不要
Java 5〜10で搭載された後にJava 9にて廃止予定が告知されました。
そして、最終的にJava 11で廃止されています。
Java Web Startを実装する際には、JNLP(Java Network Launching Protocol)という特別なXMLファイルを作成します。
このJNLPファイルへのリンクを利用者がクリックすることで、WebブラウザでJava Web Start が起動する流れです。
Java Web StartはJava 11で廃止
そのため、Java 11を利用している場合はJava Web Startが使えませんので注意してください。
Java Web Startのサポート期限は?
オラクル(Oracle)は、Java SE 8のJava Web Startのサポート期限をJava SE 8のExtended Supportの終了まで延長したと報告しています。
詳細は下記の通りです。
デプロイメント・テクノロジーとJavaFXのサポート | ||||
---|---|---|---|---|
バージョン | 利用開始(GA)日 | Java Web Startサポート期限 | Java Plugin(Applet)サポート期限 | JavaFXサポート期限 |
6 | 2006年12月 | 2017年10月 | 2017年10月 | なし |
7 | 2011年7月 | 2017年10月 | 2017年10月 | 2019年7月 |
8 | 2014年3月 | 2030年12月 | 2019年3月 | 2025年3月 |
9とそれ以降 | なし | なし | なし |
参考:Oracle Java SE Supportロードマップ
Java Web Startをダウンロード(Download)
Java Web Startは特段ダウンロードする必要はありません。
と言うのも、Java 5.0以降では、Java Web StartはJRE (Java Runtime Environment)に含まれているからです。
JREとは、JDK(Java SE Development Kit)同様にオラクル社などが無償で提供しているJavaのダウンロードパッケージのことです。
自分でプログラムを開発することはないけど、他の人が書いたプログラムを実行する人のためのものなため、javaコマンドは含まれているものの、javacコマンドは含まれていません。
要するに、Javaをインストールすると、Java Web Startも自動的にインストールされているというわけですね。
Java Web Startソフトウェアは、Java Web Startテクノロジを使っているJavaアプリケーションを最初にダウンロードした際に自動的に起動します。
なた、アプリケーションを起動するたびに、アプリケーションのWebサイトに新しいバージョンがあるかどうか、Java Web Startソフトウェア・コンポーネントによってチェックが入ります。
もし新しいバージョンがあれば、自動的に最新バージョンがダウンロードされ、起動してくれます。
なお、JREに関しては以下の記事で詳しく解説していますので「JREって何だろう?」という方はチェックしてみてください。
【関連記事】
▶︎【初心者】JavaのJREとは?概要からインストール方法までを解説!【MACユーザー向け】
Java Web StartをMacで使うには?
Java Web StartをMacで使う場合も、MacにJavaを導入すればOKです。
お使いのパソコンにJavaが導入されているかは「システム環境設定」→「Java」→「一般タブの情報」から確認できます。
画像のようにバージョン、ビルドが記載されていればダウンロードされています。
Java Web Startを使ってみる
では実際に、Java Web Startを使ってみるサンプルを確認しましょう。
サンプルアプリのjavaファイルを作成します。
■記述例(SampleApplication.java) import java.awt.*; import javax.swing.*; import javax.swing.border.*; public class SampleApplication extends JFrame { private JPanel contentPane; public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { SampleApplication frame = new SampleApplication(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } public SampleApplication() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 400, 200); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); contentPane.setLayout(new BorderLayout(0, 0)); setContentPane(contentPane); JLabel lblNewLabel = new JLabel("New label"); contentPane.add(lblNewLabel, BorderLayout.CENTER); lblNewLabel.setText("Java Web Startを使ってみる!"); } }
作成したJavaアプリは、jarファイルとして圧縮が必要です。
そのため、作成したサンプルアプリをjarファイルに圧縮しましょう。
またその際、Java Web Startでアプリを配布するために「署名」が必要になります。
jarファイルに圧縮する際に「マニフェストファイル」を作成します。
この時、マニフェストファイルで「Permissions: all-permissions」を設定しましょう。
記述は下記の通りです。
Permissions: all-permissions Main-Class: SwingSampleSampleApplication
「manifest.mf」として保存します。
マニフェストファイルを作成したらjarファイルを作成しましょう。
コマンドは下記の通りです。
mbp:Desktop potepan$ javac SampleApplication.java mbp:Desktop potepan$ jar -cvfm SampleApplication.jar manifest.mf *.class マニフェストが追加されました Main.classを追加中です(入=1243)(出=697)(43%収縮されました) SampleApplication$1.classを追加中です(入=585)(出=399)(31%収縮されました) SampleApplication.classを追加中です(入=1210)(出=764)(36%収縮されました)
上記のように表示されると、ディレクトリに「SampleApplication.jar」が作成されているはずです。
この SampleApplication.jar に署名を追加していきましょう。
自己署名を作成するために、Javaの keytoolコマンド を用いてキーストアを作成します。
keytool -genkey -keystore myKeyStore -alias myAlias
パスワードの設定後に姓名や組織単位などを聞かれるので記入していきましょう。
mbp:Desktop potepan$ keytool -genkey -keystore myKeyStore -alias myAlias キーストアのパスワードを入力してください: 新規パスワードを再入力してください: Warning: -keyalgオプションがありません。デフォルトのキー・アルゴリズム(DSA)は、旧式のアルゴリズムで、現在は推奨されません。JDKの後続のリリースでは、デフォルトは削除される予定で、-keyalgオプションを指定する必要があります。 姓名は何ですか。 [Unknown]: Potepan Style 組織単位名は何ですか。 [Unknown]: Potepan Style 組織名は何ですか。 [Unknown]: Potepan Style 都市名または地域名は何ですか。 [Unknown]: Japan 都道府県名または州名は何ですか。 [Unknown]: Japan この単位に該当する2文字の国コードは何ですか。 [Unknown]: JP CN=Potepan Style, OU=Potepan Style, O=Potepan Style, L=Japan, ST=Japan, C=JPでよろしいですか。 [いいえ]: はい 90日間有効な2,048ビットのDSAのキー・ペアと自己署名型証明書(SHA256withDSA)を生成しています ディレクトリ名: CN=Potepan Style, OU=Potepan Style, O=Potepan Style, L=Japan, ST=Japan, C=JP
最後に全体の確認が入るので「はい」と入力して完了します。
入力が終わると「myKeyStore」が作成されているはずです。
キーストアを作成できた後に、Javaの jarsignerコマンド を用いて署名します。
jarsigner -keystore myKeyStore SampleApplication.jar myAlias
上記コマンドを入力するとパスワードを聞かれるので、先ほど設定したパスワードを入力してください。
mbp:Desktop potepan$ jarsigner -keystore myKeyStore SampleApplication.jar myAlias キーストアのパスワードを入力してください: jarは署名されました。 警告: 署名者の証明書は自己署名されています。
これでjarファイルの作成・署名の追加が完了です。
次に、JNLPファイルを作成します。
■記述例(sample.jnlp) <?xml version="1.0" encoding="utf-8"?> <jnlp spec="6.0+" codebase="http://localhost:8888/jre/" href="sample.jnlp"> <information> <title>Java Web Startサンプルプログラム</title> <vendor>Potepan Style</vendor> <offline-allowed/> </information> <security> <all-permissions/> </security> <resources> <j2se version="1.6+" /> <jar href="SampleApplication.jar"/> </resources> <application-desc main-class="SampleApplication"/> </jnlp>
spec属性に、jnlpファイルが適切に動作できる、JNLP仕様の最小バージョンを記述します。
ここでは「6.0+」としました。
codebase属性には、Javaアプリを配布するWebページのアドレスを指定します。
今回はMacのアプリ「MAMP」を使うので、「http://localhost:8888/jre/」としています。
href属性には、JNLPファイルを指定します。
そのほかの属性を含め、JNLPファイルの作成方法は公式サイトを参考にしてみてください。
参考:JNLP ファイルの構文
続いて、Javaアプリを配布するためのWebページをHTMLで作成します。
ここではサンプルなので簡単なページの作成になります。
■記述例(index.html) <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Java Web Startのサンプル配布サイト</title> </head> <body> <p>▼Java Web Startのサンプルアプリはこちら</p> <a href="sample.jnlp">Java Web Start</a> </body> </html>
ここまで作成した下記のファイルを配布するWebサイトに格納しましょう。
- SampleApplication.jar
- sample.jnlp
- index.html
先述したように、ここではMAMPを使っています。
MAMPで該当ページを開くと、テキストとリンクが表示されているはずです。
リンクをクリックすると「sample.jnlp」がダウンロードできます。
ダウンロードした「sample.jnlp」は、普通に開こうと思うと下記の画像のように警告が出ると思います。
この場合、Macの「システム環境設定」の「セキュリティーとプライバシー」から開けますが、開いてもブロックされるはずです。
なぜならJava 7 Update 51以降、自己署名付きのJavaアプリを開く場合は、配布するサイトを「例外サイト・リスト」に含める必要があるからです。
そのため、Javaのコントロール・パネルからサイトを追加します。
これらの設定を済ませることで、Javaアプリを起動できるはずです。
Java Web Startとアプレットの違いは?
Java Web Startは、ここまで説明してきた通りWebブラウザからJavaアプリケーションをダウンロードし、実行できるアプリケーションです。
そのため、ブラウザでの実行は行えません。
これによって、Javaプラグインをサポートしていないブラウザの確認ができます。
一方、アプレットはアプリケーションの中に組み込んで動くプログラムのことです。
アプレットを動作させるアプリケーションのほとんどは、Webブラウザになります。
Javaアプレットは、WebブラウザにJavaプラグインをインストールすれば利用可能です。
Java Web Startの代替・後継はある?
JWSの代替を目指して作られた「Gwtdown」というものがあります。
あくまで代替を目的に個人で作られたものです。
Java Web Startについてまとめ
今回はJava Web Startの概要や使い方について解説しました。
Java Web StartはJava 11では利用できず、サポート期限はJava SE 8のExtended Supportの終了まで(2030年12月)となっています。
もしJava Web Startを利用する際は、ぜひ本記事を参考にしてみてください。
先述したように、Java Web StartはJava 11で廃止されました。