【初心者向け】JARとWARの違いとは?Javaのアーカイブファイルを徹底解説!

こんにちは。ゆうせいです。

Javaで開発していると、JAR(ジャー)WAR(ワー) というファイル形式に出会うことがあります。
「JARとWARって何が違うの?」と疑問に思う新人エンジニアの方も多いでしょう。

この記事では、JARとWARの違い、用途、作成方法 をわかりやすく解説します!


JARとWARとは?

JAR(Java Archive)とWAR(Web Application Archive)は、どちらもJavaアプリケーションの実行に必要なファイルをまとめたアーカイブ形式です。
JARはJavaの一般的な実行ファイルで、WARはWebアプリ専用のパッケージという違いがあります。

📌 ざっくり説明すると…

  • JAR → Javaのプログラムをまとめたもの(主にデスクトップアプリやライブラリ向け)
  • WAR → Webアプリケーションをまとめたもの(Servlet, JSPを含むWeb向け)

では、それぞれ詳しく見ていきましょう。


JAR(Java Archive)とは?

✅ JARの特徴

  • Javaのプログラム(クラスファイルやライブラリ)をまとめたファイル
  • 主にスタンドアロン(単独で動作する)アプリケーションやライブラリで使用
  • 拡張子は .jar
  • 通常は java -jar コマンドで実行可能

JARファイルは、Javaアプリケーションを配布するための標準的な形式です。
Javaのプログラム(.class ファイル)や設定ファイル(META-INF ディレクトリなど)をZIP圧縮したファイルになっています。

🎯 JARファイルの用途

  1. スタンドアロンのJavaアプリ
    • 例:GUIアプリ(Swing、JavaFX)
  2. ライブラリとして使用
    • 例:Apache Commons、Spring FrameworkのJARファイル
  3. Androidアプリ開発
    • 一部のライブラリはJAR形式で提供

📌 JARの作成方法(例)

JavaのプログラムをJARにするには、以下のコマンドを使います。

jar cf myapp.jar MyClass.class

もし、JARファイルを実行可能(Runnable JAR)にしたい場合は、MANIFEST.MF にエントリポイントを指定します。

echo "Main-Class: MyMainClass" > MANIFEST.MF
jar cmf MANIFEST.MF myapp.jar MyClass.class

実行は以下のコマンドで行えます。

java -jar myapp.jar

WAR(Web Application Archive)とは?

✅ WARの特徴

  • JavaのWebアプリケーションをまとめたファイル
  • 主にサーバー(Tomcat, JBoss, GlassFish)で実行される
  • 拡張子は .war
  • Servlet、JSP、HTML、CSS、JavaScript などのWeb関連ファイルを含む

WARファイルは、JavaのWebアプリケーションをサーバーにデプロイ(配置)するためのパッケージです。
WARの構成はJARと似ていますが、特にWebアプリ向けのディレクトリ構成になっています。

🎯 WARファイルの用途

  1. Webアプリケーションのデプロイ
    • 例:ECサイト、管理システム、Webサービス
  2. ServletやJSPを含むアプリ
    • 例:Spring Bootを使ったWebアプリ
  3. 企業向けの業務システム
    • 例:社内用ポータルサイト

📌 WARのディレクトリ構成

WARファイルの中身は、以下のような構成になっています。

myapp.war
│── WEB-INF/              ← Webアプリの内部ファイル
│    ├── web.xml         ← 設定ファイル(Servletのマッピングなど)
│    ├── classes/        ← コンパイル済みのJavaクラス
│    ├── lib/            ← 依存するライブラリ(JARファイル)
│── index.jsp            ← JSPファイル
│── static/              ← 静的ファイル(CSS, JS, 画像など)

特に重要なのは WEB-INF ディレクトリ です。
この中には、アプリの設定ファイルや、Servletのクラスファイルが含まれます。

📌 WARの作成方法(例)

MavenやGradleを使うと、簡単にWARファイルを作成できます。
例えば、Mavenを使う場合は、pom.xml に以下の設定を追加します。

<packaging>war</packaging>

その後、以下のコマンドでWARファイルを作成できます。

mvn clean package

生成された .war ファイルをTomcatの webapps/ ディレクトリに配置すれば、自動的にデプロイされます。


JARとWARの違いを比較!

項目JAR(Java Archive)WAR(Web Application Archive)
役割JavaのプログラムをまとめるJavaのWebアプリをまとめる
拡張子.jar.war
実行環境Java仮想マシン(JVM)で実行Webアプリケーションサーバー(Tomcatなど)で実行
主な用途デスクトップアプリ、ライブラリWebアプリ、APIサーバー
含まれるもの.class ファイル、ライブラリ.class ファイル、JSP、Servlet、HTML、CSS

JARとWARの選び方

✅ JARを使うべき場合

  • スタンドアロンのJavaアプリを作るとき
  • ライブラリを作成するとき
  • Spring Bootの単体アプリ(Spring BootではjarでWebアプリも作成可能)

✅ WARを使うべき場合

  • Webアプリケーションをデプロイするとき
  • Tomcatなどのサーバーで動かすとき
  • JSPやServletを使うとき

最近のWeb開発では Spring Boot などを使って「JAR形式でWebアプリを作る」ことも増えています。
そのため、「JARでもWebアプリを動かせる」という点は覚えておくといいですね。


まとめ

  • JARはJavaプログラム全般に使われるアーカイブ形式
  • WARはWebアプリ専用のアーカイブ形式
  • JARはスタンドアロンのアプリやライブラリ向け
  • WARはTomcatなどのWebサーバーで実行するために使う

JARとWARの違いを理解すれば、Javaのアプリ開発で「どの形式を使うべきか?」が分かるようになります!
ぜひ、自分でJARやWARを作成して、実際に動かしてみてくださいね!

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。