Qual è la differenza tra Tomcat, JBoss e Glassfish?


445

Sto iniziando a esaminare Enterprise Java e il libro che seguo menziona che utilizzerà JBoss. Netbeans viene spedito con Glassfish. Ho usato Tomcat in passato.

Quali sono le differenze tra questi tre programmi?



70
queste domande sono la 'maledizione' di opensource. A volte ci sono troppe scelte che fanno quasi la stessa cosa. Per i neofiti, può portare alla paralisi mediante analisi. Eclipse è l'IDE dominante, ma quasi tutti i libri che vale la pena acquistare utilizzano netbeans per sviluppare e insegnare. Usa Glassfish quando ho visto la maggior parte delle aziende usare Jboss nella vita reale. Esistono curve di apprendimento nell'uso di ciascun contenitore e può essere molto frustrante per i neofiti.
user798719

Ora JBoss noto come [WildFly] ( en.wikipedia.org/wiki/WildFly ) e JBoss era la società sviluppata WildFly.
Chaminda Bandara,

Risposte:


516

Tomcat è solo un contenitore servlet, ovvero implementa solo le servlet e le specifiche JSP. Glassfish e JBoss sono server Java EE completi (inclusi elementi come EJB, JMS, ...), con Glassfish come implementazione di riferimento dell'ultimo stack Java EE 6, ma JBoss nel 2010 non lo supportava ancora del tutto.


77
Nota per i lettori, JBoss è ora certificato Java EE 6 a profilo completo come GlassFish. Inoltre Tomcat è ora certificato Web Profile Java EE 6 tramite TomEE e supporta EJB, CDI, JSF, JPA e altro.
David Blevins,

10
@DavidBlevins quindi quali sono le differenze?
aldo.roman.nurena,

23
@ aldo.roman.nurena Pochissime differenze. GlassFish e JBoss supportano entrambi il profilo completo EE Java, quindi supportano tecnologie legacy come JAX-RPC e CORBA. Non li abbiamo inclusi nella versione Java EE di Tomcat, ma tutta la tecnologia attuale è presente come JAX-RS, JAX-WS, JMS, CDI, JPA, JSF, EJB, JTA, ecc.
David Blevins,

@DavidBlevins Se vogliamo scegliere tra JBoss e Glassfish, quale è meglio per l'ambiente di produzione? Ci sono informazioni di riferimento disponibili per capirlo?
Sudhakar Chavali,

1
La modifica su StackOverflow è il modo giusto per correggere le risposte che si allontanano troppo dalla realtà.
Warren P,

358

Tomcat è semplicemente un server HTTP e un contenitore servlet Java. JBoss e GlassFish sono server di applicazioni Java EE completi, incluso un contenitore EJB e tutte le altre funzionalità di quello stack. D'altra parte, Tomcat ha un ingombro di memoria più leggero (~ 60-70 MB), mentre quei server Java EE pesano a centinaia di mega. Tomcat è molto popolare per semplici applicazioni Web o applicazioni che utilizzano framework come Spring che non richiedono un server Java EE completo. L'amministrazione di un server Tomcat è probabilmente più semplice, poiché ci sono meno parti mobili.

Tuttavia, per le applicazioni che richiedono uno stack Java EE completo (o almeno altri pezzi che potrebbero essere facilmente collegati a Tomcat) ... JBoss e GlassFish sono due delle offerte open source più popolari (la terza è Apache Geronimo , su cui è costruita la versione gratuita di IBM WebSphere). JBoss ha una comunità di utenti più ampia e più profonda e una base di codice più matura. Tuttavia, JBoss è notevolmente indietro rispetto a GlassFish nell'implementazione delle attuali specifiche Java EE. Inoltre, per coloro che preferiscono un sistema di amministrazione basato sulla GUI ... La console di amministrazione di GlassFish è estremamente fluida, mentre la maggior parte dell'amministrazione in JBoss è fatta con un editor di riga di comando e di testo. GlassFish arriva direttamente da Sun / Oracle, con tutti i vantaggi che può offrire. JBoss NON è sotto il controllo di Sun / Oracle, con tutti i vantaggi che può offrire.


3
Non ho convalidato, ma alcuni sostengono che per un progetto normale, un contenitore EE 6 potrebbe utilizzare il 25% di memoria in meno rispetto a Spring + le sue dipendenze.
Arjan,

2
+1, risposta eccellente, anche se sottoscrivo il commento di @ Arjan: in realtà la memoria utilizzata da questi server non è così importante rispetto a quanta memoria avrà bisogno di un'applicazione distribuita (e CHE dipende fortemente dalle tecnologie utilizzate. La primavera è in qualche modo of a memory hog)
Shivan Dragon,

10
Heh ... la discussione di "servlet container" contro "JEE server" sembra sempre trasformarsi in discussioni di "Spring" contro "EJB / JSF". Ho usato JEE per anni e sono sempre felice di farlo quando un cliente mi paga. Tuttavia, i miei pensieri sono: [1] la maggior parte dei benchmark su entrambe le parti provengono da fonti distorte, non ho mai notato una grande differenza di risorse tra i due stack, [2] Spring è MOLTO più portabile degli "standard" JEE, con i quali sembra sempre doloroso cambiare server e, ultimo ma non meno importante ...
Steve Perkins,

7
... [3] le community di utenti per Spring e Hibernate riducono assolutamente quelle delle specifiche JEE pure. Se riscontri problemi con Spring e pubblichi una domanda su StackOverflow, verrà letta da centinaia di persone e avrai una risposta solida in pochi minuti. Fai una domanda sulle cose JEE e verrà letta da una dozzina di persone ... e per metà del tempo, l'unica risposta che ricevi è "Ha funzionato per me!". Gli standard JEE sembrano sempre in ritardo di un giorno e un dollaro in meno, e mi sento molto solo quando ho problemi con loro in una vera app.
Steve Perkins,

1
Ummmm ... A partire dall'anno scorso, Tomcat aveva solo 13 MB, GlassFish 53 MB e JBoss 127 MB. Non prenderei in considerazione quei server JavaEE (GlassFish e JBoss) centinaia di mega. Se stai parlando di WebLogic o WebSphere, allora stiamo parlando di un GB. Informazioni trovate su zeroturnaround.com/rebellabs/…
j

81

È necessario utilizzare GlassFish per le applicazioni enterprise EE Java . Alcune cose da considerare:

Un server Web significa: Gestire le richieste HTTP (di solito dai browser).

Un contenitore servlet (ad es. Tomcat ) significa: può gestire servlet e JSP.

Un Application Server (ad es. GlassFish ) significa: * Può gestire applicazioni Java EE (di solito sia servlet / JSP che EJB).


Tomcat - è gestito dalla comunità Apache - Open source e ha due gusti:

  1. Tomcat - Profilo Web - leggero che è solo contenitore servlet e non supporta le funzionalità Java EE come EJB, JMS ecc.
  2. Tomcat EE - Questo è un contenitore Java EE certificato, supporta tutte le tecnologie Java EE.

Nessun supporto commerciale disponibile (solo supporto della comunità)

JBoss - Gestito da RedHat Questo è un supporto full-stack per JavaEE ed è un contenitore Java EE certificato. Ciò include Tomcat come contenitore Web internamente. Anche questo ha due gusti:

  1. Versione della community denominata Application Server (AS) : questo avrà solo il supporto della community.
  2. Enterprise Application Server (EAP) : per questo, è possibile disporre di una licenza basata su abbonamento (basata sul numero di core presenti sui server).

Glassfish - Gestito da Oracle Questo è anche un contenitore EE Java certificato full stack. Questo ha il suo contenitore web (non Tomcat). Questo viene da Oracle stesso, quindi tutte le nuove specifiche saranno testate e implementate prima con Glassfish. Quindi, supporterebbe sempre le ultime specifiche. Non sono a conoscenza dei suoi modelli di supporto.


2
Ho ragione a dire che al giorno d'oggi (1 ° trimestre 2018) Glassfish non gioca un ruolo importante nella realtà? Lo standard JBoss non è di fatto?
Socrate

14

jboss e glassfish includono un contenitore servlet (come Tomcat), tuttavia i due server applicazioni (jboss e glassfish) forniscono anche un contenitore bean (e immagino anche alcune altre cose)


2
Glassfish può fare tutto ciò che Tomcat può fare ma ciò non significa che "includa" Tomcat. Glassfish ha il suo contenitore web.
Martin,

5
Per essere più chiari, "like tomcat" ha ragione, ma JBoss in realtà incorpora Tomcat come implementazione del suo servlet.
Chucky,

@Chucky non più
NimChimpsky

8

JBoss e Glassfish sono sostanzialmente server di applicazioni Java EE completo mentre Tomcat è solo un contenitore Servlet. La differenza principale tra JBoss, Glassfish ma anche WebSphere, WebLogic e così via rispetto a Tomcat ma anche a Jetty, stava nella funzionalità che offre un server app completo. Quando disponevi di un server app Java EE full stack puoi beneficiare di tutta l'implementazione del fornitore di tua scelta e puoi beneficiare di EJB, JTA, CDI (JAVA EE 6+), JPA, JSF, JSP / Servlet ovviamente e così via. Con Tomcat invece puoi beneficiare solo di JSP / Servlet. Tuttavia oggi con Advanced Framework come Spring e Guice, molti dei principali vantaggi dell'utilizzo di un server di applicazioni full stack possono essere mitigati e, supponendo che uno di questi framework sia virile con Spring Ecosystem,


8

Sembra un po 'scoraggiante usare Tomcat quando leggi queste risposte. Tuttavia, ciò che molti non riescono a menzionare è che è possibile arrivare a casi d'uso identici o quasi identici con Tomcat, ma ciò richiede di aggiungere le librerie necessarie (tramite Maven o qualunque sistema di inclusione utilizzato).

Ho eseguito Tomcat con JPA, EJB con sforzi di configurazione molto piccoli.


1
@MarcoOttina Nella mia esperienza, sì. È un server web altamente configurabile. Immagino che molte persone che costruiscono app Web moderne lo utilizzino insieme a Spring / Spring Boot. In tutti i miei anni con Java sono ancora confuso dall'ecosistema (in particolare tutte le cose JEE) poiché non ne ho mai avuto alcun requisito. Quindi
finisco

4

Sia JBoss che Tomcat sono server di applicazioni servlet Java, ma JBoss è molto di più. La differenza sostanziale tra i due è che JBoss fornisce uno stack Java Enterprise Edition (Java EE) completo, inclusi Enterprise JavaBeans e molte altre tecnologie utili per gli sviluppatori che lavorano su applicazioni Java aziendali.

Tomcat è molto più limitato. Un modo di pensarci è che JBoss è uno stack Java EE che include un contenitore servlet e un server web, mentre Tomcat, per la maggior parte, è un contenitore servlet e un server web.


3

Apache Tomcat è solo un unico contenitore serverlet che non supporta l'applicazione Java Enterprise (JEE). JBoss e Glassfish supportano l'applicazione JEE ma Glassfish è molto più pesante del server JBOSS: Guida di riferimento

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.