1. 概要
このクイックチュートリアルでは、JavaでのJARパッケージとWARパッケージの違いに焦点を当てます。
まず、各パッケージオプションを個別に定義します。 その後、それらの違いを要約します。
2. JARパッケージ
簡単に言えば、JAR(またはJavaアーカイブ)はパッケージファイル形式です。 JARファイルの拡張子は.jarであり、ライブラリ、リソース、およびメタデータファイルが含まれる場合があります。
基本的に、これは .class ファイルの圧縮バージョンと、コンパイルされたJavaライブラリおよびアプリケーションのリソースを含むzipファイルです。
たとえば、単純なJARファイル構造は次のとおりです。
META-INF/
MANIFEST.MF
com/
baeldung/
MyApplication.class
META-INF / MANIFEST.MFファイルには、アーカイブに保存されているファイルに関する追加のメタデータが含まれている場合があります。
JAR ファイルは、 jar コマンドを使用するか、Mavenなどのツールを使用して作成できます。
3. WARパッケージ
WARは、WebApplicationArchiveまたはWebApplicationResourceの略です。 これらのアーカイブファイルの拡張子は.warであり、任意のサーブレット/JSPコンテナにデプロイできるWebアプリケーションをパッケージ化するために使用されます。
典型的なWARファイル構造のレイアウト例を次に示します。
META-INF/
MANIFEST.MF
WEB-INF/
web.xml
jsp/
helloWorld.jsp
classes/
static/
templates/
application.properties
lib/
// *.jar files as libs
内部には、 META-INF ディレクトリがあり、MANIFEST.MFにWebアーカイブに関する有用な情報が保持されています。 META-INF ディレクトリはプライベートであり、外部からアクセスすることはできません。
一方、HTMLページ、画像、JSファイルを含むすべての静的Webリソースを含むWEB-INFパブリックディレクトリも含まれています。 さらに、 web.xml ファイル、サーブレットクラス、およびライブラリが含まれています。
JARの構築に使用したものと同じツールとコマンドを使用して、.warアーカイブを構築できます。
4. 主な違い
では、これら2つのアーカイブタイプの主な違いは何ですか?
最初の最も明白な違いは、ファイル拡張子です。 JARの拡張子は.jarですが、WARファイルの拡張子は.warです。
2つ目の主な違いは、その目的と機能です。 JARファイルを使用すると、複数のファイルをパッケージ化して、ライブラリ、プラグイン、またはあらゆる種類のアプリケーションとして使用できます。 一方、WARファイルはWebアプリケーションにのみ使用されます。
アーカイブの構造も異なります。任意の構造のJARを作成できます。 対照的に、WARには、WEB-INFおよびMETA-INFディレクトリを持つ事前定義された構造があります。
最後に、追加のソフトウェアを使用せずに実行可能JAR としてビルドすると、コマンドラインからJARを実行できます。 または、ライブラリとして使用することもできます。 対照的に、WARを実行するにはサーバーが必要です。
5. 結論
この簡単な記事では、.jarと.warJavaパッケージタイプを比較しました。 その際、どちらも同じZIPファイル形式を使用していますが、いくつかの重要な違いがあることにも注意しました。