JAR、WAR、EARの違いと共通点

J2EEアプリケーションでは、モジュールは機能に応じてJAR、WAR、EARとしてパッケージ化される。

Jar,War,Ear

JAR

  • Java ARchive
  • Javaプログラムの実行に必要なクラスファイルや設定ファイルをまとめたアーカイブ。
  • Javaで作成したアプリケーションを配布するとき、関連ファイルを1つにパッケージ化するために利用される。実際、多くのクラスライブラリはこの形式で配布されている。
  • クラスファイル、各クラスが使用する関連リソースファイル、メタデータを圧縮したファイル。
  • 実際にはZIPファイル形式で圧縮される。
  • JRE(Java Runtime Environment)があれば実行できる。
    • java -jar {project_name}.jar

WAR

  • Web application ARchive
  • JavaのWebアプリケーションで利用されるクラスファイル(servlet)、設定ファイル(xml)、JSPやHTMLファイル、JAR形式のライブラリなどを圧縮したアーカイブ。
  • Webアプリケーション設定を定義するweb.xmlファイルがある。
  • web.xmlを含むWARファイルをTomcatなどのアプリケーションサーバーにデプロイすると、このファイルを基にデプロイされる。
  • 事前定義された構造を使用する。
    • WEB-INF, META-INF

EAR

  • Enterprise ARchive
  • Java EE(Java Platform, Enterprise Edition)ベースのアプリケーションのパッケージ形式拡張子。
  • 任意の数のWARファイルやEJBファイル、そしてそれらのアプリケーションに必要なJARファイルを含めることができる。
  • 上記のすべてのファイル(.jar.war)は、拡張子が.ear(enterprise archive)のJARファイルとしてパッケージ化され、Application Serverに配置される。
  • META-INFフォルダに含まれるapplication.xmlファイルが必要である。

JAR、WAR、EARの違い

  • JAR、WAR、EARファイルの最大の違いは、対象とする環境が異なる点である。
  • ファイルサイズは一般的にEAR > WAR > JARの順になる。

JAR、WAR、EARの共通点

  • いずれもJavaコミュニティの仕様に従って定義されたZIP形式のパッケージ(複数のファイルをまとめたアーカイブ)である。
  • Java Jar(java -jar)を利用して作成される圧縮ファイルであり、アプリケーションを簡単に配布して動作させられるように関連ファイル(リソース、プロパティファイルなど)をパッケージ化したものである。

まとめ

つまり、JARとWARは使用目的に応じて圧縮されるファイルの範囲だけが異なる、同じ種類の圧縮ファイルである。最近ではSpring Bootなどの利用により、Webアプリケーションであっても、すぐに実行できるJARファイルを使用するケースが多い。