tomcat與jetty的區別


Jetty和Tomcat為目前全球范圍內最著名的兩款開源的webserver/servlet容器。 
由於它們的實現都遵循Java Servlet規范,一個java Web應用部署於兩款容器的任意一個皆可。 
但選擇哪個更優?也許這得看場景

近期很多人關注Jetty,也許主要是因為GAE放棄了Tomcat而選擇了Jetty。於是,以很直接的想法,Jetty更符合GAE的需求、即雲環境的需求,亦分布式環境的需求。

那Jetty與Tomcat比較,有哪差異呢?

  1. Jetty更輕量級。這是相對Tomcat而言的。 
    由於Tomcat除了遵循Java Servlet規范之外,自身還擴展了大量JEE特性以滿足企業級應用的需求,所以Tomcat是較重量級的,而且配置較Jetty亦復雜許多。但對於大量普通互聯網應用而言,並不需要用到Tomcat其他高級特性,所以在這種情況下,使用Tomcat是很浪費資源的。這種劣勢放在分布式環境下,更是明顯。換成Jetty,每個應用服務器省下那幾兆內存,對於大的分布式環境則是節省大量資源。而且,Jetty的輕量級也使其在處理高並發細粒度請求的場景下顯得更快速高效。

  2. jetty更靈活,體現在其可插拔性和可擴展性,更易於開發者對Jetty本身進行二次開發,定制一個適合自身需求的Web Server。相比之下,重量級的Tomcat原本便支持過多特性,要對其瘦身的成本遠大於豐富Jetty的成本。用自己的理解,即增肥容易減肥難。

  3. 然而,當支持大規模企業級應用時,Jetty也許便需要擴展,在這場景下Tomcat便是更優的。

總結: 
Jetty更滿足公有雲的分布式環境的需求,而Tomcat更符合企業級環境。


GAE放棄了Tomcat,選擇了Jetty,正是因為Jetty的體積和靈活性,Google可以更好地定制一個足夠小的Java Web Server為其GAE服務。 
而Tomcat為滿足更多的企業級需求,增加了JEE特性,在服務企業級應用時,它的支持優於Jetty。然而,即使Tomcat性能略優於Jetty,但對於大多非企業級應用而言,配置復雜體積龐大的Tomcat顯得過於重量級。

正因為這個,實驗室的雲平台實現便是把

    雲平台本身的門戶網站放在Tomcat內,
    而雲台托管的Java Web應該是部署在Jetty內的。

Jetty和tomcat的比較

相同點:

  1. Tomcat和Jetty都是一種Servlet引擎,他們都支持標准的servlet規范和JavaEE的規范。

不同點:

    1. 架構比較 
      Jetty的架構比Tomcat的更為簡單 
      Jetty的架構是基於Handler來實現的,主要的擴展功能都可以用Handler來實現,擴展簡單。 
      Tomcat的架構是基於容器設計的,進行擴展是需要了解Tomcat的整體設計結構,不易擴展。

    2. 性能比較 
      Jetty和Tomcat性能方面差異不大 
      Jetty可以同時處理大量連接而且可以長時間保持連接,適合於web聊天應用等等。 
      Jetty的架構簡單,因此作為服務器,Jetty可以按需加載組件,減少不需要的組件,減少了服務器內存開銷,從而提高服務器性能。 
      Jetty默認采用NIO結束在處理I/O請求上更占優勢,在處理靜態資源時,性能較高

    3. 少數非常繁忙;Tomcat適合處理少數非常繁忙的鏈接,也就是說鏈接生命周期短的話,Tomcat的總體性能更高。 
      Tomcat默認采用BIO處理I/O請求,在處理靜態資源時,性能較差。

    4. 其它比較 
      Jetty的應用更加快速,修改簡單,對新的Servlet規范的支持較好。 
      Tomcat目前應用比較廣泛,對JavaEE和Servlet的支持更加全面,很多特性會直接集成進來。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM