2010-09-29 108 views
366

Estoy empezando a buscar en Enterprise Java y el libro que estoy siguiendo menciona que usará JBoss. Netbeans se envía con Glassfish. He usado Tomcat en el pasado.¿Cuál es la diferencia entre Tomcat, JBoss y Glassfish?

¿Cuáles son las diferencias entre estos tres programas?

+6

1. http://stackoverflow.com/questions/173504/why-use-glassfish-instead-of-apache-whats-it-strengths-and-weaknesses 2. http: // stackoverflow.com/questions/327793/how-would-you-compare-apache-tomcat-glassfish-as-production-servers – pramodc84

+59

estas preguntas son la 'maldición' de opensource. A veces hay demasiadas opciones que hacen casi exactamente lo mismo. Para los novatos, puede llevar a la parálisis por análisis. Eclipse es el IDE dominante, sin embargo, casi todos los libros que vale la pena comprar usan netbeans para desarrollarse y enseñar. Utiliza Glassfish cuando he visto a la mayoría de las empresas usar Jboss en la vida real. Hay curvas de aprendizaje para usar cada contenedor, y puede ser muy frustrante para los novatos. – user798719

+0

Ahora JBoss conocido como [WildFly] (https://en.wikipedia.org/wiki/WildFly) y JBoss fue la compañía que desarrolló WildFly. –

Respuesta

435

Tomcat es solo un contenedor de servlet, es decir, implementa solo los servlets y la especificación jsp. Glassfish y JBoss son servidores completos de Java EE (incluyendo cosas como EJB, JMS, ...), siendo Glassfish la implementación de referencia de la última pila de Java EE 6, pero JBoss en 2010 aún no la soportaba completamente.

+36

tu respuesta fue como un disparo en la cabeza !!! ¡¡¡increíble!!! – BlaShadow

+67

Nota para los lectores, [JBoss ahora cuenta con la certificación de perfil completo de Java EE 6] (http://planet.jboss.org/post/jboss_as_7_1_0_final_thunder_released_java_ee_6_full_profile_certified) como GlassFish. Además, Tomcat ahora cuenta con [Java EE 6 Web Profile certificado a través de TomEE] (https://blogs.apache.org/foundation/entry/the_apache_software_foundation_announces17) y es compatible con EJB, CDI, JSF, JPA y más. –

+9

@DavidBlevins ¿cuáles son ahora las diferencias? –

12

JBoss y glassfish incluyen un contenedor de servlets (como Tomcat), sin embargo los dos servidores de aplicaciones (JBoss y glassfish) también proporcionan un recipiente de granos (y algunas otras cosas aswell Imagino)

+2

Glassfish puede hacer cualquier cosa con Tomcat, pero eso no significa que "incluya" a Tomcat. Glassfish tiene su propio contenedor web. – Martin

+4

Para ser más claro, el "me gusta" es correcto, pero JBoss realmente integra Tomcat para la implementación de su contenedor de servlets. – Chucky

+0

@Chucky ya no – NimChimpsky

312

Tomcat no es más que un HTTP servidor y contenedor de servlets de Java. JBoss y GlassFish son servidores de aplicaciones Java EE completas, incluido un contenedor EJB y todas las demás características de esa pila. Por otro lado, Tomcat tiene una huella de memoria más ligera (~ 60-70 MB), mientras que los servidores Java EE pesan cientos de megas. Tomcat es muy popular para aplicaciones web simples, o aplicaciones que utilizan marcos como Spring que no requieren un servidor completo Java EE. La administración de un servidor Tomcat es posiblemente más fácil, ya que hay menos partes móviles.

Sin embargo, para las aplicaciones que requieren una pila completa de Java EE (o al menos más piezas que se pueden conectar fácilmente a Tomcat) ... JBoss y GlassFish son dos de las ofertas de código abierto más populares (la tercera uno es Apache Geronimo, sobre el cual se construye la versión gratuita de IBM WebSphere). JBoss tiene una comunidad de usuarios más grande y más profunda, y una base de código más madura. Sin embargo, JBoss está muy por detrás de GlassFish en la implementación de las especificaciones Java EE actuales. Además, para aquellos que prefieren un sistema de administración basado en GUI ... la consola de administración de GlassFish es extremadamente hábil, mientras que la mayoría de la administración en JBoss se hace con una línea de comandos y un editor de texto. GlassFish viene directamente de Sun/Oracle, con todas las ventajas que puede ofrecer. JBoss NO está bajo el control de Sun/Oracle, con todas las ventajas QUE PUEDE ofrecer.

+5

¡Esa es una respuesta bastante clara también! – Chucky

+3

No he validado, pero [algunos afirman] (https://blogs.oracle.com/arungupta/entry/why_java_ee_6_is) que para un proyecto normal, un contenedor EE 6 puede usar un 25% * menos de memoria que Spring + dependencias. – Arjan

+2

+1, excelente respuesta, aunque me suscribo al comentario de @ Arjan: realmente la memoria utilizada por estos servidores no es tan importante en comparación con la cantidad de memoria que necesitará una aplicación implementada (y ESO depende en gran medida de las tecnologías utilizadas. Spring es algo así como un problema de memoria) –

3

Tanto JBoss como Tomcat son servidores de aplicaciones de servlets de Java, pero JBoss es mucho más. La diferencia sustancial entre los dos es que JBoss proporciona una pila completa de Java Enterprise Edition (Java EE), que incluye Enterprise JavaBeans y muchas otras tecnologías que son útiles para los desarrolladores que trabajan en aplicaciones Java empresariales.

Tomcat es mucho más limitado. Una forma de pensarlo es que JBoss es una pila Java EE que incluye un contenedor de servlets y un servidor web, mientras que Tomcat, en su mayor parte, es un contenedor de servlets y un servidor web.

4

JBoss y Glassfish son básicamente servidores de aplicaciones Java EE completos, mientras que Tomcat es solo un contenedor Servlet. La principal diferencia entre JBoss, Glassfish pero también WebSphere, WebLogic y demás con respecto a Tomcat pero también a Jetty, estaba en la funcionalidad que ofrece un servidor de aplicaciones completo. Cuando tenía un servidor de aplicaciones Java EE completo, puede beneficiarse de toda la implementación del proveedor de su elección, y puede beneficiarse de EJB, JTA, CDI (JAVA EE 6+), JPA, JSF, JSP/Servlet, por supuesto. y así. Con Tomcat, por otro lado, solo puede beneficiarse de JSP/Servlet. Sin embargo, hoy en día con Framework avanzado como Spring y Guice, muchas de las principales ventajas de usar un servidor de aplicaciones de pila completa se pueden mitigar, y con el supuesto de uno de este framework viril con Spring Ecosystem, puede beneficiarse de muchos sub proyecto que en mi experiencia laboral me permitió dejar el uso de un servidor de aplicaciones de pila completa a favor del servidor de aplicaciones livianas como tomcat.

54

Debe usar GlassFish para aplicaciones empresariales Java EE. Algunas cosas a considerar:

Un Web Server medios: manejo de solicitudes HTTP (normalmente de navegadores).

A contenedor servlet (por ejemplo Tomcat) significa: Puede manejar servlets & JSP.

Un Application Server (por ejemplo GlassFish) significa: * Puede gestionar aplicaciones Java EE (por lo general tanto servlet/JSP y EJB).


Tomcat - está dirigido por la comunidad Apache - El código abierto y tiene dos sabores Tomcat - Perfil Web - peso ligero que es contenedor sólo servlet y no es compatible con Java EE características como EJB, JMS, etc. Tomcat EE: este es un contenedor certificado Java EE, este es compatible con todas las tecnologías Java EE.

No hay soporte comercial disponible (sólo apoyo de la comunidad)

JBoss - Dirigido por RedHat Se trata de un soporte de pila completo para JavaEE y es un contenedor Java EE certificado. Esto incluye Tomcat como contenedor web internamente. Esto también tiene dos sabores Versión de comunidad llamada Application Server (AS): solo tendrá soporte de comunidad Enterprise Application Server (EAP) - Para esto, puede tener una licencia basada en suscripción (Se basa en la cantidad de núcleos que tiene en su servidores.)

Glassfish - Ejecutado por Oracle Este es también un contenedor Java EE con certificación full stack. Esto tiene su propio contenedor web (no Tomcat). Esto proviene de Oracle, por lo que todas las nuevas especificaciones serán probadas e implementadas primero con Glassfish. Por lo tanto, siempre sería compatible con las últimas especificaciones. No estoy al tanto de sus modelos de soporte.

+0

¿Tengo razón al decir que hoy en día (1er trimestre de 2018) Glassfish realmente no juega un papel importante en la realidad? ¿No es el estándar de facto JBoss? – Socrates

1

Apache tomcat es solo un contenedor de servidor único que no es compatible con la aplicación Enterprise Java (JEE). JBoss y Glassfish son compatibles con la aplicación JEE pero Glassfish es mucho más pesado que el servidor JBOSS: Reference Slide

1

Parece un poco desalentador utilizar Tomcat cuando lee estas respuestas. Sin embargo, lo que la mayoría no menciona es que puede llegar a casos de uso idénticos o casi idénticos con Tomcat, pero eso requiere que agregue las bibliotecas necesarias (a través de Maven o de cualquier sistema incluido que utilice).

He estado ejecutando tomcat con JPA, EJBs con esfuerzos de configuración muy pequeños.

Cuestiones relacionadas