WebベースのUI(Vaadinフレームワークを使用)を備えたJavaアプリケーションがあります。ユーザーにアプリを入手してローカルマシンで実行してもらいたい。一部のユーザーはあまり技術的ではない可能性があるため、これをできるだけシンプルで確実なものにする必要があります。
可能な解決策:
webapp + Jetty +バッチおよびシェルスクリプトを使用してディストリビューションを作成し、アプリを起動します。JREも含めるかもしれません。ユーザーストーリーは次のようになります。ZIPファイルをダウンロードし、解凍して「start.bat」または「start.sh」を実行します。スクリプトはJettyを起動し、「http:// localhost:8080/myapp」URLでWebブラウザを起動する可能性があります。「JREのインストール」、「Javaホームとは」、「JREが古すぎる」などの魔法はありません...これは、多くの非技術者の地獄を怖がらせるでしょう。ここでの問題:マシンにJREがない場合はどうなりますか?JRE(Win / Linux / MacOS用)で3つの異なるディストリビューションを作成することは避けたいと思います。3つのJREすべてを同じディストリビューションにパッケージ化するのはやり過ぎのようです。
私が見ているもう1つのアプローチは、JavaWebStartを使用することです。私のアプリは、依存関係としてJetty JARを使用してJWSを介してダウンロードされ、この場合は組み込みJettyを起動します。ユーザーストーリー:ウェブサイトのボタンをクリックして、アプリをローカルで起動します。約5年前にプロキシの背後からJWSを使用する際に問題が発生したことを覚えています。依存関係をロードできませんでした。それでも問題があるかどうかはわかりません。それ以来、JWSを使用していないので、よく知っています。JWSのもう1つの問題は、アプリを起動するためにインターネット接続が必要になることです(少なくとも初めて、またはおそらく毎回)。これは常に可能であるとは限りません(一部の組織はインターネットに接続できません)。最後のJWSであるAFAIKは、JREがまだインストールされていない場合はインストールすることを提案しているため、エンドユーザーにとっては簡単なはずです。それか'
最後に、最後のアプローチは、launch4jやInstallShieldなどですべてをパックすることです。うまくいけば、これらのプログラムはJREをインストールできますが、JREはまだ存在せず、ヘッドレスモード(サーバー用)でも実行できます。
これまでのところ、オプション2は、JWSが必要なことを実行できると仮定すると、ほとんどのユーザーにとって最も簡単に見えます。
だから、私の質問はこれらです:
- これらの3つのソリューションで、どのような追加の落とし穴がありますか?
- 私の場合、どちらを選びますか?