区别:由不同的组织开发,架构实现上不同。
Apache / Nginx / lighttpd 是一类,都是专用的WEB服务器,Tomcat / Jetty 是一类,是servlet/jsp应用服务器+WEB服务器 ,Jboss则是一个大框架,也是应用服务器 + WEB服务器,但是Tomcat 或则Jetty 都是它的一部分 。
先说Apache和Tomcat的区别:
Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。
在Apache基金会里面ApacheServer永远会被赋予最大的支持,毕竟大儿子最亲嘛,而Apache的开源服务器软件Tomcat同样值得关注,毕竟Tomcat是开源免费的产品,用户会给予最大的支持。但是经常在用Apache和Tomcat等这些服务器时,你总感觉还是不清楚他们之间有什么关系,在用Tomcat的时候总出现Apache,总感到迷惑,到底谁是主谁是次,因此特意在网上查询了一些这方面的资料,总结了一下。
解析一:
Apache支持静态页,Tomcat支持动态的,比如Servlet等,
一般使用Apache+Tomcat的话,Apache只是作为一个转发,对JSP的处理是由Tomcat来处理的。
Apche可以支持PHPcgiperl,但是要使用Java的话,你需要Tomcat在Apache后台支撑,将Java请求由Apache转发给Tomcat处理。
Apache是Web服务器,Tomcat是应用(Java)服务器,它只是一个Servlet(JSP也翻译成Servlet)容器,可以认为是Apache的扩展,但是可以独立于Apache运行。
这两个有以下几点可以比较的:
◆两者都是Apache组织开发的
◆两者都有HTTP服务的功能
◆两者都是免费的
不同点:
Apache是专门用了提供HTTP服务的,以及相关配置的(例如虚拟主机、URL转发等等)
Tomcat是Apache组织在符合Java EE的JSP、Servlet标准下开发的一个JSP服务器.
Runtime r=Runtime.getRuntime(); Process p=null; try { p=r.exec("notepad"); } catch(Exception ex) { System.out.println("fffff"); }
解析二:
Apache是一个Web服务器环境程序,启用他可以作为Web服务器使用,不过只支持静态网页 如(ASP,PHP,CGI,JSP)等动态网页的就不行。
如果要在Apache环境下运行JSP的话就需要一个解释器来执行JSP网页,而这个JSP解释器就是Tomcat,为什么还要JDK呢?因为JSP需要连接数据库的话就要jdk来提供连接数据库的驱程,所以要运行JSP的Web服务器平台就需要Apache+Tomcat+JDK。
整合的好处是:
◆如果客户端请求的是静态页面,则只需要Apache服务器响应请求。
◆如果客户端请求动态页面,则是Tomcat服务器响应请求。
◆因为JSP是服务器端解释代码的,这样整合就可以减少Tomcat的服务开销。
C是一个结构化语言,如谭老爷子所说:它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制),而对于C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。
解析三:
Apache:侧重于HTTP Server
Tomcat:侧重于Servlet引擎,如果以Standalone方式运行,功能上与Apache等效 , 支持JSP,但对静态网页不太理想;
Apache是Web服务器,Tomcat是应用(Java)服务器,它只是一个Servlet(JSP也翻译成Servlet)容器,可以认为是Apache的扩展,但是可以独立于Apache运行。
PS:至于为什么要集成Tomcat和Apache,原因是
Tomcat的最主要的功能是提供Servlet/JSP容器,尽管它也可以作为独立的java Web 服
务器,但在对静态资源(如HTML 文件或图像文件)的处理速度,以及提供的Web 服务器
管理功能方面Tomcat都不如其他专业的HTTP服务器,如IIS和Apache服务器。
因此在实际应用中,常常把Tomcat 与其他HTTP 服务器集成。对于不支持Servlet/JSP
的HTTP服务器,可以通过Tomcat服务器来运行Servlet/JSP组件。
当Tomcat与其他HTTP服务器集成时,Tomcat服务器的工作模式通常为进程外的Servlet
容器,Tomcat 服务器与其他HTTP 服务器之间通过专门的插件来通信。
- 1)独立的Servlet容器
在这种模式下,Tomcat可以作为独立的Java Web服务器,Servlet容器作为构成Web服务器的一部分而存在。独立的Servlet容器是Tomcat的默认模式 - 2)进程内的Servlet容器
Servlet容器分为Web服务器插件和Java容器两部分。Web服务器插件在其他Web服务器内部地址空间打开一个Java虚拟机,Java容器在此JVM中运行Servlet。如有客户端发出调用Servlet的请求,插件获得对此请求的控制并将它传递给Java容器。进程内Servlet容器对于单进程、多进程的服务器非常适合,可以提供较高的运行速度,单缺乏伸缩性。 - 3)进程外的Servlet容器
Servlet容器分为Web服务器插件和java容器两部分。Web服务器插件在其他Web服务器的外部地址空间打开一个JVM。java容器在此JVM中运行Servlet。如有客户端发出调用Servlet的请求,插件获得对此请求的控制并将它传递给java容器。进程外Servlet容器对客户请求的响应速度不如进程内容器,但进程外容器具有更好的伸缩性和稳定性。
Tomcat 既可作为独立的Servlet容器,也可和其他的Web服务器集成,作为进程内的Servlet容器或者进程外的Servlet容器。
在说Tomcat和Jetty的区别:
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器(主要用于解析servlet/JSP,同时具备http服务),技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可。其运行时占用的系统资源小,扩展性好,且支持负载平衡与邮件服务等开发应用系统常用的功能。作为一个小型的轻量级应用服务器,Tomcat在中小型系统和并发访问用户不是很多的场合下被普遍使用,成为目前比较流行的Web 应用服务器。
而Jetty采用业界最优的开源Java Web引擎, 将Java社区中下载量最大,用户数最多,标准支持最完备的Tomcat内核作为其Servlet容器引擎,并加以审核和调优。单纯的Tomcat性能有限,在很多地方表现有欠缺,如活动连接支持、静态内容、大文件和HTTPS等。除了性能问题,Tomcat的另一大缺点是它是一个受限的集成平台,仅能运行Java应用程序。企业在使用时Tomcat,往往还需同时部署Apache Web Server以与之整合。此配置较为繁琐,且不能保证性能的优越性。
Jetty通过使用APR和Tomcat本地技术的混合模型来解决Tomcat的诸多不足。混合技术模型从最新的操作系统技术里提供了最好的线程和事件处理。结果,Jetty达到了可扩展性,性能参数匹配甚至超越了本地Apache HTTP服务器或者IIS。譬如Jetty能够提供数据库连接池服务,不仅支持 JSP 等 Java 技术,同时还支持其他 Web 技术的集成,譬如 php、.NET 两大阵营。
标准化是减小技术依赖风险,保护投资最好的方式。Jerry率先支持全系列JEE Web标准,从根本上保证了应用“一次开发,到处运行”的特点,使应用成品能方便地在Jetty和其他Java Web服务器之间轻易迁移。
相同点:
都是web容器,作用基本一致,都作为jboss的集成的web容器(有tomcat版的jboss、也有jetty版的jboss,即4.0以后的版本)
区别:
实现机制稍有不同,Jetty性能更优
相同点
1.tomcat与jetty都是一种servlet引擎,他们都支持标准的servlet规范和javaEE规范
不同点
1.架构比较
jetty相比tomcat更为简单
jetty架构是基于Handler来实现的,主要的扩展功能都可以用Handler来实现,扩展简单
tomcat的框架是基于容量设计的,进行扩展是需要了解tomcat的整体设计结构,不易扩展
2.性能比较
jetty和tomcat性能方面差异不大
jetty可以同时处理大量链接而且可以长时间保持链接,适合于javaWeb聊天应用
jetty的架构简单,因此作为服务器,jetty可以按需加载组件,减少不需要的组件,减少了服务器内存开销,从而提高服务器性能
jetty默认采用NIO结束来处理I/o请求上更占优势,在处理静态资源时,性能较高
tomcat适合处理少数非常繁忙的连接,也就是连接生命周期短的话,tomcat的总体性能更高
tomcat默认采用B/o处理I/o请求,在处理静态资源时,性能较差
3.其他比较
jetty的应用更加快捷,修改简单,对新的servlet规范的支持更好
tomcat目前应用比较广泛,对javaEE和servlet的支持更加全面,很多特性会直接集成进来
1、Tomcat市场应用更广泛
2、Jetty的架构更简单:责任链模式。而Tomcat有多层容器。
3、性能差别:
1)应用场景不同,性能不同:Tomcat在处理少数非常繁忙的连接上有优势,即连接的生命周期短时,总体性能高。而Jetty可以同时处理大量连接而且可以长时间保持连接,如Web聊天应用,淘宝Web旺旺即用Jetty作为Servlet引擎。
2)Jetty架构简单,作为服务器可以按需加载组件,不需要的组件可以去掉,就能减少服务器本身的内存开销,处理一次请求也可以减少产生的临时对象,提高性能。
3)Jetty默认使用NIO技术,在处理IO请求时占优势。Tomcat默认使用BIO,在处理静态资源时,性能较差。
4、Tomcat结构更复杂,修改功能缓慢,对Servlet新加规范的支持要慢。Jetty修改简单,应变更迅速。