在开源Java应用服务器领域,像JBoss、Tomcat及Apache的Geronimo,他们不仅仅是商 业领域的领跑者,同时是技术领域的先行者。当然,所有的Java EE应用服务器的实现不 尽相同,但其很多方面具有一定程度的可比性。本文对JBoss4.2、Geronimo 2及Tomcat 6 三种开源的Java EE应用服务器,就他们的特性、部署及性能等方面进行一一比较。
一、前言
当企业级的Java应用程序需要真正的应用部署时,Java EE应用服务器是必不可少的工 具。研究表明,除了商业的应用服务器之外,开源的Java EE应用服务器开始成为很多 Java企业级应用的最佳选择。而JBoss、Tomcat及Apache的Geronimo是其中最主流的开源 Java EE应用服务器。而这三者中,尽管JBoss和Tomcat并非100%的实现了Java EE 5标准 ,但这二者占有的市场份额相对比较大。Geronimo是对Java EE 5标准100%的实现,正在 快速的发展。如果读者想在Java EE领域找份像样的工作,对这三种开源的应用服务器应 该达到比较熟悉的程度,并能在一定程度上进行比较区分。
在本文中,对这三种主流的应用服务器,就其特性、部署及性能等方面进行比较。分 析了他们各自的特色对该应用服务器的重要性,当然,也提供了一些如何选择适合项目的 服务器的原则及建议。
二、特性比较
表1就JBoss 4.2、Tomcat 6及Geronimo 2的特性进行全面的比较。请注意,表中用到 的“部分支持”表述,表明该应用服务器并非完全的支持,需要安装一些额外 包。而其中的“原则上支持”表述,表明该应用服务器需要第三方的安装包的 支持。注:三种应用服务器均在Linux、Solaris、Windows及Mac OS X上进行过测试。
特性 | JBoss 4.2 | Geronimo 2 | Tomcat 6 |
Java EE 5一致性 | 部分支持 | 完全支持 | 部分支持 |
支持EJB 3.0 | 支持 | 支持 | 原则上支持 |
JSP2.1和Servlet2.5 | 支持 | 支持 | 支持 |
JSF1.2 | 支持 | 支持 | 原则上支持 |
客户化插件 | 支持 | 支持 | 不支持 |
业务规则引擎 | 原则上支持 | 原则上支持 | 原则上支持 |
Hibernate3.x | 支持 | 原则上支持 | 原则上支持 |
集群 | 支持 | 支持 | 部分支持 |
Eclipse IDE | 支持 | 支持 | 支持 |
表1.Java EE应用服务器特性比较
当读者的应用需要比较特殊的扩展,或是想与Java EE 5最贴近时,那么,Geronimo 2 是最佳的开源Java EE应用服务器选择。尽管JBoss 4.2与Sun的Java EE标准在实现上有一 定的出入,但JBoss 4.2 team提供了许多与Java EE标准很符合的技术,同时也扩充了 Java EE 5的标准范围。而Tomcat 6本身就是一种轻量级的解决方案,所以它不并包括 Java EE 5的所有特性,或是在JBoss及Geronimo中所提供的特性,但正是由于它的轻量级 ,才使它对内存的占有量比较少,并且比其它两种服务器运行起来更快。
1.Java EE 5一致性
Sun公司的Java EE 5标准是一种行业标准,而作为这种标准的实现,开源的Java EE 5 应用服务器应该与其尽量的保持一致,因此Java EE 5的一致性是一个很重要的指标。在 这三种开源的实现中,Geronimo是实现得最好,与Java EE 5标准最贴近的应用服务器。 JBoss 4.2支持绝大部分Java EE 5的特性,当然,不久即将发布的JBoss 5将完全支持 Java EE 5的所有特性。而Tomcat一般看成是JSP/servlet的容器,仅仅支持Java应用服务 器的基本特性。
2.支持EJB3
EJB(Enterprise JavaBeans)是指能在Java EE服务器部署的Java组件。它通常将一 些业务功能打包成可重用的组件。新发布的EJB3提供了许多新功能,解决了旧版本中许多 问题。JBoss 4.2及Geronimo 2均支持EJB3。Tomcat 6本身并不支持EJB3,但Apache OpenEJB项目可以使Tomcat支持EJB3,据称Tomcat可以运行一种嵌入式的JBoss EJB3容器
3.支持JSP 2.1/Servlet2.5
对JSP/servlet的支持是绝大部分Java服务器应提供的最基本功能。JSP2.1和 Servlet2.5是Java EE 5对JSP/servlet的升级功能。JBoss 4.2、Geronimo 2及Tomcat 6 均支持JSP/servlet这一特性。