Java アプリケーションを配布する最適な方法は何ですか?[閉まっている]

StackOverflow https://stackoverflow.com/questions/80105

質問

Java は私が選んだプログラミング言語の 1 つです。しかし、アプリケーションをエンドユーザーに配布する際には、常に問題に遭遇します。

ユーザーに JAR を提供することは、私が望むほどユーザーフレンドリーであるとは限りません。また、Java WebStart を使用するには、Web サーバーを保守する必要があります。

Java アプリケーションを配布する最適な方法は何ですか?Java アプリケーションがユーザーのコンピュータにアーティファクトをインストールする必要がある場合はどうすればよいでしょうか?優れた Java インストール/パッケージング システムはありますか?

役に立ちましたか?

解決

配布要件に応じて、さまざまなソリューションがあります。

  1. 瓶を使うだけです。これは、ユーザーが正しい Java バージョンをインストールしていることを前提としています。そうでない場合、ユーザーは「クラス ファイル形式のバージョン」例外を受け取ります。企業内での社内配布にはこれで十分です。

  2. launch4j と NSIS などのインストーラーを使用します。これにより、より多くの制御が可能になりますが、ユーザーは Java ランタイムのアンインストールなどの愚かな操作を行うことができます。これはおそらく最も一般的なアプローチであり、現在私が使用している方法です。

  3. ウェブスタートを使用します。これも、ユーザーが正しい Java バージョンをインストールしていることを前提としていますが、作業を開始するのははるかに簡単です。私の経験では、これは厳しく制御されたイントラネット環境では問題ありませんが、大規模な展開では奇妙な障害が多数発生するため面倒になります。Java 1.7 の新しいプラグイン テクノロジにより改善される可能性があります。

  4. Excelsior JET などのネイティブ コード コンパイラを使用し、実行可能ファイルとして配布するか、インストーラにラップします。高価で、通常は Java の少し古いバージョンに関連付けられ、動的クラスローディングに多少の問題がありますが、サポートの手間を最小限に抑える必要がある大規模なデプロイメントには非常に効果的です。

他のヒント

高度なインストーラー を使用すると、Java アプリを Windows 実行可能ファイルとしてパッケージ化することが簡単になり、セットアップ方法が非常に柔軟になります。Java アプリケーションを Windows クライアントに配布するには、これが最も簡単な方法であることがわかりました。

Jスムーズ これは、jar を取得し、それを標準の Windows 実行可能ファイルにラップする単純なプログラムです。シンプルな GUI が付属しており、必要な JVM を構成したり、アプリケーションにバンドルしたり、まだインストールされていない場合はダウンロードするオプションを提供したりできます。exe ファイルをそのまま送信することも、可能性のある依存関係を含めて圧縮することもできます (または、プログラムの起動時にネットから追加の依存関係をダウンロードさせることもできます)。また、ビールやスピーチと同様に無料ですが、これは良いことかもしれません(またはそうでないかもしれません)。

それは、ターゲット ユーザーがどの程度洗練されているかによって異なります。ほとんどの場合、Java ベースのアプリを実行しているという事実からそれらを分離する必要があります。適切な処理 (スタート メニュー エントリ、ランチャーの作成、プログラムの追加/削除による登録など) を実行し、すでに Java ランタイムがバンドルされているネイティブ インストーラーを提供します (そのため、ユーザーは Java ランタイムを知ったり気にしたりする必要はありません)。私たちのクロスプラットフォームインストールツールを提案したいと思います。 BitRock インストールビルダー. 。これは Java ベースではありませんが、Java アプリケーションをパッケージ化するためによく使用されます。Ant と簡単に統合でき、Unix/Linux/Mac から、またはその逆から Windows インストーラーを構築できます。生成されたインストーラーはネイティブであるため、自己解凍手順やターゲット システムに既に存在する JRE を必要としません。これにより、インストーラーが小さくなり、頭痛の種が軽減されます。また、オープンソース プロジェクト用の無料ライセンスがあることにも触れておきたいと思います。

実行可能ファイルが最適ですが、プラットフォームが制限されます。GCJ を使用します。 http://gcc.gnu.org/java/ Linux が実行可能ファイルを生成し、 launch4j を使用する場合: http://launch4j.sourceforge.net/ Windows 実行可能ファイルを生成します。Linux でパッケージ化するには、任意の rpm または deb パッケージャーを使用できます。win32の場合は試してください http://en.wikipedia.org/wiki/Nullsoft_Scriptable_Install_System

実際の G​​UI を備えたエンド ユーザー アプリケーションの場合は、プログラムを作成した言語 (Java) を無視し、選択したプラットフォームごとにネイティブ インストーラーを使用する必要があります。Mac の場合は .dmg が必要ですが、Windows の場合は .msi または .exe インストーラーが最適です。Windows では、InstallShield や InstallAnywhere よりも不快感が少ないという理由だけで、NullSoft の NSIS を好みます。OSX では、JVM がすでに存在していることを信頼できます。Windows では、必要に応じてチェックしてインストールする必要があります。Linux を使用する人は Java GUI アプリケーションを実行しませんが、実行可能 .jar をどう扱うかを知っている人は少数です。

使ったことないのに NSIS (Nullsoft Scriptable Installer System) 私自身、必要な JRE がターゲット システムにインストールされているかどうかをチェックするインストール スクリプトがあります。

多くのサンプル スクリプトが次の場所から入手できます。 コード例 そして 現実世界のインストーラー 次のようなページ:

(私は実際にスクリプトを使用していないので、推奨するものとして受け取らないでください。)

プロジェクトとその依存関係を 1 つの jar ファイルにパッケージ化する方法が必要でした。

Maven2 Assembly プラグインを使用して必要なものを見つけました。 Maven2 アセンブリ プラグイン

これは、の機能を複製しているように見えます 1瓶, ですが、それを実行するために追加の構成は必要ありません。

単純な Java アプリの場合は、Jar を使用するのが好きです。ユーザーがクリックするだけで 1 つのファイルを配布するのは非常に簡単です (Windows)。

java -jar jarname.jar

私見ですが、シンプルさが主な要件の場合は、jar が最適です。

Eclipse RCP アプリケーションを開発しています。通常、Eclipse アプリケーションを起動するために、実行可能ランチャーが含まれています。正しい Java バージョンが使用されるように、/jre サブディレクトリ内のアプリケーション フォルダー内の Java 仮想マシンを含めます。

次に、ユーザーのマシンにインストールするために Inno Setup をパッケージ化します。

Javaアプリケーションを配布する最良の方法は何ですか?Javaアプリケーションがユーザーのコンピューターにアーティファクトをインストールする必要がある場合はどうなりますか?良いJavaインストール/パッケージングシステムはありますか?

私の経験から言えば( いくつかのオプションを評価する), インストール4j 良い解決策です。あらゆるプラットフォーム用のネイティブ インストーラーを作成し、特に Java アプリのインストールを対象としています。詳細については、「」を参照してください。特徴」とウェブサイトで述べています。

ただし、install4j は商用ツールです。特に、ニーズが比較的単純な場合 (アプリケーションを配布していくつかのアーティファクトをインストールするだけ)、無料のもの ( イズパック またはすでに述べた Lauch4j)。でもあなたが求めたのは、 最高 私の現在の知識では、特に大規模または複雑な Java (EE) アプリを配布する場合は install4j が最適です。

最良の答えはプラットフォームによって異なります。Windows での展開の場合、次の組み合わせを使用すると良い結果が得られました。 1瓶 そして 起動4j. 。ビルド環境 (主に Ant スクリプト) を適切にセットアップするのに少し時間がかかりましたが、今ではかなり手間がかかりません。

私の観点からすると、優れた配布メカニズムは次のようなものを使用することです。 クリックワンス, 、 または ウェブスタート テクノロジー。バージョンをサーバーにデプロイするだけで、バージョンがリリースされると自動的にクライアントに配信されます。また、Eclipse RCP プラットフォームには、WebStart の機能だけでなく、それ以上の機能を実行する UpdateManager も含まれています。

ビルドには Maven2 を使用しているため、デプロイは簡単です。構築された jar をサーバー上の場所にコピーし、必要に応じて jnlp ファイルを更新すれば完了です。

installanywhere は良いですが高価です - 良い無料のものは見つかりませんでした

jar ファイルを他の依存する jar、設定ファイル、ドキュメントとともに run.bat/run.sh とともに圧縮します。エンドユーザーは、これを任意の場所に解凍し、必要に応じて run.bat を編集できる必要があります (ほとんどの場合、編集せずに実行できるはずです)。スタート メニュー、デスクトップ、システム トレイなどにエントリを作成する場合は、インストーラーが役立つ場合があります。

ユーザーとしては、解凍してインストールを実行するタイプの方が好きです (スタート メニューにはエントリーしないでください)。ただし、IT 業界以外の人は好みが異なる場合があります。したがって、アプリケーションが主に開発者を対象としている場合は、zip-run.bat ルートを使用し、一般向けのアプリケーションはインストーラーを使用してインストールできます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top