大家好,我是IT修真院上海分院第02期學(xué)員,一枚正直善良的Java程序員。 今天給大家分享一下,修真院官網(wǎng)task2任務(wù)中可能會使用到的知識點(diǎn):TOMCAT、JETTY、RESIN之間的差別: TOMCAT,JETTY,RESIN之間的區(qū)別_騰訊視頻 1.背景介紹一、什么是TomcatTomcat是Apache軟件基金會(Apache Software Foundation)的Jakarta 項(xiàng)目中的一個(gè)核心項(xiàng)目,由Apache、Sun 和其他一些公司及個(gè)人共同開發(fā)而成。由于有了Sun 的參與和支持,最新的Servlet 和JSP 規(guī)范總是能在Tomcat 中得到體現(xiàn),Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 規(guī)范。因?yàn)門omcat 技術(shù)先進(jìn)、性能穩(wěn)定,而且免費(fèi),因而深受Java 愛好者的喜愛并得到了部分軟件開發(fā)商的認(rèn)可,成為目前比較流行的Web 應(yīng)用服務(wù)器。 二、什么是JettyJetty 是一個(gè)開源的servlet容器,它為基于Java的web容器,例如JSP和servlet提供運(yùn)行環(huán)境。Jetty是使用Java語言編寫的,它的API以一組JAR包的形式發(fā)布。開發(fā)人員可以將Jetty容器實(shí)例化成一個(gè)對象,可以迅速為一些獨(dú)立運(yùn)行(stand-alone)的Java應(yīng)用提供網(wǎng)絡(luò)和web連接。 三、什么是ResinResin是CAUCHO公司的產(chǎn)品,是一個(gè)非常流行的application server,對servlet和JSP提供了良好的支持,性能也比較優(yōu)良,resin自身采用JAVA語言開發(fā)。 Resin提供了最快的jsp/servlets運(yùn)行平臺。在java和javascript的支持下,Resin可以為任務(wù)靈活選用合適的開發(fā)語言。Resin的一種先進(jìn)的語言XSL(XML stylesheet language)可以使得形式和內(nèi)容相分離。 如果您選用jsp平臺作為internet商業(yè)站點(diǎn)的支持,那么速度、價(jià)格和穩(wěn)定性都是要考慮到的,resin十分出色,表現(xiàn)更成熟,很具備商業(yè)軟件的要求。2.知識剖析一、tomcat和jetty的區(qū)別1.相同點(diǎn): Tomcat和Jetty都是一種Servlet引擎,他們都支持標(biāo)準(zhǔn)的servlet規(guī)范和JavaEE的規(guī)范。2.不同點(diǎn):(1)架構(gòu)方面Jetty的架構(gòu)比Tomcat的更為簡單Jetty的架構(gòu)是基于Handler來實(shí)現(xiàn)的,主要的擴(kuò)展功能都可以用Handler來實(shí)現(xiàn),擴(kuò)展簡單。Tomcat的架構(gòu)是基于容器設(shè)計(jì)的,進(jìn)行擴(kuò)展是需要了解Tomcat的整體設(shè)計(jì)結(jié)構(gòu),不易擴(kuò)展。(2)性能方面Jetty和Tomcat性能方面差異不大Jetty可以同時(shí)處理大量連接而且可以長時(shí)間保持連接,適合于web聊天應(yīng)用等等。Jetty的架構(gòu)簡單,因此作為服務(wù)器,Jetty可以按需加載組件,減少不需要的組件,減少了服務(wù)器內(nèi)存開銷,從而提高服務(wù)器性能。Jetty默認(rèn)采用NIO在處理I/O請求上更占優(yōu)勢,在處理靜態(tài)資源時(shí),性能較高Tomcat適合處理少數(shù)非常繁忙的鏈接,也就是說鏈接生命周期短的話,Tomcat的總體性能更高。Tomcat默認(rèn)采用BIO處理I/O請求,在處理靜態(tài)資源時(shí),性能較差。(3)其它方面Jetty的應(yīng)用更加快速,修改簡單,對新的Servlet規(guī)范的支持較好。Tomcat目前應(yīng)用比較廣泛,對JavaEE和Servlet的支持更加全面,很多特性會直接集成進(jìn)來。所以,相對于tomcat來說,Jetty更輕量級。由于Tomcat除了遵循Java Servlet規(guī)范之外,自身還擴(kuò)展了大量JEE特性以滿足企業(yè)級應(yīng)用的需求,所以Tomcat是較重量級的,而且配置較Jetty亦復(fù)雜許多。但對于大量普通互聯(lián)網(wǎng)應(yīng)用而言,并不需要用到Tomcat其他高級特性,所以在這種情況下,使用Tomcat是很浪費(fèi)資源的。這種劣勢放在分布式環(huán)境下,更是明顯。換成Jetty,每個(gè)應(yīng)用服務(wù)器省下那幾兆內(nèi)存,對于大的分布式環(huán)境則是節(jié)省大量資源。而且,Jetty的輕量級也使其在處理高并發(fā)細(xì)粒度請求的場景下顯得更快速高效。Jetty更靈活,體現(xiàn)在其可插拔性和可擴(kuò)展性,更易于開發(fā)者對Jetty本身進(jìn)行二次開發(fā),定制一個(gè)適合自身需求的Web Server。相比之下,重量級的Tomcat原本便支持過多特性,要對其瘦身的成本遠(yuǎn)大于豐富Jetty的成本。然而,當(dāng)支持大規(guī)模企業(yè)級應(yīng)用時(shí),Jetty也許便需要擴(kuò)展,在這場景下Tomcat便是更優(yōu)的。二、tomcat和resin的區(qū)別1.相同點(diǎn)都是web服務(wù)器,并且支持集群部署。2.不同點(diǎn)(1)速度方面resin的速度要比tomcat快 (2)機(jī)制方面resin的啟動(dòng)與關(guān)閉機(jī)制以及報(bào)錯(cuò)機(jī)制都比tomcat好,tomcat則相對臃腫一些。(3)開發(fā)環(huán)境熱部署支持方面tomcat較好,可根據(jù)需要配置。修改Jsp或java文件時(shí),可配置是否重啟服務(wù)。resin較差,更新class及jsp文件,系統(tǒng)都會自動(dòng)重新部署,并重啟,配置了Session會話時(shí)開發(fā)比較麻煩。(4)生產(chǎn)環(huán)境下熱部署支持tomcat一般。更新配置文件時(shí),必須手動(dòng)重啟。更新其他文件時(shí),大部分不用重啟。但一次性更新太多文件時(shí),經(jīng)常會造成Tomcat重啟失敗。 resin較好。更新配置文件時(shí),Resin會自動(dòng)重啟。 3.常見問題在線上服務(wù)應(yīng)該選擇哪一種WEB服務(wù)器? 4.解決方案根據(jù)它們之間的區(qū)別,選擇適合自己的服務(wù)器。好比Jetty更滿足公有云的分布式環(huán)境,即云環(huán)境的需求,而Tomcat更符合企業(yè)級環(huán)境。 5.編碼實(shí)戰(zhàn)6.擴(kuò)展思考這幾個(gè)服務(wù)器各有優(yōu)缺點(diǎn),那一個(gè)網(wǎng)站部署服務(wù)器時(shí),應(yīng)該怎么選擇才可以保證更加高效的運(yùn)行呢?7.參考文獻(xiàn)文獻(xiàn)一:http://www.cnblogs.com/fengli9998/p/7247559.html文獻(xiàn)二:百度文獻(xiàn)三:http://www.linuxidc.com/Linux/2014-07/104764.htm8.更多討論問:除了這三種web服務(wù)器,還有沒有其他的web服務(wù)器?答:大型的還有IIS、Kangle、WebSphere、WebLogic、Apache、Jboss等,還有一些小型的,像Nginx等。問:現(xiàn)有修真院的官方任務(wù)用哪個(gè)好一點(diǎn)?答:Jetty PPT戳這 感謝大家觀看!今天的分享就到這里啦,歡迎大家點(diǎn)贊、轉(zhuǎn)發(fā)、留言、拍磚~技能樹.IT修真院“我們相信人人都可以成為一個(gè)工程師,現(xiàn)在開始,找個(gè)師兄,帶你入門,掌控自己學(xué)習(xí)的節(jié)奏,學(xué)習(xí)的路上不再迷?!?。這里是技能樹.IT修真院,成千上萬的師兄在這里找到了自己的學(xué)習(xí)路線,學(xué)習(xí)透明化,成長可見化,師兄1對1免費(fèi)指導(dǎo)??靵砼c我一起學(xué)習(xí)吧~我的邀請碼:12190840,或者你可以直接點(diǎn)擊此鏈接:http://www.jnshu.com/login/1/12190840