バナー画像

Java Web Startとは

Java Web Startとは、Webブラウザと関連付けることで使える補助アプリケーションのことです。

WebブラウザからJavaアプリケーションをダウンロードして実行できます。

その他、下記のような機能も備えています。

Java Web Startの機能
  • ワンクリックでアプリケーションを起動可能
  • 常に最新バージョンにアプリケーションをアップデート
  • 複雑なインストール作業・アップグレード作業が不要

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 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のインストール確認画面の画像

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サイトに格納しましょう。

先述したように、ここではMAMPを使っています。

MAMPに該当ファイルを格納する画像

MAMPで該当ページを開くと、テキストとリンクが表示されているはずです。

リンクをクリックすると「sample.jnlp」がダウンロードできます。

ローカルホストでJava Web Startをダウンロードする画像

ダウンロードした「sample.jnlp」は、普通に開こうと思うと下記の画像のように警告が出ると思います。

警告の画像

この場合、Macの「システム環境設定」の「セキュリティーとプライバシー」から開けますが、開いてもブロックされるはずです。

なぜならJava 7 Update 51以降、自己署名付きのJavaアプリを開く場合は、配布するサイトを「例外サイト・リスト」に含める必要があるからです。

そのため、Javaのコントロール・パネルからサイトを追加します。

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を利用する際は、ぜひ本記事を参考にしてみてください。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。