【CSDN 12月7日消息】 分析公司Forrester Research的分析师这样评价Tomcat:“Tomcat可能是排在Apache Web 服务器和MySQL 数据库之后使用最多的开源产品。”BZ最新的调查研究则为此提供了有力的证据:Apache Tomcat是Java社区最常用的应用服务器——64%的Java开发者选择使用Tomcat。
现任空中网研发工程师的贺炜认为,Tomcat之所以大受欢迎原因主要有以下五点:
1. Tomcat 是 Apache 的核心项目之一,也被 SUN 视作 Servlet/JSP 容器的一个重要参考实现而加以支持。因此 SUN 最新的 Servlet/JSP 规范,往往能够很快地在 Tomcat 的新版本中得到体现;
2. Tomcat 是一个小巧精致的 web 应用服务器,配置、安装、运行、部署 web 应用都很简单,这让用户能够很快地上手使用;
3. 开源软件的生命力,往往与其社区的状况有紧密的联系。在一个健康、活跃的社区,用户的疑问通常能够及时地解决,用户的反馈往往能够得到有效地处理,这样会 吸引更多的用户加入到社区中来;反过来,不断扩大的用户群,也会促进社区的发展。Tomcat 所拥有的优秀社区,对开发者而言,无论用什么标准来评价,都是充满吸引力的;
4. 编写良好的文档,是开发者在开发中最好的帮手之一。Apache 在开源社区中,无疑是撰写文档方面的佼佼者;
5. 因为开源和免费的特性,使得用户可以自由无障碍地下载、安装、使用 Tomcat。这也是 Tomcat 能够被广泛使用的重要原因之一。
我们都知道Tomcat 最初是作为 Servlet/JSP 容器的参考实现而进行设计开发的,在性能方面,并没有做过多的考量。经过几年的时间,Apache 发现 Servlet/JSP 容器并非只是 J2EE 环境的一部分而已。大量 web 应用并不需要 J2EE 这样的庞然大物,完全可以将 Tomcat 作为一个单独的 web 应用服务器来使用。
这实际也正是Tomcat受欢迎的另一原因所在——很多开发者不需要如EJBs、JMS、分布式事务处理等 J2EE组件。Rod Johnson 在他的《J2EE Development without EJB》一书中,指出了 J2EE 的许多不足之处。比如说,传统 J2EE(Java EE 5之前的 J2EE)中的 Entity EJB 是不怎么招人喜欢的。在 Java EE 5 中,过时的 Entity EJB 组件被淘汰掉,数据持久化的工作,交给了深受 Hibernate 此类 ORM 工具影响的 JPA 来完成。分布式对象在大多数情况下,也是不合时宜的。
Martin Fowler 在《企业应用架构模式》中写道:分布式对象设计的第一原则就是——不要分布你的对象。他给出的建议是将所有的组件部署到集群中的每一个节点中去。因而对于 大部分 web 应用,Tomcat 应用服务器就能满足需求。通过诸如 Spring-Struts-Hibernate 这样的组合,我们可以快速而灵活地开发出能够满足复杂业务需求的 web 系统来。
在开发实践中除了 Tomcat贺炜还使用过Resin,就二者的性能方面,贺炜简单比较了一下:在几年前,Resin 2.x 的性能比同时期的 Tomcat 要好不少。但是 Tomcat 自设计实现了全新的 Catalina 引擎之后,在性能方面的问题便持续得到改善。而 Resin 在步入 3.x 版本后,划分成免费的 Open Source 版本和收费的 Pro 版本。有相当多的测试表明,Resin 3.x OS 的性能,与 Tomcat 5/6 相比要低得多;
在配置方面,同 Resin 相比,Tomcat 还是显得稍微繁琐一点。对于中国的开发者而言,为了避免系统中出现乱码,往往还需要对 Tomcat 进行一些额外的配置才可以。而 Resin 在这一方面表现得很好,在绝大多数情况下,基本上不用做任何配置就能正常处理中文而不会出现乱码的问题。
“另外,在 Resin 3.x Pro 中,提供了诸如缓存、集群等高级特性,倘若 Tomcat 在这方面有所加强,对于开发者而言无疑是非常美好的一件事情。”
谈到Tomcat未来的趋势,贺炜说“目前 Tomcat 无疑是使用最为广泛的 web 应用服务器之一,完全有理由相信这样的情况至少还会持续数年。但是天边已经出现两朵小小的、令人不安的乌云。”
Ruby on Rails 所展现的开发方式与它所产生的高生产率,给予 Java 开发者们的震撼很大。如果 Java 社区不能及时有效地改进 web 应用开发的方式,那么包括 Tomcat 在内的众多 Java 社区都会受到 RoR 不小的冲击。可能正如 Bruce Tate 所预言的那样,Java 在未来将更加着重于解决更复杂的事情,而普通 web 应用开发领域,则会逐步让位给像 RoR 这样高度灵活快速的技术。