Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Java

EARファイル・WARファイル・JARファイルの違いや特徴について

投稿日:2021年8月27日 更新日:

 

<目次>

(1) EARファイル・WARファイル・JARファイルの違いや特徴について
 (1-1) JARファイルとは(.jar)
 (1-2) WARファイル(.war)
 (1-3) EARファイルとは(.ear)
 (1-4) まとめ(三者の違い)

(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はその両者をセットで固めたもの、といった役割が異なっています。
 

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-Java

執筆者:


  1. […] Jar…Javaのクラスファイル当を纏めて固めた資源(.Jar) EJB-JARは特殊なJAR形式でEJB(Enterprize Java Beans)のモジュール(クラスファイル)と EJBデプロイメントディスクリプタ(xml形式の定義ファイル)とをセットで.Jarで固めたの EJBコンテナにデプロイします。 ※MATA-INF配下にejb-jar.xmlを配置)War…Web application ARchive または Web Application Resourceの略 サーブレットのクラスワイルやJSP,HTMLといったWebアプリの資産がJARファイルとして.war 拡張子で固められたものサーブレットコンテナに配置 ※WEB-INF配下に「web.xml」を配備Ear…Enterprise Archiveの略。1~複数個の.jarや.warを集めて1つに固めたもの(.ear) アプリケーションサーバにデプロイする。 ※Java EE(全部)が必要 ※代表的なアプリケーションサーバはWebLogic、Jboss、WebSphere など ※META-INF配下にapplication.xmlを配備(参考)EARファイル・WARファイル・JARファイルの違いや特徴について […]

  2. […] サーブレットコンテナやアプリケーションサーバの違いは「EARファイル・WARファイル・JARファイルの違いや特徴について」が詳しい。 […]

comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

Javaのアノテーションを自作する方法をご紹介(サンプルプログラム付き)

(1) 自作アノテーションの作成~使用の手順  (1-1) アノテーションの宣言  (1-2) メタアノテーションの追加(任意)  (1-3) アノテーションを実際に使う(注釈の付与)  (1-4) …

「Graphics Device initialization failed for : es2, sw」エラーの原因と対処方法(Java FX関連)

  <目次> (1) 「Graphics Device initialization failed for : es2, sw」エラーの原因と対処方法(Java FX関連)  (1-1) エ …

Javaのフォーム認証でオリジナルの(元の)リクエスト情報を取得する方法

<目次> (1) Javaのフォーム認証でオリジナルの(元の)リクエスト情報を取得する方法  (1-1) 構文  (1-2) サンプルプログラム   ●JSP(要求ページ)   ●JSP(ログインペー …

Linuxでアプリケーションサーバを構築する手順の例

<目次> (1) Linuxでアプリケーションサーバを構築する手順の例  (1-1) APサーバの全体像  (1-2) APサーバの構築手順  (1-3) 各手順のURL (1) Linuxでアプリケ …

Twitter APIのRate Limit Exceedエラー(code – 88)の意味について

  <目次> (1) Twitter APIのRate Limit Exceedエラー(code – 88)の意味について  (1-1) APIコールのリミット(Rate Limit)につい …

  • English (United States)
  • 日本語
Top