home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

Java/JREをバンドルしたJavaのパッケージング、あるいはインストーラの作成(2019-01時点参考URLメモ)

Java/JREをバンドルしたJavaのパッケージング、あるいはインストーラの作成(2019-01時点参考URLメモ)

Java / JREをバンドルしたJavaのパッケージング、あるいはインストーラの作成(2019-01時点参考URLメモ)
id: 1454 所有者: msakamoto-sf    作成日: 2019-01-12 20:37:42
カテゴリ: Java 

背景:

  • Java11でpublic JREが無くなる。このため、JREをインストールしておいてもらえば、あとは実行可能jarファイル渡してダブルクリックするだけでOS側の拡張子連携によりJavaプロセス起動、という方式が採用しづらくなる。
    • public JREが無いということは、OS側に拡張子 .jar をjavaコマンドで実行する連携設定をインストーラ一発で入れられないということ、と理解して上の文章を書いてる。
    • 参考 : Java 11ではPublic JREが本当になくなりました - AOEの日記
  • JDK8までは javapackager というコマンドで、Inno Setup などサードパーティ製のインストーラ生成ツールと連携し、JREバンドルしたパッケージングが可能だった(っぽい)。
  • Java11から、JREバンドルして、exeか何かダブルクリックするだけで実行できる配布方式どうすりゃええねん・・・。

この辺の、2015年・・・Java8が出る前後くらいの時代の、方式やツール類が比較的よくまとめられてるのが以下:

とはいえ2019年になりJava8がEOL、Java11がLTSとなった今、javapackagerに頼ることは(少なくともFXアプリを作るのでなければ)厳しい。

一応、Java11にポーティングされたjavapackagerが単体であるにはあるらしく、それを使ったビルド方法の解説記事もあるが・・・ちと厳しいかなぁ・・・。

仕事柄触ってる有名どころのJavaアプリ + インストーラとしては、PortSwigger の Burp Suite がある。これ、インストーラのEXEが提供されてて、インストールするとjarとjreがバンドルされてて、OSのアプリ一覧(Windowsならスタートメニュー)にも登録され、簡単に起動できる。

Burp Suite の場合、INSTALL4J という商用製品を使ってるらしい。C:\Program Files\BurpSuiteCommunity\.install4j というフォルダができてて、そこにいろいろ入ってた。

良さそうではあるが、有償なのが敷居が高い・・・。製品というわけでもなく、社内でちょっと使う程度のツールでどこまで金を出せるか・・・。あと、OSS作りたいとか。

もちろんJava開発陣も javapackager が無くなったことは気にしてるらしく、以下のJEP 343でjavapackagerと同等で、もうちょっとシンプルなパッケージングツール作りたいね、という話は進んでるらしい。

が、さすがにこれのリリースを待つのは気が長すぎる、現状の範囲内でJava8~Java11の移行期を乗り切れる無償の、できればOSSフレンドリなツールはないか?
→とりあえず見つかったのが以下。

Win7環境とちょっと古い記事になるが、実際に3種類試した人が記事書いてくれてた:

ただ、上記記事では JSmooth と exewrap が若干微妙なところがあるらしい。起動後しばらくしてマウスカーソルが砂時計になったり(JSmooth)、jvm.dllがロードできない(exewrap)など。

以下はexewrapを使って配布パッケージを作ってみた人の記事。ここでは問題なさそう。

ざっとググった主観だが、利用者と実績が一番多いのは Launch4j に思える。StackOverflowでの質疑応答も多いっぽい。
また、exewrapはWin専用だが、Launch4j はMacも対応している(要 Xcode)。
Launch4jはJREバンドルも対応してるようなので、最も無難な選択肢に思える。

Launch4jを使った記事の参考:

また、Java9でのモジュール導入により、Java11にもなれば jdeps + jlink で必要なモジュールのみでJREの容量を削減できらしい。これも Launch4j と組み合わせられると嬉しいかも。

機会があれば、Launch4jちょっと触ってみたい。GUIだけなら単体で動かせるようだが、Mavenプラグイン経由となるとどうもMinGWが必要っぽいのでそのあたりの差異も試してみたい。

以上。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2019-01-12 20:38:02
md5:f53106e41c8f4d192e2e28142bc40720
sha1:9c4250dc422b27efc23da248692cd65bac6f0a39
コメント
コメントを投稿するにはログインして下さい。