【じゃーふぁいる】

JARファイル とは?

最終更新:
💡 Javaアプリを「まとめてパッケージ」にしたアーカイブファイル
📌 このページのポイント
JARファイルのパッケージング構造 コンパイル後のファイル Main.class Utils.class Config.class config.xml MANIFEST.MF ZIP圧縮 app.jar Main.class Utils.class Config.class + config.xml META-INF/MANIFEST.MF メインクラス、バージョン情報 JAR = Java ARchive。複数のクラスファイルを1つにまとめて配布・実行
JARファイルのイメージ
ひよこ ひよこ
JARファイルって何?
ペンギン先生 ペンギン先生
Javaプログラムをまとめたパッケージファイルだよ。複数の.classファイル(Javaコンパイル済みファイル)と設定ファイルをZIP形式でまとめたもの。「java -jar myapp.jar」で実行できる。
ひよこ ひよこ
ZIPと何が違うの?
ペンギン先生 ペンギン先生
フォーマット的にはZIPと同じ(解凍もできる)。JARには「META-INF/MANIFEST.MF」というメタファイルが追加されていて、メインクラス(どこから実行するか)などの情報が書いてある。
ひよこ ひよこ
SpringBootがfat JARって何?
ペンギン先生 ペンギン先生
通常のJARはアプリのコードだけ含む。「fat JAR(uber JAR)」は依存するすべてのライブラリも1つのJARに含める。これで「java -jar spring-app.jar」だけで全ての依存関係が揃った状態で実行できる。Dockerのイメージに入れやすくて便利。
ひよこ ひよこ
WARファイルやEARファイルとJARの違いは?
ペンギン先生 ペンギン先生
全部ZIPベースのJavaパッケージだよ。JARはライブラリやスタンドアロンアプリ、WARはWebアプリケーション(TomcatなどのServletコンテナデプロイする)、EARはJAR+WARをまとめたエンタープライズアプリ。ただし最近はSpring Bootのfat JARでWARなしで動かすのが主流で、EARはレガシーな印象があるね。
ひよこ ひよこ
JARファイルのバージョン管理ってどうやるの?
ペンギン先生 ペンギン先生
MavenGradleというビルドツールがJARの依存関係とバージョンを管理してくれるよ。pom.xmlやbuild.gradleに「この名前のバージョンいくつを使う」と書くだけで、Maven Centralリポジトリから自動ダウンロードされる。npmのpackage.jsonのJava版と考えるとわかりやすいね。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
JARファイルって出てきたら「Javaアプリをまとめたアーカイブファイル(ZIPベース)、java -jarで実行できる」と思えばOK!
📖 おまけ:英語の意味
「Java ARchive」 = Javaアーカイブ
💬 ZIPアーカイブ技術を流用してJava固有のメタデータ(MANIFEST.MF)を追加したもの。WAR(Web ARchive)・EAR(Enterprise ARchive)もJARの派生
← 用語集にもどる