Jetty与Tomcat的区别 转
Jetty与Tomcat的区别
由于没有研究过Tomcat,所以区别不好说,这里暂时就网上的一些言论和自己所了解到的一些总结下(摘自于许令波)。
Jetty 的架构从前面的分析可知,它的所有组件都是基于 Handler 来实现,当然它也支持 JMX。但是主要的功能扩展都可以用 Handler 来实现。可以说 Jetty 是面向 Handler 的架构,就像 Spring 是面向 Bean 的架构,iBATIS 是面向 statement 一样,而 Tomcat 是以多级容器构建起来的,它们的架构设计必然都有一个“元神”,所有以这个“元神“构建的其它组件都是肉身。
从设计模板角度来看 Handler 的设计实际上就是一个责任链模式,接口类 HandlerCollection 可以帮助开发者构建一个链,而另一个接口类 ScopeHandler 可以帮助你控制这个链的访问顺序。另外一个用到的设计模板就是观察者模式,用这个设计模式控制了整个 Jetty 的生命周期,只要继承了 LifeCycle 接口,你的对象就可以交给 Jetty 来统一管理了。所以扩展 Jetty 非常简单,也很容易让人理解,整体架构上的简单也带来了无比的好处,Jetty 可以很容易被扩展和裁剪。
相比之下,Tomcat 要臃肿很多,Tomcat 的整体设计上很复杂,前面说了 Tomcat 的核心是它的容器的设计,从 Server 到 Service 再到 engine 等 container 容器。作为一个应用服务器这样设计无口厚非,容器的分层设计也是为了更好的扩展,这是这种扩展的方式是将应用服务器的内部结构暴露给外部使用者,使得如果想扩展 Tomcat,开发人员必须要首先了解 Tomcat 的整体设计结构,然后才能知道如何按照它的规范来做扩展。这样无形就增加了对 Tomcat 的学习成本。不仅仅是容器,实际上 Tomcat 也有基于责任链的设计方式,像串联 Pipeline 的 Vavle 设计也是与 Jetty 的 Handler 类似的方式。要自己实现一个 Vavle 与写一个 Handler 的难度不相上下。表面上看,Tomcat 的功能要比 Jetty 强大,因为 Tomcat 已经帮你做了很多工作了,而 Jetty 只告诉,你能怎么做,如何做,有你去实现。
单纯比较 Tomcat 与 Jetty 的性能意义不是很大,只能说在某种使用场景下,它表现的各有差异。因为它们面向的使用场景不尽相同。从架构上来看 Tomcat 在处理少数非常繁忙的连接上更有优势,也就是说连接的生命周期如果短的话,Tomcat 的总体性能更高。
而 Jetty 刚好相反,Jetty 可以同时处理大量连接而且可以长时间保持这些连接。例如像一些 web 聊天应用非常适合用 Jetty 做服务器,像淘宝的 web 旺旺就是用 Jetty 作为 Servlet 引擎。
另外由于 Jetty 的架构非常简单,作为服务器它可以按需加载组件,这样不需要的组件可以去掉,这样无形可以减少服务器本身的内存开销,处理一次请求也是可以减少产生的临时对象,这样性能也会提高。另外 Jetty 默认使用的是 NIO 技术在处理 I/O 请求上更占优势,Tomcat 默认使用的是 BIO,在处理静态资源时,Tomcat 的性能不如 Jetty。
转载于:https://www.cnblogs.com/gym333/p/5127941.html
Jetty与Tomcat的区别 转相关推荐
- 浅聊Jetty和Tomcat的区别
Jetty和Tomcat的区别 Jetty和Tomcat是目前全球范围内最著名的两款开源的webserver/servlet容器. Jetty 是一个开源的servlet容器,它为基于Java的web ...
- tomcat和undertow、jetty、netty的区别
tomcat简介 在说undertow和tomcat区别之前,先说下tomcat是什么(如果知道了可以跳过哦!) Tomcat:免费开源,轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被 ...
- Undertow,Tomcat和Jetty服务器之间的区别
Undertow,Tomcat和Jetty服务器配置详解与性能测试 本文文章是通过研究时下比较流行的Java框架spring boot引发的思考,希望大家能一起学习.undertow,jetty和to ...
- jetty与tomcat区别
相同点 1.tomcat与jetty都是一种servlet引擎,他们都支持标准的servlet规范和javaEE规范 不同点 1.架构比较 jetty相比tomcat更为简单 jetty架构是基于Ha ...
- Jetty 与 Tomcat 比较,及性能分析
主流java的web容器,主要是Tomcat, jboss, jetty, resin.由于以前我们主要用的是jboss4.0.5,但jbosse用的servlet容器是tomcat5.5,所以只进行 ...
- apache/nginx/tomcat的区别
根据[1] ①:Nginx的并发性要比apache好很多: ②:nginx属于轻量级服务器软件,apache属于重量级软件: ③:nginx在处理静态页的效率要比apache好很多,apache在处理 ...
- Jetty 与 Tomcat
Tomcat 的关键指标有吞吐量.响应时间.错误数.线程池.CPU 以及 JVM 内存 线程池中的线程数量不足会影响吞吐量和响应时间: 但是线程数太多会耗费大量 CPU: 当内存不足时会触发频繁地 G ...
- J2EE进阶(二十四)JBoss Web和 Tomcat的区别
J2EE进阶(二十四)JBoss Web和 Tomcat的区别 在Web2.0的浪潮中,各种页面技术和框架不断涌现,为服务器端的基础架构提出了更高的稳定性和可扩展性的要求.近年来,作为开源中间件的全球 ...
- spring-boot-starter-undertow和tomcat的区别
什么是tomcat 在说undertow和tomcat区别之前,先说下tomcat是什么(如果知道了可以跳过哦!) Tomcat:免费开源,轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下 ...
最新文章
- pycharm 查看代码行数_【收藏】提高PyCharm效率的10个小技巧
- 五. H.264的码流封装格式
- java中的compareTo函数
- C# ListView 简单命令例子
- Android 系统性能优化(42)---Android代码内存优化建议-Android资源篇
- 正在做鸡肋事情的你,准备好了奔赴下一个战场么?
- abaqus2021安装及fortran关联
- 基于MATLAB的柱状图画法及特殊柱状图画法总结
- 常见游戏外挂分类及原理概述
- OneNote使用技巧 - 5.快速设置首行缩进
- 物联网:GPRS和NB-IOT
- 2022世界杯看球指南
- 目标跟踪常用的视频库
- matlab 小波 清浊音,matlab语音信号处理如何判别清浊音?
- 2020年,阿里最新的java程序员面试题目含答案带你吊打面试官
- 北航计算机组成原理课程设计-2020秋 【系列完结】Verilog或ISE高级特性与自动化测试
- @Transactional使用
- 利用html2canvas 和 jspdf 实现html转pdf html转图片
- Java基础笔记_6_类和对象_成员变量
- 店盈通: 拼多多店运营怎么选择推广关键词?