web-dev-qa-db-ja.com

Tomcat、JBoss、Glassfishの違いは何ですか?

私はEnterprise Javaについて調べ始めており、私がフォローしている本はそれがJBossを使うだろうと述べています。 NetbeansはGlassfishと一緒に出荷されます。私は過去にTomcatを使ったことがあります。

これら3つのプログラムの違いは何ですか?

431
samoz

Tomcatは単なるサーブレットコンテナです。つまり、サーブレットとJSP仕様のみを実装しています。 GlassfishとJBossは完全なJava EEサーバー(EJB、JMSなどを含む)で、Glassfishが最新のJava EE 6スタックの参照実装ですが、2010年のJBossはまだそれを完全にはサポートしていません。

501
Petar Minchev

Tomcatは単なるHTTPサーバーおよびJavaサーブレットコンテナです。 JBossとGlassFishは、EJBコンテナとそのスタックの他のすべての機能を含む、本格的なJava EEアプリケーションサーバーです。その一方で、Tomcatはより軽いメモリフットプリント(約60〜70 MB)を持っていますが、それらのJava EEサーバは数百メガバイトの大きさです。 Tomcatは単純なWebアプリケーション、または完全なJava EEサーバーを必要としないSpringなどのフレームワークを使用するアプリケーションで非常に人気があります。 Tomcatサーバーの管理は、動く部分が少ないので、おそらく間違いなく簡単です。

しかし、完全なJava EEスタックを必要とするアプリケーション(または少なくともTomcatに簡単に追加できる部分)では、JBossとGlassFishが最も人気のある2つのオープンソース製品(3つ目はApache Geronimoです)無料版のIBM WebSphereが構築されています。 JBossは、より大きくより深いユーザーコミュニティと、より成熟したコードベースを持っています。しかし、JBossは現在のJava EE仕様の実装においてGlassFishよりもかなり遅れています。また、GUIベースの管理システムを好む人のために... GlassFishの管理コンソールは非常に滑らかですが、JBossでのほとんどの管理はコマンドラインとテキストエディタで行われます。 GlassFishは、Sun/Oracleから直接得られ、提供できるすべての利点があります。 JBossはSun/Oracleの管理下にはなく、それが提供できるすべての利点があります。

345
Steve Perkins

GlassFish for Java EEエンタープライズアプリケーションを使用する必要があります。考慮すべき点がいくつかあります。

web Serverは、HTTP要求を処理する(通常はブラウザから))を意味します。

Servlet Container(例:Tomcat)は、サーブレットとJSPを処理できる)を意味します。

Application Server(例:GlassFish)は、次のことを意味します。


Tomcat - Apacheコミュニティによって運営されています - オープンソースで、2つの種類があります。

  1. Tomcat - Webプロファイル - サーブレットコンテナのみで、EJB、JMSなどのJava EE機能をサポートしない軽量。
  2. Tomcat EE - これは認定されたJava EEコンテナです。これはすべてのJava EEテクノロジをサポートします。

商用サポートはありません(コミュニティサポートのみ)

JBoss - RedHatによる実行これはJavaEEのフルスタックサポートであり、認定されたJava EEコンテナです。これにはTomcatがWebコンテナとして内部的に含まれています。これには2つの種類があります。

  1. コミュニティバージョンはApplication Server(AS)と呼ばれます) - これはコミュニティサポートのみを持ちます。
  2. Enterprise Application Server(EAP) - これには、サブスクリプションベースのライセンスを取得できます(サーバー上にあるコアの数に基づきます)。

Glassfish - Oracleによる実行これもフルスタック認定のJava EEコンテナです。これは独自のWebコンテナを持っています(Tomcatではありません)。これはOracle自身から来ているので、すべての新しい仕様は最初にGlassfishでテストされ実装されます。それで、それは常に最新の仕様をサポートするでしょう。私はそのサポートモデルを知りません。

72
Jaimin Patel

jbossとglassfishには(Tomcatのような)サーブレットコンテナが含まれていますが、2つのアプリケーションサーバー(jbossとglassfish)もBeanコンテナを提供しています(それ以外にもいくつかのことが想像できます)。

13
NimChimpsky

JBossとGlassfishは基本的に完全なJava EEアプリケーションサーバーですが、Tomcatはサーブレットコンテナにすぎません。 TomcatだけでなくJettyに関しても、JBoss、Glassfish、WebSphere、WebLogicなどの主な違いは、完全なアプリケーションサーバーが提供する機能にあります。フルスタックのJava EEアプリケーションサーバーを使用している場合は、選択したベンダーのすべての実装の恩恵を受けることができ、EJB、JTA、CDI(Java EE 6+)、JPA、JSF、JSP /サーブレットなどの恩恵を受けることができます等々。一方Tomcatでは、JSP /サーブレットのみが恩恵を受けることができます。しかし、SpringやGuiceなどの高度なフレームワークを使用すると、フルスタックのアプリケーションサーバーを使用することの主な利点の多くを軽減できます。私の仕事の経験ではTomcatのような軽量のアプリサーバーを支持してフルスタックのアプリサーバーの使用を去らせることができるようにしてください。

6
Valerio Vaudi

これらの答えを読むときにTomcatを使用するのは少しがっかりするようです。しかし、ほとんど言及していないのは、Tomcatを使って同じまたはほぼ同じユースケースを得ることができるということですが、それには必要なライブラリを追加する必要があるということです(Mavenまたはあなたが使うどんなインクルードシステムも)。

私はJPAと一緒にTomcatを実行してきましたが、EJBは非常に小さな設定作業で済みます。

6
user2130951

JBossとTomcatはどちらもJavaサーブレットアプリケーションサーバーですが、JBossははるかに多くのものです。この2つの大きな違いは、JBossがEnterprise JavaBeansやその他のエンタープライズJavaアプリケーションを開発する開発者にとって有用なテクノロジを含む、完全なJava Enterprise Edition(Java EE)スタックを提供することです。

Tomcatはもっと制限があります。その考え方の1つは、JBossはサーブレットコンテナとWebサーバを含むJava EEスタックであるのに対し、Tomcatはほとんどの場合サーブレットコンテナとWebサーバです。

3
Spartan

Apache Tomcatは、エンタープライズJavaアプリケーション(JEE)をサポートしていない、単なるサーバーレットコンテナです。 JBossとGlassfishはJEEアプリケーションをサポートしていますが、GlassfishはJBOSSサーバーよりはるかに重いです: 参照スライド

1