64%的 Java 开发者使用 Tomcat

  • Srini Penchikala
  • 王锐

2007 年 12 月 5 日

话题:JavaWeb框架DevOps语言 & 开发

根据BZ Research的最新的一项调查结果,Apache Tomcat 是 Java 社区使用最多的应用服务器。这项调查发现 64%的企业 Java 开发者使用 Tomcat。随着它对集群,会话复制,以及基于 JMX 的服务器监测与管理的支持,Tomcat 容器赢得了比其他应用服务器更多的开发者和系统管理者的支持。IBM WebSphere 和 RedHat JBoss 在这项调查中分列第二位和第三位。

Alex Handy 在《软件开发时代》杂志的一篇文章中提到这个趋势时说,Java 开发者在选择托管他们应用程序的 J2EE 容器时,力求简单化。

开源技术支持公司 Covalent 的 Mark Brewer 说,Tomcat 的成功来自于开发者一般在他们的台式电脑上的单机 Tomcat 服务器上开始开发他们的 web 应用程序,然后将其提升到更高的环境中,在这些环境中往往是用WebSphere 或者 JBoss 来托管应用程序。由于这两种服务器都打包 Tomcat 做为 servlet 容器,很多代码开发者在本地的 Tomcat 服务器上测试过代码后,就可以移植到产品环境下,而不需要在代码或者配置文件上做任何更改。另一个 Java EE 5 兼容的应用服务器Apache Geronimo也使用 Tomcat 做为它的 servlet 容器。 

Tomcat 的甜头在于绝大部分企业应用并不真的需要由完全成熟的商业 J2EE 应用服务器提供的类似 EJB、Java 消息服务 (JMS)、或者分布式事务 (XA) 的 J2EE 组件。他们需要的只是一个 Java 5 兼容的带有集群支持的 Web 容器。Tomcat 开发团队在 2004 年的 5.0 版里引入了集群和会话复制特性,在最新的 6.0 版里仍然保留了这些特性。他们还增强了基于 JMX 技术的服务器监测支持。随着集群被加入到 Tomcat,很多公司包括金融机构例如摩根斯坦利正在把他们的 Java 应用移植到 Tomcat 平台。风险投资支持的开源分布式集群解决方案,Terracotta,也为 Tomcat 提供开箱即用的会话集群

在最近举行的QCon会议的你经常感到惊讶的体系架构主题发言中,绝大多数发言者指出在设计他们的企业应用的体系结构时并没有使用 EJB 和分布式事务。

Forrester Research 研究小组的 Michael Goulde 说,Tomcat 可能是排在Apache Web 服务器和MySQL数据库之后使用最多的开放源码软件;他还提到,不仅仅是 Web 开发者对使用 Tomcat 感兴趣,SOA 的开发者也显示出他们对 Tomcat 的兴趣。 SOA 工具例如 ActiveMQApache CXF与 Tomcat 容器的集成使它们成为企业 SOA 栈中的不错的候选者。

Tomcat 6 带来了一些新的特性:

  • Comet 支持,允许异步 HTTP请求处理。Servlet 可以在处理客户端请求的同时,异步的将数据写回到客户端。
  • Executor,允许 web 管理者配置一个共享的Executor元素,catalina connectors 可以使用它来共享一个或者多个线程池。在之前的版本中,每个 connector 都使用各自的线程池。Executor 元素是在配置文件 server.xml 中定义的。
  • NIO 连接器, 允许在传统的 HTTP 和 AJP 连接器之外,配置一个非阻塞式的 Java 连接器(称为 Http11NioProtocol)。

Tomcat 6 支持 Servlet 2.5JSP 2.1 规范,在 Apache 2.0版本的授权许可下使用。开发者可以下载最新的 6.0.14 版本以及订阅tomcat-users邮件列表来参与用户讨论。BZ Research 的这项调查中还包括了 BEA WebLogicOracle Application Server,Sun Java Enterprise Server,Apache Geronimo 以及 SAP NetWeaver 等应用服务器。

查看英文原文:Tomcat used by 64% of Java Developers


译者简介:王锐,曾就读于西安交通大学,目前在北京航空航天大学计算机系攻读博士学位,主要从事新型网络体系结构方面的研究工作,曾经在多个平台下进行过企业级软件的开发,并有嵌入式软件开发经历。关注 SOA 和 P2P。您可以通过 rui.wang@jsi.buaa.edu.cn与他联系。

JavaWeb框架DevOps语言 & 开发