Sun Inner Circle: 商界和科技界领袖必读

GlassFish 还是 Tomcat:哪个适合于您?

如果您重视应用程序性能、适用性和敏捷性,就请私下里认真考查一下。

首席执行官 (CEO) 总是向 IT 经理提出一些非常简单的问题。客户为何抱怨新的网上订购系统?推广新的 Web 服务为何需要八个月时间?今天早上我的财务报告应用程序为何崩溃了?

首席执行官 (CEO) 极少问 IT 经理的问题是:公司目前使用什么应用程序服务器技术。但在许多情况下,这是一个相关联的问题,因为开发团队使用的应用程序服务器与本公司应用程序的性能和敏捷性有着直接的关系。

更具体说来,应用程序服务器中使用的 Web 容器会成为应用程序质量和开发人员生产率方面的一个决定性因素。利用恰当的 Web 容器技术,您的开发团队可以提高生产率,而您的应用程序产出速度也会更快,而且性能会更好。错误的选择会成为心痛之源 — 这是迟早的事。

因此,如果应用程序是您的业务,您值得认真了解一下应用程序服务器的内部工作原理、Web 容器技术及其对开发团队的影响。本文对下面两个最流行的开放源选项进行了比较:GlassFish 和 Tomcat。

两个流行的选项 — 许多重要的差异

GlassFish 是 GlassFish 社区提供的开放源应用程序服务器,由 Sun 公司于 2005 年推出,现在已证明在开发人员中间非常受欢迎。目前有两个流行版本:GlassFish v2 以及最新发布的 Glassfish v3 Prelude。迄今为止,GlassFish v2 的下载数量已接近 9,000,000 份,仅 2009 年一年就发生 300,000 次产品注册。GlassFish v3 Prelude 提供有新的特性和增强。它是部署由 Java 或动态语言(如 jRuby)支持的丰富互联网应用程序的一个极好的平台。

GlassFish 是一系列 Java EE 容器的集合,其中一个是 Web 容器,而 Tomcat 只是一个 Web 容器。这一重要差异使得 GlassFish 具有一些显著的优势。

Tomcat 应用程序服务器是通过 Apache 推出的,它是由包括 Sun 和 JServ 开发人员组成的小组推出的,其中的初始代码是由 Sun 公司开发的。Tomcat 对于服务器端 Java 的早期采用非常重要,当时是通过开放源许可证提供的,对于开放源软件在大型企业内的普及发挥了巨大作用。

一般来说,Tomcat 上运行的应用程序在 GlassFish 上的运行情况也不会改变。不过,影响应用程序性能、可扩展性、适用性和开发人员生产率的差异非常重要。

要清楚这些差异,了解基本 Web 容器技术非常重要。Web 容器是管理 Servlet、JavaServer Page (JSP) 和其它 Web 层组件的应用程序服务器的组成部分。

GlassFish 是一系列 Java EE 容器的集合,其中一个是 Web 容器,而 Tomcat 只是一个 Web 容器。这一重要差异使得 GlassFish 具有一些显著的优势:

  • 提供更容易的迁移路径。凭借 GlassFish v2,可以清楚而直接地利用如下技术: Enterprise Java Beans (EJBs)、Java Persistence API (JPA)、Java Message Service (JMS) 和其它功能。而对于 Tomcat,这些技术必须一件一件地添加。开发人员的责任是,实现这些功能,并确保都能工作,而且相互配合。
  • 为群集和故障转移提供现成支持。GlassFish v2 可提供群集和先进的高可用性能力,它们使应用程序能够满足严格的企业级服务水平协议 (SLA)。GlassFish v3 Prelude 可通过负载平衡器来支持群集,但尚不具有一个群集配置文件。
  • 提供卓越的管理/监测能力。GlassFish v2 和 v3 Prelude 都通过管理控制台和命令行界面 (CLI) 支持集中管理。GlassFish v2 提供调用流程监测 (Callflow Monitoring),该技术使应用程序开发人员或服务器管理员能够确定应用程序将其大部分时间花在什么地方。GlassFish v3 也将提供这一功能。此外,第三方供应商还可以通过 GlassFish 更新中心获得其软件,以便于在 GlassFish 上安装。而对于 Tomcat,必须一次一个地配置新软件。更新中心还能够容易地访问新的技术版本,如 EJB 3.1,这样就可以在 WAR 中构建 EJB,而不必对应用程序作为 EAR 文件进行打包。
  • 支持脚本语言。GlassFish 支持或不久将会支持 Ruby/JRuby、Python/Jython、Groovy、PHP、JavaScript/Phobos、Scala 和其它语言。

实质性因素:具有其它 Web 容器差异

除了上面提到的一般优势之外,GlassFish 还以其 Web 容器能力与 Tomcat 区别开来。下面列举几个例子:

  • 能够在应用程序重新部署 (v3 Prelude) 时保留会话,这样就为创建 Java Web 应用程序的开发人员节约了时间。
  • GlassFish v2 和 v3 Prelude 支持动态重新配置虚拟服务器和 HTTP 侦听器,而不需要重新启动服务器。而对于 Tomcat,一旦更改了资源池,一般都必须重新启动应用程序服务器。
  • v2 和 v3 Prelude 中的高性能、高可扩展性的 Grizzly Framework 改进了请求/响应吞吐量。GlassFish 中的 Web 层的较低层次是通过Grizzly Framework 实现的。该框架是使用利用了 NIO API(可扩展的网络和文件 I/O)的 Java 编写而成的,以提供可扩展性,而且该框架还可以灵活自定义。
  • GlassFish v2 和 v3 Prelude 包括各种性能优化,例如,“平伸阀调用”(Flattened Valve Invocation),这是对阀架构的修改,简化了调用每个阀的方式,因而减小了堆栈深度并提高了性能。GlassFish v3 Prelude 也可支持 Tomcat 式阀。

Sun 公司进行了广泛的可扩展性测试,以对 Tomcat 和 Glassfish 的 NIO 容器进行比较。这些测试使用一个简单的 Servlet 来最大限度地减少在容器上花费的时间,并测量各种容器每秒钟可支持多少次操作来增加用户数量。例如,16,000 个用户,我们的基准测试得出如下结果:

  GLASSFISH TOMCAT
操作数/ 6988.9 6615.3
平均响应时间 0.242 0.358
最大响应时间 1.519 3.693
90% 响应时间 0.6 0.75

了解详情,并做出恰当的选择

选择一个应用程序会影响公司运营活动(不仅仅是开发团队)的许多个方面。对于企业来说这是一项具有高度战略意义的决策。Sun 公司认为 GlassFish 已证明是下一代应用程序的开发人员的首选项。但是,我们鼓励您了解更多信息,并认真权衡您的替代选择。有关 GlassFish 与 Tomcat 的更多详细信息和比较,请参阅我们的白皮书


 
联系我们 公司信息 新闻 事件 招聘信息 政策法规 使用条款 注册商标 Copyright 1994-2009 Sun Microsystems, Inc.