【基礎概念】 Tomcat與Jetty區別

一、簡介

    Tomcat:

        TomcatApache軟件基金會(Apache Software Foundation)的Jakarta項目中的一個核心項目,由ApacheSun和其他一些公司及個人共同開發而成。由於有了Sun的參與和支持,最新的ServletJSP規範總是能在Tomcat中得到體現,Tomcat 5支持最新的Servlet 2.4JSP 2.0規範。因爲Tomcat技術先進、性能穩定,而且免費,因而深受Java愛好者的喜愛並得到了部分軟件開發商的認可,成爲目前比較流行的Web應用服務器。

    Jetty:

        Jetty 是一個開源的servlet容器,它爲基於Javaweb容器,例如JSPservlet提供運行環境。Jetty是使用Java語言編寫的,它的API以一組JAR包的形式發佈。開發人員可以將Jetty容器實例化成一個對象,可以迅速爲一些獨立運行(stand-alone)的Java應用提供網絡和web連接。

二、相同點

    TomcatJetty都是一種Servlet引擎,他們都支持標準的servlet規範和JavaEE的規範

二、不同點:

    1. 架構比較

        Jetty架構比Tomcat的更爲簡單

        Jetty的架構是基於Handler來實現的,主要的擴展功能都可以用Handler來實現,擴展簡單。

        Tomcat的架構是基於容器設計的,進行擴展是需要了解Tomcat的整體設計結構,不易擴展。

     2.性能比較

JettyTomcat性能方面差異不大

Jetty可以同時處理大量連接而且可以長時間保持連接,適合於web聊天應用等等。

Jetty的架構簡單,因此作爲服務器,Jetty可以按需加載組件,減少不需要的組件,減少了服務器內存開銷,從而提高服務器性能。

Jetty默認採用NIO結束在處理I/O請求上更佔優勢,在處理靜態資源時,性能較高

Tomcat適合處理少數非常繁忙的鏈接,也就是說鏈接生命週期短的話,Tomcat的總體性能更高。

Tomcat默認採用BIO處理I/O請求,在處理靜態資源時,性能較差。

    3. 其它比較

Jetty的應用更加快速,修改簡單,對新的Servlet規範的支持較好。

Tomcat目前應用比較廣泛,對JavaEEServlet的支持更加全面,很多特性會直接集成進來。

三、按使用場景區分

    1. Jetty更輕量級。這是相對Tomcat而言的。

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

    2. Jetty更靈活。

  體現在其可插拔性和可擴展性,更易於開發者對Jetty本身進行二次開發,定製一個適合自身需求的Web Server

相比之下,重量級的Tomcat原本便支持過多特性,要對其瘦身的成本遠大於豐富Jetty的成本。用自己的理解,即增肥容易減肥難。當支持大規模企業級應用時,Jetty也許便需要擴展,在這場景下Tomcat便是更優的。

四、總結:

    Jetty更滿足公有云的分佈式環境的需求,而Tomcat更符合企業級環境。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章