1

WebベースのUI(Vaadinフレームワークを使用)を備えたJavaアプリケーションがあります。ユーザーにアプリを入手してローカルマシンで実行してもらいたい。一部のユーザーはあまり技術的ではない可能性があるため、これをできるだけシンプルで確実なものにする必要があります。

可能な解決策:

  1. 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すべてを同じディストリビューションにパッケージ化するのはやり過ぎのようです。

  2. 私が見ているもう1つのアプローチは、JavaWebStartを使用することです。私のアプリは、依存関係としてJetty JARを使用してJWSを介してダウンロードされ、この場合は組み込みJettyを起動します。ユーザーストーリー:ウェブサイトのボタンをクリックして、アプリをローカルで起動します。約5年前にプロキシの背後からJWSを使用する際に問題が発生したことを覚えています。依存関係をロードできませんでした。それでも問題があるかどうかはわかりません。それ以来、JWSを使用していないので、よく知っています。JWSのもう1つの問題は、アプリを起動するためにインターネット接続が必要になることです(少なくとも初めて、またはおそらく毎回)。これは常に可能であるとは限りません(一部の組織はインターネットに接続できません)。最後のJWSであるAFAIKは、JREがまだインストールされていない場合はインストールすることを提案しているため、エンドユーザーにとっては簡単なはずです。それか'

  3. 最後に、最後のアプローチは、launch4jやInstallShieldなどですべてをパックすることです。うまくいけば、これらのプログラムはJREをインストールできますが、JREはまだ存在せず、ヘッドレスモード(サーバー用)でも実行できます。

これまでのところ、オプション2は、JWSが必要なことを実行できると仮定すると、ほとんどのユーザーにとって最も簡単に見えます。

だから、私の質問はこれらです:

  • これらの3つのソリューションで、どのような追加の落とし穴がありますか?
  • 私の場合、どちらを選びますか?
4

1 に答える 1

0

私は解決策 1 と 3 の組み合わせを好みます。

  • まず、Web アプリケーションを実行する Jetty が埋め込まれた jar を作成します。この jar には、メイン クラス (組み込みの Jetty を起動する) と、"Main-Class" プロパティで構成された MANIFEST.MF が必要です。したがって、この jar は " java -jar myEmbeddedWebApp.jar" で実行できます。
  • 次に、launch4j を使用して、その jar の exe ラッパー (myEmbeddedWebApp.exe など) をビルドします。
于 2012-03-31T16:20:21.930 に答える