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ファイル形式を使用していますが、いくつかの重要な違いがあることにも注意しました。