Jetty与Tomcat综合比较

时间:2022-03-18 17:36:47


        Tomcat和Jetty都是一种应用的比较广泛的Servlet引擎,但是相比较于Jetty,Tomcat更加稳定成熟,其市场霸主地位仍然难以撼动。但是两者各有优劣,现对其进行综合比较:


架构方面

     Jetty所有组件都是基于Handler来实现的,是一种面向Handler的架构。(Spring是一种面向Bean的架构,IBatis是一种面向Statement的架构)         

从设计模式角度来看:一、Handler采用责任链设计模式:HandlerCollection可以帮助开发者构建一个链,接口类ScopeHandler可以帮助开发者控制这个链的访问顺序;二、采用了观察者设计模式,对象只要继承了LifeCycle接口就可以被Jetty管理控制整个生命周期。

     Tomcat则是一种多级容器的构建模式,所有组件依附于其构建骨架;其核心就是容器设计,设计臃肿复杂,是为了更好扩展,但是将内部结构暴露给了外部使用者,学习难度变大,增加学习成本,其难度。

 

      Jetty讲的是做某件事的规范,即告诉你应该怎么做,如果做由开发者自己实现;

      Tomcat则是已经做了很多的工作,你要先理解这些工作,然后在此基础上做额外的工作。

 

性能方面

     Tomcat和Jetty的使用场景不尽相同,即对相同的使用场景,两者性能各有优劣。

    Jetty可以同时处理并保持大量的连接,适合生命周期长的;按需加载组件,使用NIO技术,处理I/O请求上更具优势。例如,淘宝Web旺旺使用的就是Jetty作为Servlet引擎。

    Tomcat适合处理少数频繁并且生命周期短的连接;使用BIO技术,处理静态资源时性能较差。


特性方面

    Jetty和Tomcat都支持标准的Servlet规范、JavaEE规范。

    只不过Tomcat更加成熟,支持的更加全面而已,集成了很多这些规范的特性;整体结构复杂,修改功能缓慢,不易扩展。

   Jetty轻便灵敏(因为其开发社区更加灵活,修改更加简单),整体结构简单易用,组件可替换,功能修改较快,容易扩展。