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


445

私はエンタープライズJavaと、JBossを使用するという言及に従っている本を調べ始めています。NetbeansにはGlassfishが付属しています。私は過去にTomcatを使用しました。

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



70
これらの質問は、オープンソースの「呪い」です。ほぼ同じことを行う選択肢が多すぎる場合があります。初心者の場合、分析によって麻痺につながる可能性があります。Eclipseは主要なIDEですが、購入する価値のあるほとんどすべての本は、ネットビーンを使用して開発および教育しています。ほとんどの企業が実際にJbossを使用しているのを見たときに、Glassfishを使用しています。各コンテナの使用には学習曲線があり、初心者には非常にイライラすることがあります。
user798719 2013

現在、JBossは[WildFly](en.wikipedia.org/wiki/WildFly)として知られており、JBossはWildFlyを開発した会社です。
Chaminda Bandara

回答:


516

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


77
読者への注記、JBossは現在 GlassFishのようにJava EE 6 Full Profile認定を受けています。同様に、Tomcatは現在、TomEE介して認定されたJava EE 6 Webプロファイルであり、EJB、CDI、JSF、JPAなどをサポートしています。
David Blevins、

10
@DavidBlevinsだから、今の違いは何ですか?
aldo.roman.nurena 2013

23
@ aldo.roman.nurena違いはほとんどありません。GlassFishとJBossはどちらもJava EEフルプロファイルをサポートしているため、JAX-RPCやCORBAなどのレガシーテクノロジーをサポートしています。これらはTomcatのJava EEバージョンには含まれていませんが、JAX-RS、JAX-WS、JMS、CDI、JPA、JSF、EJB、JTAなど、現在のすべてのテクノロジーが存在します
David Blevins

@DavidBlevins JBossとGlassfishのどちらかを選択したい場合、どちらが本番環境に適していますか?これを理解するために利用できる参照情報はありますか?
Sudhakar Chavali 2014年

1
stackoverflowでの編集は、現実から離れすぎている回答を修正する正しい方法です。
Warren P

358

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の管理下にはありませんが、その利点はすべてあります。


3
私は検証していませんが、通常のプロジェクトでは、EE 6コンテナーはSpring +その依存関係よりも25%少ないメモリを使用する可能性があると主張しています。
Arjan 2012

2
+1、素晴らしい答えですが、@ Arjanのコメントを購読していますが、実際にこれらのサーバー自体が使用するメモリは、デプロイされたアプリケーションが必要とするメモリの量と比較してそれほど重要ではありません(それは、使用されるテクノロジーに強く依存します。Springは多少記憶の豚)
Shivan Dragon

10
「サーブレットコンテナー」と「JEEサーバー」の議論は、常に「スプリング」と「EJB / JSF」の議論に変わるようです。私は何年にもわたってJEEを使用してきましたが、クライアントが私に支払うときはいつでも喜んで使用します。ただし、私の考えは次のとおりです。[1]両側のほとんどのベンチマークはバイアスされたソースから取得されます。2つのスタック間のリソースの大きな違いに自分自身で気づいたことはありません。常に...少なくともサーバを切り替えるには痛みを伴うようで、最後のではなく
スティーブ・パーキンス

7
... [3] SpringおよびHibernateのユーザーコミュニティは、純粋なJEE仕様のユーザーコミュニティよりも絶対的に小さくなっています。Springで問題が発生し、StackOverflowに質問を投稿すると、何百人もの人がそれを読んで、数分で確実な回答が得られます。JEEに関する質問をすると、それが数十人に読まれる...そして半分の時間で、あなたが得る唯一の応答は、「それは私のために働いた!」でした。JEE標準は常に1日遅れて1ドル足りないように思えます。実際のアプリでJEE標準に問題が発生すると、私はとても孤独に感じます。
Steve Perkins

1
うーん...昨年の時点で、Tomcatはわずか13 MB、GlassFish 53MB、JBoss 127 MBでした。私はそれらのJavaEEサーバー(GlassFishとJBoss)を数百メガとは考えていません。WebLogicまたはWebSphereについて話している場合は、GBについて話していることになります。zeroturnaround.com/rebellabs/…にある
jは

81

Java EEエンタープライズアプリケーションにGlassFishを使用する必要があります。考慮すべき事項:

Webサーバーの手段:(通常はブラウザからの)取り扱いHTTPリクエスト。

A サーブレットコンテナ(例えばTomcatの)意味:それはサーブレット&JSPを処理することができます。

アンアプリケーションサーバー(例えばGlassFishの)手段:それは、Java EEアプリケーション(通常はサーブレット/ JSPおよびEJBの両方)を管理することができます*。


Tomcat -Apacheコミュニティによって実行されます-オープンソースで、2つのフレーバーがあります。

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

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

JBoss -Run by RedHatこれはJavaEEのフルスタックサポートであり、認定済みのJava EEコンテナです。これには、内部的にWebコンテナとしてTomcatが含まれます。これには2つのフレーバーもあります。

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

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


2
最近(2018年の第1四半期)Glassfishは実際には大きな役割を果たしていないのですか。事実上の標準のJBossではありませんか?
ソクラテス

14

jbossとglassfishには(tomcatのような)サーブレットコンテナが含まれていますが、2つのアプリケーションサーバー(jbossとglassfish)もBeanコンテナを提供しています(私が想像している他のいくつかのものもあります)。


2
GlassfishはTomcatにできることは何でもできますが、Tomcatを「含む」という意味ではありません。Glassfishには独自のWebコンテナがあります。
マーティン

5
より明確に言うと、「like tomcat」は正しいですが、JBossは実際にはサーブレットコンテナ実装としてTomcatを組み込みます。
チャッキー

@チャッキーはもういません
NimChimpsky 2016年

8

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などの高度なフレームワークを使用すると、フルスタックアプリケーションサーバーを使用することの主な利点の多くは軽減され、このフレームワークの1つをSpringエコシステムで使用すると想定すると、


8

これらの回答を読んだときに、Tomcatを使用するのは少し残念なようです。ただし、ほとんど言及していないのは、tomcatを使用して同一またはほぼ同一のユースケースに到達できることですが、必要なライブラリを(Mavenまたは使用するインクルードシステムを介して)追加する必要があります。

私は、非常に小さな構成作業で、JPA、EJBでTomcatを実行しています。


1
@MarcoOttina私の経験では、はい。高度に設定可能なWebサーバーです。最新のウェブアプリを構築する多くの人が、Spring / Spring Bootと一緒にそれを使用していると思います。Javaを使用してきたすべての年の間、私はエコシステム(特にすべてのJEE関連のもの)にまだ要件がありませんでしたので、混乱しています。したがって、今日ここで終了する:)
jocull

4

JBossとTomcatはどちらもJavaサーブレットアプリケーションサーバーですが、JBossはそれだけではありません。2つの主な違いは、JBossがエンタープライズJavaBeanやエンタープライズJavaアプリケーションで作業する開発者に役立つ他の多くのテクノロジーを含む完全なJava Enterprise Edition(Java EE)スタックを提供することです。

Tomcatははるかに制限されています。それを考える1つの方法は、JBossがサーブレットコンテナーとWebサーバーを含むJava EEスタックであるのに対し、Tomcatは大部分がサーブレットコンテナーとWebサーバーであるということです。


3

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.