Jetty和Tomcat的区别
Jetty和Tomcat是目前全球范围内最著名的两款开源的webserver/servlet容器。
Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为比较流行的Web 应用服务器。
相同点:
1、Tomcat和Jetty都是一种servlet引擎,他们都支持标准的servlet规范和JavaEE的规范。
不同点:
1、架构比较
(1)Jetty的架构比Tomcat简单,更轻量级,更灵活。
(2)Jetty的架构是基于handler来实现的,主要的扩展功能都可以使用handler来实现,扩展简单,可插拔性强,易于开发者对Jetty本身进行二次开发,定制一个适合自身需求的Web Server。
(3)Tomcat的架构是基于容器设计的,进行扩展是需要了解Tomcat的整体设计结构,不易扩展,重量级的Tomcat原本便支持过多特性,要对其瘦身的成本远大于丰富Jetty的成本。
2、性能比较
(1)Jetty和Tomcat性能方面差异不大。
(2)Jetty可以同时处理大量连接而且可以长时间保持连接,适合web聊天应用等等。
(3)Jetty的架构简单,因此作为服务器,Jetty可以按需加载组件,减少不必要的组件,减少了服务器内部开销,从而提高服务器性能。
(4)Jetty默认采用NIO结束处理I/O请求上更占优势,在处理静态资源时,性能较高。
3、Tomcat适合处理少数非常繁忙的链接,Tomcat的总体性能更高。Tomcat默认采用BIO处理I/O请求,在处理静态资源时,性能较差。
4、其他比较
(1)Jetty的应用更加快速,修改简单,对新的servlet规范的支持较好。
(2)Tomcat目前应用比较广泛,对javaEE和servlet的支持更加全面,很多性能会直接集成进来。
写在最后:笔者认为Jetty和Tomcat都是servlet的容器,由不同的组织开发,架构实现上不同,但都符合servlet标准,也就是说功能非常非常相似(几乎一样的)。Jetty相较Tomcat更轻量,配置相较简单,对于大多数普通互联网应用并不需要用到Tomcat其他高级特性,所以在这种情况下,使用Tomcat是很浪费资源的,当支持大规模企业级应用时,Jetty也许便需要扩展,在这场景下Tomcat便是更优的。Jetty更满足公有云的分布式环境的需求,而Tomcat更符合企业级环境。