Tomcat與Jetty區別
一、簡介
Tomcat:
Tomcat是Apache軟體基金會(Apache Software Foundation)的Jakarta專案中的一個核心專案,由Apache、Sun和其他一些公司及個人共同開發而成。由於有了Sun的參與和支援,最新的Servlet和JSP規範總是能在Tomcat中得到體現,Tomcat 5支援最新的Servlet 2.4和JSP 2.0規範。因為Tomcat技術先進、效能穩定,而且免費,因而深受Java愛好者的喜愛並得到了部分軟體開發商的認可,成為目前比較流行的Web應用伺服器。
Jetty:
Jetty 是一個開源的
二、相同點:
Tomcat和Jetty都是一種Servlet引擎,他們都支援標準的servlet規範和JavaEE的規範。
二、不同點:
1. 架構比較
Jetty的架構比Tomcat的更為簡單
Jetty的架構是基於Handler來實現的,主要的擴充套件功能都可以用
Tomcat的架構是基於容器設計的,進行擴充套件是需要了解Tomcat的整體設計結構,不易擴充套件。
2.效能比較
Jetty和Tomcat效能方面差異不大
Jetty可以同時處理大量連線而且可以長時間保持連線,適合於web聊天應用等等。
Jetty的架構簡單,因此作為伺服器,Jetty可以按需載入元件,減少不需要的元件,減少了伺服器記憶體開銷,從而提高伺服器效能。
Jetty預設採用NIO結束在處理I/O請求上更佔優勢,在處理靜態資源時,效能較高
Tomcat適合處理少數非常繁忙的連結,也就是說連結生命週期短的話,Tomcat
Tomcat預設採用BIO處理I/O請求,在處理靜態資源時,效能較差。
3. 其它比較
Jetty的應用更加快速,修改簡單,對新的Servlet規範的支援較好。
Tomcat目前應用比較廣泛,對JavaEE和Servlet的支援更加全面,很多特性會直接整合進來。
三、按使用場景區分
1. Jetty更輕量級。這是相對Tomcat而言的。
由於Tomcat除了遵循Java Servlet規範之外,自身還擴充套件了大量JEE特性以滿足企業級應用的需求,所以Tomcat是較重量級的,而且配置較Jetty亦複雜許多。但對於大量普通網際網路應用而言,並不需要用到Tomcat其他高階特性,所以在這種情況下,使用Tomcat是很浪費資源的。這種劣勢放在分散式環境下,更是明顯。換成Jetty,每個應用伺服器省下那幾兆記憶體,對於大的分散式環境則是節省大量資源。而且,Jetty的輕量級也使其在處理高併發細粒度請求的場景下顯得更快速高效。
2. Jetty更靈活。
體現在其可插拔性和可擴充套件性,更易於開發者對Jetty本身進行二次開發,定製一個適合自身需求的Web Server。
相比之下,重量級的Tomcat原本便支援過多特性,要對其瘦身的成本遠大於豐富Jetty的成本。用自己的理解,即增肥容易減肥難。當支援大規模企業級應用時,Jetty也許便需要擴充套件,在這場景下Tomcat便是更優的。
四、總結:
Jetty更滿足公有云的分散式環境的需求,而Tomcat更符合企業級環境。