1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Java(JFace, SWT)とJava Web Startでマルチプラットフォームクライアントアプリを作った件のメモ

Last updated at Posted at 2017-08-22

Javaで業務向けのマルチプラットフォームアプリを作ろうと思ったのが2013年、当時はRIAという言葉もすっかり死語になっていた頃になぜこのようなことをやろうとしたかというと、Javaで作られた既存の遺産が使えるからというだけで、今ならElectron(イマイチ流行ってないか?)やJava FX(死語か?)も選択肢に入ってくるのだろうが。
GUIはさすがにAWT, Swingはないだろうと思っていたので、Eclipseで実績があり、割と動作が機敏なJFace, SWTを使用した。
また要件として自動アップデート付きネット配信、exeでの単体配布も可能というものもあったので、JWS(Java Web Start), Launch4jも使用した。
すでに断片的情報しか覚えていないのできっとあまり役に立ちません。

  • 役に立ったwebページ(日本語サイトは少ない)

(Java)Java Web Startを使ってみた

JNLP ファイルの構文

Enhancing Security with Manifest Attributes

Unofficial Java Web Start/JNLP FAQ

Java SE 7徹底理解 第12回 デプロイメントの強化

Eclipse RCP application using Java web start not starting up

SWTアプリケーションを配布する方法

How to Use File Choosers

jnlpファイルの書き方(特にアップデート周り)
複数Jarをどうやって置くか

jar in jar loader

なぜだか忘れたが、複数のjarを一つのjarにまとめなければならず、EclipseでExportするときに何かを選択するとJar-in-jar-loader.zipが生成され、jarの中にjarを内包することができるようになる

antでビルドする

あとから一部Gradleにしたが、当時はEclipseからant.xmlを吐き出して作成した。

Launch4jによるexeの作り方

iconを用意する必要がある

参考サイト
JavaアプリをExe化するLaunch4jの使い方と仕組み

Javaセキュリティ設定の外し方

正規の方法ではアプリ証明書を使えば余計なダイアログは出なくなるはずだが、ここでは試作なのでオレオレ証明書でjarのsigningをし、クライアント側のJava設定にDL元のURLを入力してダウンロード&インストールを可能にする。それでも毎回ダイアログはでた気がする。
keytoolでオレオレ証明書を作成し、jarsignerをビルド時に実行するようにしておく。

アプリ証明書をどうするか

GMOが提供しているコードサイニング証明書が一番安そうだが1年間¥57,000(当時)でバカにならないので保留。
社内利用だけで商用ではないのに警告ダイアログを出ないようにするだけで年間万単位の支払いはないでしょということ。

参考サイト
コードサイニング証明書(GMO)

Chromeでの注意

Chromeはjnlpをダウンロードするだけで自動実行してくれないのでユーザが自分でクリックしないといけない。

Macでの実行

そのままでは起動せず、なにか引数みたいなものをつけた記憶があるが、忘れた。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?