¿Cuál es la diferencia entre Tomcat, JBoss y Glassfish?

9 minutos de lectura

avatar de usuario
samoz

Estoy empezando a buscar 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áles son las diferencias entre estos tres programas?

  • 1. stackoverflow.com/questions/173504/… 2. stackoverflow.com/questions/327793/…

    – pramodc84

    29 de septiembre de 2010 a las 12:44


  • estas preguntas son la ‘maldición’ del código abierto. A veces hay demasiadas opciones que hacen casi exactamente lo mismo. Para los novatos, puede conducir a la parálisis por análisis. Eclipse es el IDE dominante, pero casi todos los libros que vale la pena comprar usan netbeans para desarrollar y enseñar. Utiliza Glassfish cuando he visto que la mayoría de las empresas utilizan Jboss en la vida real. Hay curvas de aprendizaje para usar cada contenedor y puede ser muy frustrante para los novatos.

    – usuario798719

    10 de abril de 2013 a las 3:24


  • Ahora JBoss conocido como [WildFly] (en.wikipedia.org/wiki/WildFly) y JBoss fue la empresa que desarrolló WildFly.

    – Chaminda Bandara

    5 de mayo de 2017 a las 10:58


  • Pregunta similar: Perfil web de Java EE frente a plataforma completa de Java EE

    – Basil Bourque

    31 de marzo de 2018 a las 20:09

avatar de usuario
Petar Minchev

Tomcat es solo un contenedor de servlets, es decir, implementa solo los servlets y la especificación JSP. Glassfish y JBoss son servidores completos de Java EE (que incluyen 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 lo admitía por completo.

  • Nota para los lectores, JBoss ahora cuenta con la certificación Java EE 6 Full Profile como GlassFish. Así es Tomcat ahora Perfil web de Java EE 6 certificado a través de TomEE y es compatible con EJB, CDI, JSF, JPA y más.

    – David Blevins

    24 de julio de 2012 a las 17:35

  • @DavidBlevins, ¿cuáles son ahora las diferencias?

    – aldo.roman.nurena

    23 de agosto de 2013 a las 23:07

  • @aldo.roman.nurena Muy pocas diferencias. GlassFish y JBoss son compatibles con el perfil completo de Java EE, por lo que son compatibles con tecnologías heredadas como JAX-RPC y CORBA. No los incluimos en la versión Java EE de Tomcat, pero toda la tecnología actual está ahí, como JAX-RS, JAX-WS, JMS, CDI, JPA, JSF, EJB, JTA, etc.

    – David Blevins

    26 ago 2013 a las 21:01


  • @DavidBlevins Si queremos elegir entre JBoss y Glassfish, ¿cuál es mejor para el entorno de producción? ¿Hay alguna información de referencia disponible para entender esto?

    – Sudhakar Chavali

    10/10/2014 a las 14:17

  • Editar en stackoverflow es la forma correcta de arreglar las respuestas que se alejan demasiado de la realidad.

    – Warren P.

    28 de enero de 2016 a las 13:11

avatar de usuario
steveperkins

Tomcat es simplemente un servidor HTTP y un contenedor de servlet de Java. JBoss y GlassFish son servidores de aplicaciones Java EE completos, que incluyen 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 esos 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 Java EE completo. Podría decirse que la administración de un servidor Tomcat es 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 podrían agregarse fácilmente a Tomcat)… JBoss y GlassFish son dos de las ofertas de código abierto más populares (la tercera es Apache Geronimo , sobre el que se construye la versión gratuita de IBM WebSphere). JBoss tiene una comunidad de usuarios más grande y profunda, y una base de código más madura. Sin embargo, JBoss va muy por detrás de GlassFish en la implementación de las especificaciones actuales de Java EE. Además, para aquellos que prefieren un sistema de administración basado en GUI… La consola de administración de GlassFish es extremadamente ingeniosa, mientras que la mayor parte de la administración en JBoss se realiza con una línea de comandos y un editor de texto. GlassFish proviene 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 ESO puede ofrecer.

  • No he validado, pero algún reclamo que para un proyecto regular, un contenedor EE 6 podría usar 25% menos memoria que Spring + sus dependencias.

    – Arjan

    23 de agosto de 2012 a las 19:52

  • +1, excelente respuesta, aunque me suscribo al comentario de @Arjan: en realidad, la memoria utilizada por estos servidores en sí 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 de un cerdo de la memoria)

    – Dragón Shivan

    2 oct 2012 a las 11:10

  • Je… la discusión sobre “contenedores de servlet” frente a “servidores JEE” siempre parece convertirse en una discusión sobre “Spring” frente a “EJB/JSF”. He usado JEE durante años y siempre estoy feliz de hacerlo cuando un cliente me paga. Sin embargo, mis pensamientos son: [1] la mayoría de los puntos de referencia en ambos lados provienen de fuentes sesgadas, nunca he notado una gran diferencia de recursos entre las dos pilas, [2] Spring es MUCHO más portátil que los “estándares” JEE, con los que siempre parece doloroso cambiar de servidor, y por último, pero no menos importante…

    –Steve Perkins

    3 de octubre de 2012 a las 1:00

  • … [3] las comunidades de usuarios de Spring e Hibernate eclipsan absolutamente a las de las especificaciones JEE puras. Si tiene problemas con Spring y publica una pregunta en StackOverflow, cientos de personas la leerán y tendrá una respuesta sólida en minutos. Haga una pregunta sobre cosas de JEE, y será leída por una docena de personas… y la mitad de las veces, la única respuesta que obtendrá es: “¡Funcionó para mí!”. Los estándares JEE siempre parecen tener un día de retraso y falta de un dólar, y me siento muy solo cuando tengo problemas con ellos en una aplicación real.

    –Steve Perkins

    3 de octubre de 2012 a las 1:07

  • Ummmm… A partir del año pasado, Tomcat tenía solo 13 MB, GlassFish 53 MB y JBoss 127 MB. No consideraría esos servidores JavaEE (GlassFish y JBoss) cientos de megas. Si está hablando de WebLogic o WebSphere, entonces estamos hablando de un GB. Información encontrada en zeroturnaround.com/rebellabs/…

    – j voluntad

    6 de junio de 2014 a las 17:12

avatar de usuario
Jaimin Patel

Deberías usar GlassFish para aplicaciones empresariales Java EE. Algunas cosas a considerar:

A Servidor web medio: Manejo de solicitudes HTTP (generalmente de navegadores).

A Contenedor de servlet (p.ej Gato) medio: Puede manejar servlets y JSP.

Un Servidor de aplicaciones (p.ej vidriopeces) significa: *Puede gestionar aplicaciones Java EE (normalmente tanto servlet/JSP como EJB).


Gato – está a cargo de la comunidad Apache – Código abierto y tiene dos sabores:

  1. Tomcat – Perfil web – ligero, que es solo un contenedor de servlets y no es compatible con funciones de Java EE como EJB, JMS, etc.
  2. Tomcat ES – Este es un contenedor Java EE certificado, es compatible con todas las tecnologías Java EE.

No hay soporte comercial disponible (solo soporte comunitario)

jboss – Ejecutado por RedHat Este es un soporte de pila completa para JavaEE y es un contenedor Java EE certificado. Esto incluye Tomcat como contenedor web internamente. Esto también tiene dos sabores:

  1. Versión comunitaria denominada Servidor de aplicaciones (AS) – esto solo tendrá apoyo de la comunidad.
  2. Servidor de aplicaciones empresariales (EAP) – Para esto, puede tener una licencia basada en suscripción (se basa en la cantidad de núcleos que tiene en sus servidores).

Pez cristal – Ejecutado por Oracle Este también es un contenedor Java EE certificado de pila completa. Esto tiene su propio contenedor web (no Tomcat). Esto proviene del propio Oracle, por lo que todas las especificaciones nuevas se probarán e implementarán primero con Glassfish. Por lo tanto, siempre sería compatible con las últimas especificaciones. Desconozco sus modelos de soporte.

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

    – Sócrates

    8 de marzo de 2018 a las 14:54

avatar de usuario
nimchimpsky

jboss y glassfish incluyen un contenedor de servlet (como tomcat), sin embargo, los dos servidores de aplicaciones (jboss y glassfish) también proporcionan un contenedor de beans (y algunas otras cosas también, imagino)

JBoss y Glassfish son básicamente servidores de aplicaciones Java EE completos, mientras que Tomcat es solo un contenedor de Servlet. La principal diferencia entre JBoss, Glassfish pero también WebSphere, WebLogic, etc. 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 de pila completa, 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 un marco avanzado como Spring y Guice, muchas de las principales ventajas de usar un servidor de aplicaciones de pila completa pueden mitigarse, y con la suposición de uno de este marco solo 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 de un servidor de aplicaciones ligero como tomcat.

avatar de usuario
usuario2130951

Parece un poco desalentador usar 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 cualquier sistema de inclusión que use).

He estado ejecutando Tomcat con JPA, EJB con muy pocos esfuerzos de configuración.

avatar de usuario
Arjan Tijms

Tanto JBoss como Tomcat son servidores de aplicaciones de servlet 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 empresariales de Java.

Tomcat es mucho más limitado. Una forma de verlo 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.

¿Ha sido útil esta solución?