【问题标题】:What is the difference between Tomcat, JBoss and Glassfish?Tomcat、JBoss 和 Glassfish 有什么区别?
【发布时间】:2011-04-18 19:26:12
【问题描述】:

我开始研究 Enterprise Java,我正在关注的书提到它将使用 JBoss。 Netbeans 附带 Glassfish。我过去使用过 Tomcat。

这三个程序有什么区别?

【问题讨论】:

标签: java tomcat jboss glassfish enterprise


【解决方案1】:

Tomcat 只是一个 servlet 容器,即它只实现 servlet 和 JSP 规范。 Glassfish 和 JBoss 是完整的 Java EE 服务器(包括 EJB、JMS 等东西),Glassfish 是最新 Java EE 6 堆栈的参考实现,但 2010 年的 JBoss 还没有完全支持它。

【讨论】:

  • 读者注意,JBoss is now Java EE 6 Full Profile certified 喜欢 GlassFish。同样,Tomcat 现在是 Java EE 6 Web Profile certified via TomEE 并支持 EJB、CDI、JSF、JPA 等。
  • @DavidBlevins 那么现在有什么不同?
  • @aldo.roman.nurena 差异很小。 GlassFish 和 JBoss 都支持 Java EE Full Profile,因此它们支持 JAX-RPC 和 CORBA 等传统技术。我们没有在 Tomcat 的 Java EE 版本中包含这些,但是所有当前的技术都在那里,例如 JAX-RS、JAX-WS、JMS、CDI、JPA、JSF、EJB、JTA 等。
  • @DavidBlevins 如果我们想在 JBoss 和 Glassfish 之间进行选择,哪个更适合生产环境?是否有任何参考信息可以理解这一点?
  • 在 stackoverflow 上编辑是修复偏离现实的答案的正确方法。
【解决方案2】:

Tomcat 只是一个 HTTP 服务器和 Java servlet 容器。 JBoss 和 GlassFish 是成熟的 Java EE 应用程序服务器,包括 EJB 容器和该堆栈的所有其他功能。另一方面,Tomcat 具有更轻的内存占用(约 60-70 MB),而那些 Java EE 服务器的重量为数百兆。 Tomcat 对于简单的 Web 应用程序或使用 Spring 等不需要完整 Java EE 服务器的框架的应用程序非常流行。 Tomcat 服务器的管理可以说更容易,因为移动部件更少。

但是,对于确实需要完整的 Java EE 堆栈(或至少有更多可以轻松固定到 Tomcat 的部分)的应用程序... JBoss 和 GlassFish 是两个最受欢迎的开源产品(第三个是 Apache Geronimo,IBM WebSphere 的免费版本建立在此之上)。 JBoss 拥有更大更深的用户社区,以及更成熟的代码库。但是,JBoss 在实现当前 Java EE 规范方面明显落后于 GlassFish。此外,对于那些喜欢基于 GUI 的管理系统的人来说…… GlassFish 的管理控制台非常流畅,而 JBoss 中的大多数管理都是通过命令行和文本编辑器完成的。 GlassFish 直接来自 Sun/Oracle,具有可以提供的所有优势。 JBoss 不受 Sun/Oracle 的控制,拥有它可以提供的所有优势。

【讨论】:

  • 我尚未验证,但some claim 对于常规项目,EE 6 容器使用的内存可能比 Spring + 其依赖项少 25%
  • +1,很好的答案,虽然我订阅了@Arjan 的评论:与部署的应用程序需要多少内存相比,这些服务器本身使用的内存实际上并不重要(这在很大程度上取决于关于所使用的技术。Spring 有点像内存猪)
  • 嘿...“servlet 容器”与“JEE 服务器”的讨论似乎总是变成“Spring”与“EJB/JSF”的讨论。我已经使用 JEE 多年了,当客户付钱给我时,我总是很乐意这样做。但是,我的想法是:[1] 双方的大多数基准测试都来自有偏见的来源,我自己从未注意到两个堆栈之间存在很大的资源差异,[2] Spring 比 JEE“标准”更便携,其中切换服务器似乎总是很痛苦,最后但并非最不重要的......
  • ... [3] Spring 和 Hibernate 的用户社区绝对让纯 JEE 规范的用户社区相形见绌。如果您在使用 Spring 时遇到问题并在 StackOverflow 上发布问题,它将被数百人阅读,并且您将在几分钟内得到可靠的答案。问一个关于 JEE 的问题,它会被十几个人阅读……一半时间,你得到的唯一回应是,“它对我有用!”。 JEE 标准似乎总是迟到一天,差一美元,当我在真正的应用程序中遇到麻烦时,我感到非常孤独。
  • Ummmm...截至去年,Tomcat 仅为 13 MB,GlassFish 为 53MB,JBoss 为 127 MB。我不会考虑那些数百兆的 JavaEE 服务器(GlassFish 和 JBoss)。如果您谈论的是 WebLogic 或 WebSphere,那么我们谈论的是 GB。在zeroturnaround.com/rebellabs/… 找到的信息
【解决方案3】:

您应该将 GlassFish 用于 Java EE 企业应用程序。 需要考虑的一些事项:

网络服务器意味着:处理 HTTP 请求(通常来自 浏览器)。

一个Servlet Container(例如Tomcat)意味着:它可以处理 servlet 和 JSP。

一个应用服务器(例如GlassFish)意味着:*它可以管理 Java EE 应用程序(通常是 servlet/JSP 和 EJB)。


Tomcat - 由 Apache 社区运行 - 开源,有两种风格:

  1. Tomcat - Web 配置文件 - 轻量级,只是 servlet 容器,不支持 EJB、JMS 等 Java EE 功能。
  2. Tomcat EE - 这是一个经过认证的 Java EE 容器,它支持所有 Java EE 技术。

没有商业支持(只有社区支持)

JBoss - 由 RedHat 运行 这是对 JavaEE 的全栈支持,并且是经过认证的 Java EE 容器。 这包括 Tomcat 作为内部的 Web 容器。 这也有两种口味:

  1. 名为 Application Server (AS) 的社区版本 - 这将仅提供社区支持。
  2. Enterprise Application Server (EAP) - 为此,您可以拥有基于订阅的许可证(它基于您在服务器上拥有的核心数量。)

Glassfish - 由 Oracle 运行 这也是一个全栈认证的 Java EE 容器。它有自己的 Web 容器(不是 Tomcat)。 这来自 Oracle 本身,因此所有新规范都将首先使用 Glassfish 进行测试和实施。所以,它总是支持最新的规范。我不知道它的支持模型。

【讨论】:

  • 我说得对吗,如今(2018 年第一季度)Glassfish 在现实中并没有真正发挥重要作用?不是事实上的标准 JBoss 吗?
【解决方案4】:

jboss 和 glassfish 包含一个 servlet 容器(如 tomcat),但是两个应用程序服务器(jboss 和 glassfish)也提供一个 bean 容器(我想还有一些其他的东西)

【讨论】:

  • Glassfish 可以做 Tomcat 可以做的任何事情,但这并不意味着它“包含”Tomcat。 Glassfish 有自己的网络容器。
  • 为了更清楚,“like tomcat”是对的,但 JBoss 实际上嵌入了 Tomcat 作为其 servlet 容器实现。
  • @Chucky 不再
【解决方案5】:

JBoss 和 Glassfish 基本上是完整的 Java EE 应用服务器,而 Tomcat 只是一个 Servlet 容器。 JBoss、Glassfish 以及 WebSphere、WebLogic 等与 Tomcat 和 Jetty 之间的主要区别在于完整的应用服务器提供的功能。当您拥有一个全栈 Java EE 应用服务器时,您可以从您选择的供应商的所有实现中受益,当然您也可以从 EJB、JTA、CDI(JAVA EE 6+)、JPA、JSF、JSP/Servlet 中受益等等。另一方面,使用 Tomcat,您只能从 JSP/Servlet 中受益。然而,如今使用 Spring 和 Guice 等高级框架,可以减轻使用全栈应用程序服务器的许多主要优势,并且假设使用 Spring 生态系统中的一个框架,您可以从许多子系统中受益项目,在我的工作经验中,让我放弃使用全栈应用服务器,转而使用轻量级应用服务器,如 tomcat。

【讨论】:

    【解决方案6】:

    当您阅读这些答案时,使用 Tomcat 似乎有点令人沮丧。然而,大多数人没有提到的是,您可以使用 tomcat 获得相同或几乎相同的用例,但这需要您添加所需的库(通过 Maven 或您使用的任何包含系统)。

    我一直在运行带有 JPA 和 EJB 的 Tomcat,只需要很少的配置工作。

    【讨论】:

    • @MarcoOttina 根据我的经验,是的。它是一个高度可配置的 Web 服务器。我猜想很多构建现代 Web 应用程序的人都将它与 Spring / Spring Boot 一起使用。在我使用 Java 的这些年里,我仍然对生态系统(尤其是所有 JEE 的东西)感到困惑,因为我从来没有对它有任何要求。因此今天在这里结束:)
    【解决方案7】:

    JBoss 和 Tomcat 都是 Java servlet 应用服务器,但 JBoss 远不止这些。两者的本质区别在于 JBoss 提供了完整的 Java Enterprise Edition (Java EE) 堆栈,包括 Enterprise JavaBeans 和许多其他对开发企业 Java 应用程序的开发人员有用的技术。

    Tomcat 的限制要多得多。一种理解方式是,JBoss 是一个 Java EE 堆栈,包括一个 servlet 容器和 Web 服务器,而 Tomcat 在大多数情况下是一个 servlet 容器和 Web 服务器。

    【讨论】:

      【解决方案8】:

      Apache tomcat 只是一个不支持 Enterprise Java application (JEE) 的 serverlet 容器。 JBoss 和 Glassfish 支持 JEE 应用程序,但 Glassfish 比 JBOSS 服务器重得多:Reference Slide

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-23
        • 2013-06-14
        • 2017-09-21
        • 2015-08-28
        • 1970-01-01
        相关资源
        最近更新 更多