【じゃーふぁいる】

JARファイル とは?

最終更新:
💡 Javaアプリを「まとめてパッケージ」にしたアーカイブファイル

Javaアプリケーションのクラスファイル・リソース・メタデータをまとめたZIPベースのアーカイブファイル。Java配布の標準パッケージ形式。

📌 このページのポイント
個別ファイルを1つのJARへ クラス・リソース Main.class Utils.class 設定・画像 格納 app.jar クラス 設定・画像 MANIFEST.MF 必要に応じて格納 java -jarで起動するには Main-Classなどを設定した実行可能JARと Javaの実行環境が必要 ライブラリとして使うJARもある
JARはクラスやリソースをまとめるZIPベースのファイル。実行には条件がある。
ひよこ ひよこ
JARファイルって何?
ペンギン先生 ペンギン先生
Javaのクラスファイルや設定・画像などをまとめるアーカイブだよ。アプリの配布にも、ほかのプログラムが使うライブラリの配布にも使われる。
ひよこ ひよこ
ZIPと何が違うの?
ペンギン先生 ペンギン先生
ZIPをベースにした形式だよ。必要に応じてMETA-INF/MANIFEST.MFというファイルを入れ、実行の開始点を表すMain-Classなどの情報を記録できる。拡張子を変えれば、どんなZIPでもJavaアプリとして動くわけではないんだ。
ひよこ ひよこ
どのJARもjava -jarで動くの?
ペンギン先生 ペンギン先生
その起動方法に対応した実行可能JARが必要だよ。Javaの実行環境も別に必要。Spring Bootの実行可能JARなら、アプリのクラスをBOOT-INF/classes、依存ライブラリのJARをBOOT-INF/libに入れる構成になっている。
ひよこ ひよこ
WARやEARは別の形式?
ペンギン先生 ペンギン先生
どちらもJAR形式を基礎にしているよ。WARはWebアプリのクラスや画面などをまとめるもの。EARはWebアプリなど複数のモジュールをまとめるものだ。どれを使うかはアプリの構成や配布先によるよ。
ひよこ ひよこ
依存するJARの版はどう管理するの?
ペンギン先生 ペンギン先生
例えばMavenでは、pom.xmlに必要なライブラリとバージョンを書く。設定されたリポジトリから取得し、そのライブラリがさらに必要とする依存関係も扱えるよ。すべてのJARを手作業で集める必要はないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「JARファイル」って出てきたら「JavaのクラスやリソースをまとめたZIPベースのファイル」と思えばだいたいOK!
📖 おまけ:英語の意味
「Java ARchive」 = Javaアーカイブ
💬 ZIPベースのJava向けアーカイブ。META-INF/MANIFEST.MFには実行の開始点などを記録できるが、すべてのJARで必須ではない。WARやEARもJAR形式を基礎にしたパッケージだよ。

参考資料

← 用語集にもどる