背景:
この辺の、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が必要っぽいのでそのあたりの差異も試してみたい。
以上。
コメント