TOMCAT、JETTY、RESIN之间的差别

小课堂

分享人:郭伟杰

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

一、什么是Tomcat

Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

二、什么是Jetty

Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。

三、什么是Resin

Resin是CAUCHO公司的产品,是一个非常流行的application server,对servlet和JSP提供了良好的支持,性能也比较优良,resin自身采用JAVA语言开发。

Resin提供了最快的jsp/servlets运行平台。在java和javascript的支持下,Resin可以为任务灵活选用合适的开发语言。Resin的一种先进的语言XSL(XML stylesheet language)可以使得形式和内容相分离。 如果您选用jsp平台作为internet商业站点的支持,那么速度、价格和稳定性都是要考虑到的,resin十分出色,表现更成熟,很具备商业软件的要求。

2.知识剖析

一、tomcat和jetty的区别

1.相同点:

Tomcat和Jetty都是一种Servlet引擎,他们都支持标准的servlet规范和JavaEE的规范。

2.不同点:

(1)架构方面

Jetty的架构比Tomcat的更为简单

Jetty的架构是基于Handler来实现的,主要的扩展功能都可以用Handler来实现,扩展简单。

Tomcat的架构是基于容器设计的,进行扩展是需要了解Tomcat的整体设计结构,不易扩展。

(2)性能方面

Jetty可以同时处理大量连接而且可以长时间保持连接,适合于web聊天应用等等。

Jetty的架构简单,因此作为服务器,Jetty可以按需加载组件,减少不需要的组件,减少了服务器内存开销,从而提高服务器性能。

Jetty默认采用NIO在处理I/O请求上更占优势,在处理静态资源时,性能较高

Tomcat适合处理少数非常繁忙的链接,也就是说链接生命周期短的话,Tomcat的总体性能更高。

Tomcat默认采用BIO处理I/O请求,在处理静态资源时,性能较差。

(3)其它方面

Jetty的应用更加快速,修改简单,对新的Servlet规范的支持较好。

Tomcat目前应用比较广泛,对JavaEE和Servlet的支持更加全面,很多特性会直接集成进来。

所以,相对于tomcat来说,

首先,Jetty更轻量级。由于Tomcat除了遵循Java Servlet规范之外,自身还扩展了大量JEE特性以满足企业级应用的需求,所以Tomcat是较重量级的,而且配置较Jetty亦复杂许多。但对于大量普通互联网应用而言,并不需要用到Tomcat其他高级特性,所以在这种情况下,使用Tomcat是很浪费资源的。这种劣势放在分布式环境下,更是明显。换成Jetty,每个应用服务器省下那几兆内存,对于大的分布式环境则是节省大量资源。而且,Jetty的轻量级也使其在处理高并发细粒度请求的场景下显得更快速高效。

其次,Jetty更灵活,体现在其可插拔性和可扩展性,更易于开发者对Jetty本身进行二次开发,定制一个适合自身需求的Web Server。相比之下,重量级的Tomcat原本便支持过多特性,要对其瘦身的成本远大于丰富Jetty的成本。

然而,当支持大规模企业级应用时,Jetty也许便需要扩展,在这场景下Tomcat便是更优的。

二、tomcat和resin的区别

1.相同点

都是web服务器,并且支持集群部署。

2.不同点

(1)速度方面

resin的速度要比tomcat快

(2)机制方面

resin的启动与关闭机制以及报错机制都比tomcat好,tomcat则相对臃肿一些。

(3)开发环境热部署支持方面

tomcat较好,可根据需要配置。修改Jsp或java文件时,可配置是否重启服务。

resin较差,更新class及jsp文件,系统都会自动重新部署,并重启,配置了Session会话时开发比较麻烦。

(4)生产环境下热部署支持

tomcat一般。更新配置文件时,必须手动重启。更新其他文件时,大部分不用重启。但一次性更新太多文件时,经常会造成Tomcat重启失败。

resin较好。更新配置文件时,Resin会自动重启。

3.常见问题

在线上服务应该选择哪一种WEB服务器?

4.解决方案

根据它们之间的区别,选择适合自己的服务器。

好比Jetty更满足公有云的分布式环境,即云环境的需求,而Tomcat更符合企业级环境。

5.编码实战

6.扩展思考

这几个服务器各有优缺点,那一个网站部署服务器时,应该怎么选择才可以保证更加高效的运行呢?

7.参考文献

参考一:http://www.cnblogs.com/fengli9998/p/7247559.html

参考二:百度

参考三:http://www.linuxidc.com/Linux/2014-07/104764.htm

8.更多讨论

欢迎大家交流和讨论

鸣谢

感谢大家观看

BY : 郭伟杰