wake-up-neo.com

Was ist der Unterschied zwischen Tomcat, JBoss und Glassfish?

Ich beginne mich mit Enterprise Java zu beschäftigen, und das Buch, dem ich folge, erwähnt, dass es JBoss verwenden wird. Netbeans wird mit Glassfish ausgeliefert. Ich habe Tomcat in der Vergangenheit benutzt.

Was sind die Unterschiede zwischen diesen drei Programmen?

436
samoz

Tomcat ist nur ein Servlet-Container, d. H. Es implementiert nur die Servlets und die JSP-Spezifikation. Glassfish und JBoss sind vollständige Java EE-Server (einschließlich EJB, JMS, ...), wobei Glassfish die Referenzimplementierung des neuesten Java EE 6-Stacks ist, JBoss jedoch 2010 hat es noch nicht voll unterstützt.

506
Petar Minchev

Tomcat ist lediglich ein HTTP-Server und ein Java Servlet-Container. JBoss und GlassFish sind vollwertige Java EE-Anwendungsserver, einschließlich eines EJB-Containers und aller anderen Funktionen dieses Stacks. Auf der anderen Seite hat Tomcat einen geringeren Speicherbedarf (~ 60-70 MB), während diese Java EE-Server Hunderte von Megabytes wiegen. Tomcat ist sehr beliebt für einfache Webanwendungen oder für Anwendungen, die Frameworks wie Spring verwenden und für die kein vollständiger Java EE-Server erforderlich ist. Die Administration eines Tomcat-Servers ist wahrscheinlich einfacher, da weniger bewegliche Teile vorhanden sind.

Für Anwendungen, die einen vollständigen Java EE-Stack erfordern (oder zumindest mehr, die leicht mit Tomcat verbunden werden können) ... JBoss und GlassFish sind zwei der beliebtesten Open-Source-Angebote ( Der dritte ist Apache Geronimo, auf dem die kostenlose Version von IBM WebSphere basiert. JBoss hat eine größere und tiefere Benutzergemeinschaft und eine ausgereiftere Codebasis. JBoss bleibt jedoch bei der Implementierung der aktuellen Java EE-Spezifikationen erheblich hinter GlassFish zurück. Auch für diejenigen, die ein GUI-basiertes Administrationssystem bevorzugen ... Die Administrationskonsole von GlassFish ist extrem übersichtlich, wohingegen die meisten Verwaltungsaufgaben in JBoss mit einer Befehlszeile und einem Texteditor ausgeführt werden. GlassFish kommt direkt von Sun/Oracle und bietet alle Vorteile. JBoss steht NICHT unter der Kontrolle von Sun/Oracle, mit all den Vorteilen, die DAS bieten kann.

347
Steve Perkins

Verwenden Sie GlassFish für Java EE-Unternehmensanwendungen . Einige Dinge zu beachten:

Ein Webserver bedeutet: Behandlung von HTTP-Anfragen (normalerweise von Browsern).

Ein Servlet Container (z. B. Tomcat) bedeutet: Es kann Servlets & JSP verarbeiten.

Ein Application Server (z. B. GlassFish) bedeutet: * Es kann Java EE-Anwendungen verwalten (normalerweise sowohl Servlet/JSP als auch EJBs).


Tomcat - wird von der Apache-Community betrieben - Open Source und hat zwei Varianten:

  1. Tomcat - Webprofil - Leichtgewicht, das nur Servlet-Container ist und Java EE-Funktionen wie EJB, JMS usw. nicht unterstützt.
  2. Tomcat EE - Dies ist ein zertifizierter Java EE-Container, der alle Java EE-Technologien unterstützt.

Keine kommerzielle Unterstützung verfügbar (nur Community-Unterstützung)

JBoss - Von RedHat ausgeführt Dies ist eine Full-Stack-Unterstützung für JavaEE und ein zertifizierter Java EE-Container. Dies schließt Tomcat intern als Webcontainer ein. Dies hat auch zwei Geschmacksrichtungen:

  1. Community-Version mit dem Namen Application Server (AS) - Diese Version wird nur von der Community unterstützt.
  2. Enterprise Application Server (EAP) - Hierfür können Sie eine abonnementbasierte Lizenz erwerben (Diese basiert auf der Anzahl der Kerne, die Sie auf Ihren Servern haben. )

Glassfish - Von Oracle ausgeführt Dies ist auch ein Full-Stack-zertifizierter Java EE-Container. Dies hat einen eigenen Webcontainer (nicht Tomcat). Da dies von Oracle selbst stammt, werden alle neuen Spezifikationen zuerst mit Glassfish getestet und implementiert. Es würde also immer die neueste Spezifikation unterstützen. Mir sind die Unterstützungsmodelle nicht bekannt.

75
Jaimin Patel

jboss und glassfish enthalten einen Servlet-Container (wie Tomcat), die beiden Anwendungsserver (jboss und glassfish) stellen jedoch auch einen Bean-Container bereit (und ein paar andere Dinge, die ich mir auch vorstellen kann).

13
NimChimpsky

Es scheint ein bisschen entmutigend zu sein, Tomcat zu verwenden, wenn Sie diese Antworten lesen. Was jedoch am wenigsten erwähnt wird, ist, dass Sie mit Tomcat zu identischen oder fast identischen Anwendungsfällen gelangen können. Dazu müssen Sie jedoch die benötigten Bibliotheken hinzufügen (über Maven oder ein anderes von Ihnen verwendetes Include-System).

Ich habe Tomcat mit JPA, EJBs mit sehr geringem Konfigurationsaufwand ausgeführt.

7
user2130951

JBoss und Glassfish sind im Grunde genommen voll Java EE Application Server, während Tomcat nur ein Servlet-Container ist. Der Hauptunterschied zwischen JBoss, Glassfish, aber auch WebSphere, WebLogic usw. in Bezug auf Tomcat, aber auch Jetty, lag in der Funktionalität, die ein vollständiger App-Server bietet. Wenn Sie einen EE-App-Server mit vollem Stapel Java hatten, profitieren Sie von der gesamten Implementierung des Anbieters Ihrer Wahl und von EJB, JTA, CDI (Java EE 6+), JPA, JSF , JSP/Servlet natürlich und so weiter. Mit Tomcat hingegen können Sie nur von JSP/Servlet profitieren. Heutzutage können jedoch mit fortschrittlichen Frameworks wie Spring und Guice viele der Hauptvorteile der Verwendung eines Full-Stack-Anwendungsservers gemindert werden. Wenn Sie davon ausgehen, dass eines dieser Frameworks mit Spring Ecosystem kompatibel ist, können Sie von vielen Sub-Servern profitieren Projekt, das es mir in meiner Berufserfahrung ermöglichte, auf die Verwendung eines Full-Stack-App-Servers zugunsten eines Lightweight-App-Servers wie Tomcat zu verzichten.

6
Valerio Vaudi

Sowohl JBoss als auch Tomcat sind Java Servlet-Anwendungsserver, aber JBoss ist noch viel mehr. Der wesentliche Unterschied zwischen den beiden besteht darin, dass JBoss einen vollständigen Java Enterprise Edition (Java EE) -Stack bereitstellt, einschließlich Enterprise JavaBeans und vieler anderer Technologien, die für Entwickler nützlich sind, die an Java Unternehmensanwendungen arbeiten .

Tomcat ist viel begrenzter. Eine Möglichkeit ist, dass JBoss ein Java EE-Stack ist, der einen Servlet-Container und einen Webserver enthält, während Tomcat größtenteils ein Servlet-Container und ein Webserver ist.

3
Spartan

Apache Tomcat ist nur ein einziger Serverlet-Container, der nicht für Enterprise Java -Anwendungen (JEE) unterstützt wird. JBoss und Glassfish unterstützen JEE-Anwendungen, aber Glassfish ist viel schwerer als der JBOSS-Server: Referenzfolie

2