(1) EARファイル・WARファイル・JARファイルの違いや特徴について
タイトルの通り、Javaのモジュールをパッケージした形式であるEAR・WAR・JARの違いについてご紹介します。
EAR・WAR・JARはいずれもJava関連のモジュールを「デプロイ可能な単位」に固めたもので、この形式でJBossやTomcatといったアプリケーションサーバに配備して稼働させる事が可能になります。しかし、それぞれデプロイ対象の資産の内容や、配備先のサーバ種類が異なったりしています。
違いを理解するために、最初にそれぞれの概要について簡単に見ていきます。また図を使って、EARやWARやJARが全体像のどこに関連する資源なのか?も図示していきます。
(図100)
(1-1) JARファイルとは(.jar)
JARファイルはJavaのクラスファイル等を纏めて固めた資源で「.jar」の拡張子を持ちます。
その中でも「EJB-JAR」は特殊なJARの形式で、EJB(Enterprise Java Beans)のモジュール(クラスファイル)とEJBデプロイメントディスクリプタ(xml形式の定義ファイル)とをセットで拡張子「.jar」で固めたものです。
(表)
JAR (EJB-JARの場合) |
|
配備対象 | ●配備対象 EJBを固めた特殊なJarファイル(※注1)の場合、「EJBコンテナ」にデプロイします。●概要 EJBコンテナはJARファイルを通じてEJBに対するアクセスを提供します。またEJBを他の部品と分離する役目も果たします。(※注1) EJB-JARはJava EEの仕様で定義された特殊なJarファイルの一種で「.jar」型の拡張子を持ちます。 |
動作環境 | ・JREが必要 |
資産 | 下記のような資産を集めて「.jar」形式に固める(例) ・Javaクラスファイル ・その他データ (処理に必要なメタデータ、テキスト、画像等) |
デプロイメントディスクリプタの名前 | ・「META-INF」配下に「ejb-jar.xml」を配備 |
表の通り、EJB-JARは「EJBコンテナ」上にデプロイされます。
(図111)

(1-2) WARファイル(.war)
WARは「Web application ARchive」または「Web Application Resource」の略でWebアプリを構成するモジュールを固めたファイルになります。具体的にはサーブレットのクラスファイル(.class)やJSPファイル、HTMLといったWebアプリの資産がJARファイルとして「.war」の拡張子で固められます。
(表)
WAR | |
配備対象 | ●配備対象 「Webコンテナ」(≒Servletコンテナ)にデプロイします。●概要 WebコンテナはJavaの「JSP」や「Servlet」を固めたWARファイルでデプロイして、WebアプリのHTTPリクエスト/レスポンスの制御を提供します。●(例)代表的なサーブレットコンテナ ・Tomcat ・Jetty |
動作環境 | ・Java EE(一部=Web Profile)が必要 ⇒(例)Tomcat、Jettyなど |
資産 | 下記のような資産を集めて「.war」形式に固める (例) ・JARファイル ・JSP ・Servlet ・XML ・HTML |
デプロイメントディスクリプタの名前 | ・WEB-INF配下に「web.xml」を配備 |
表の通り、WARファイルは「サーブレットコンテナ」などにデプロイされます。
(図121)

(1-3) EARファイルとは(.ear)
EARは「Enterprise Archive」の略で、1個~複数個の「.jar」や「.war」を集めて「.ear」の拡張子で固めたものになります。
(表)
EAR | |
配備対象 | ●配備対象 「アプリケーションサーバ」にデプロイします。●概要 「アプリケーションサーバ」は1個~複数個のWARファイルやEJB-JARファイルを集めて1つに固めたものになります。●(例)代表的なアプリケーションサーバ ・WebSphere(IBM) ・WebLogic(Oracle) ・JBoss ・GlassFish |
動作環境 | ・Java EE(全部)が必要 ⇒(例)Jboss、WebSphere、WebLogic、GlassFishなど(備考) Java EE以外でも、Jakarta EE及びその互換製品でも実行可能 |
資産 | EARファイルやJARファイルを1個~複数個集めて「.ear」で固めたもの(例) ・EARファイル ・JARファイル |
デプロイメントディスクリプタの名前 | ・META-INF配下に「application.xml」を配備 |
表の通り、EARファイルは「アプリケーションサーバ」などにデプロイされます。
(図131)
(1-4) まとめ(三者の違い)
●デプロイに必要な環境
一番大きな違いは「それぞれが異なる実行環境にデプロイされる」という点です。例えば、JARファイルはJREがある環境で動作するし、WARならJREに加えてTomcat等のサーブレットコンテナも必要ですし、EARなら更にEJBコンテナも含んだ「アプリケーションサーバ」(WebLogic等)が必要となります。
●機能的な違い
WARファイルはWebアプリに必要なJSPやサーブレットといった部品を固めたものである一方、JARは通常のクラスファイルやEJBを集めて固めたもの、EARはその両者をセットで固めたもの、といった役割が異なっています。
参照先:
https://rainbow-engine.com/ear-jar-war-difference/#:~:text=WAR%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AFWeb%E3%82%A2%E3%83%97%E3%83%AA,%E5%BD%B9%E5%89%B2%E3%81%8C%E7%95%B0%E3%81%AA%E3%81%A3%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82