2011-12-17 8 views
1

WebベースのUI(Vaadinフレームワークを使用)を備えたJavaアプリケーションがあります。 ユーザーがローカルマシンでアプリを入手して実行するようにしたい。一部のユーザーは技術的にあまりできない場合がありますので、可能な限りシンプルで絶対的なものにする必要があります。WebベースのJavaアプリケーション+ Jetty + JREをエンドユーザーに配信するBKM

考えられる解決策:

  1. アプリを起動するためにWebアプリケーション+突堤+バッチやシェルスクリプトで分配を作成します。 にも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つの方法は、Java Web Startを使用する方法です。私のアプリケーションはJWSを介してJetty JARを依存してダウンロードされ、この場合には埋め込みJettyを開始します。 ユーザーストーリー:ウェブサイトのボタンをクリックすると、アプリをローカルで起動できます。 5年前にプロキシの背後からJWSを使用することに問題があることを覚えています。依存関係をロードできませんでした。それでも問題があるかどうかはわかりません。それ以来私はJWSを使用していないので、私はそれに精通しています。 JWSのもう一つの問題は、(少なくとも初回または毎回)いつでも可能なわけではない(一部の組織はインターネットに接続できない)、アプリケーションを起動するためにインターネットに接続する必要があるということです。 AFAIK、最後のJWSはJREをまだインストールしていない場合にインストールすることを提案しているので、これはエンドユーザにとっては簡単なはずです。 これはおそらくJWS(?)の潜在的な問題のためです。

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

これまでのところ、オプション2は、JWSが必要なことを行うことができると仮定すると、ほとんどのユーザーにとって最も簡単です。あなたはこれらの3つのソリューションを参照してください追加の落とし穴

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

  • 私の場合、どちらをお好みですか?

答えて

0

私は私が意味するソリューション1と3の組み合わせを好む:

  • まず、あなたのWebアプリケーションを実行している組み込みのJettyとjarファイルを構築します。このjarにはメインクラス(埋め込みJettyを開始するクラス)と "Main-Class"プロパティで構成されたMANIFEST.MFが必要です。したがって、このjarは "java -jar myEmbeddedWebApp.jar"で実行できます。
  • 次に、launch4jを使用して、そのjarのexeラッパーを構築します。たとえば、myEmbeddedWebApp.exe
関連する問題