JARパッケージとWARパッケージの違い

1. 概要

このクイックチュートリアルでは、* JavaでのJARパッケージとWARパッケージの違いに焦点を当てます。*
最初に、各パッケージオプションを個別に定義します。 その後、それらの違いを要約します。

2. JARパッケージ

簡単に言えば、JAR –またはJavaアーカイブ–はパッケージファイル形式です。 JARファイルの拡張子は_.jar_であり、*ライブラリ、リソース、メタデータファイルが含まれる場合があります*。
基本的に、圧縮された_.class_ファイルのバージョンと、コンパイルされたJavaライブラリおよびアプリケーションのリソースを含むzipファイルです。
たとえば、次は簡単なJARファイル構造です。
META-INF/
    MANIFEST.MF
com/
    baeldung/
        MyApplication.class
link:/java-jar-executable-manifest-main-class[_META-INF/MANIFEST.MF_ file]には、アーカイブに保存されているファイルに関する追加のメタデータが含まれている場合があります。
_jar_コマンドまたはlink:/executable-jar-with-maven[Maven]などのツールを使用して、https://www.baeldung.com/java-create-jar [JARを作成]ファイルを作成できます。 ]。

3. WARパッケージ

WARは、Web Application ArchiveまたはWeb Application Resourceの略です。 これらのアーカイブファイルには_.war_拡張子が付いており、* Webアプリケーションをパッケージ化するために使用され*、任意のサーブレット/ JSPコンテナにデプロイできます。
典型的な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_ディレクトリを含む定義済みの構造があります。
最後に、追加のソフトウェアを使用せずにlink:/executable-jar-with-maven[executable JAR]としてJARをビルドした場合、*コマンドラインからJARを実行できます。 または、ライブラリとして使用できます。 対照的に、WARを実行するにはサーバーが必要です。

5. 結論

この簡単な記事では、_。jar_と_.war_のJavaパッケージタイプを比較しました。 その際、両方とも同じZIPファイル形式を使用しますが、いくつかの重要な違いがあることに注意しました。