淺析Tomcat、JBOSS、WebSphere、WebLogic、Apache

作任何web項目,都離不開服務器,有錢的公司用WebSphere、WebLogic,沒錢公司用nginx+tomcat,不要小瞧nginx+tomcat麻雀雖小,五臟俱全。php

      服務器的知識,在筆試、面試中會常常被問到,對於一個合格的程序員,在豐富本身的編程知識外,也要儘量多的瞭解開發相關的知識來豐富本身。java

      對於一個菜鳥的我來講,僅用過tomcat和Apache。而我在實際開發工做中,僅關注代碼一層,對於服務器的部署和調優知之甚少。所以,最近蒐集了市面上經常使用的5中J2EE應用服務器(Tomcat僅能稱得上是Servlet容器)的相關信息,不求研究得有多深刻,但也略知一二。下面來總結一下Tomcat、JBOSS、WebSphere、WebLogic、Apache這五種應用服務器的優缺點。nginx

      J2ee開發主要是瀏覽器和服務器進行交互的一種結構.邏輯都是在後臺進行處理,而後再把結果傳輸回給瀏覽器。能夠看出服務器在這種架構是很是重要的。程序員

      Tomcat:應用也算很是普遍的web服務器,支持部分j2ee,免費,出自apache基金組織,支持Servlet、jsp。 
      JBoss:開源的應用服務器,比較受人喜好,免費(文檔要收費)   
      Weblogic與Websphere:應該說算是業界第一的app  server,所有支持j2ee1.4,  對於開發者,有無償使用一年的許可證。web

      Apache:全球應用最普遍的http服務器,免費,出自apache基金組織,能夠做爲web服務器使用。不過只支持靜態網頁,如(asp,php,cgi,jsp)等動態網頁沒法支持。  面試

      Tomcat、JBOSS、WebSphere、WebLogic、Apache,都是web服務器,有什麼區別和聯繫呢?數據庫

    (一)Tomcatapache

Tomcat服務器是一個免費的開源的Web應用服務器,是Apache軟件基金會的Jakarta項目中的一個核心項目,由Apache、Sun和其餘一些公司及我的共同開發而成。因爲有了Sun的參與和支持,最新的Servlet和JSP規範老是能在Tomcat中獲得體現,Tomcat 5支持最新的Servlet2.4和JSP 2.0規範。由於Tomcat技術先進、性能穩定,運行時佔用的系統資源小,擴展性好,支持負載平衡與郵件服務等開發應用系統經常使用的功能;並且很重要的是她免費,於是深受Java愛好者的喜好並獲得了部分軟件開發商的承認,成爲目前比較流行的Web應用服務器。並且因爲開源,它還在不斷的改進和完善中,任何一個感興趣的程序員均可以更改它或在其中加入新的功能。
      Tomcat 很受廣大程序員的喜歡,由於它運行時佔用的系統資源小,擴展性好,支持負載平衡與郵件服務等開發應用系統經常使用的功能;並且它還在不斷的改進和完善中,任何一個感興趣的程序員均可以更改它或在其中加入新的功能。 
      Tomcat 是一個小型的輕量級應用服務器,在中小型系統和併發訪問用戶不是不少的場合下被廣泛使用,是開發和調試JSP 程序的首選。對於一個初學者來講,能夠這樣認爲,當在一臺機器上配置好Apache 服務器,可利用它響應對HTML 頁面的訪問請求。實際上Tomcat 部分是Apache 服務器的擴展,但它是獨立運行的,因此當你運行tomcat 時,它實際上做爲一個與Apache 獨立的進程單獨運行的。 
      當配置正確時,Apache 爲HTML頁面服務,而Tomcat 實際上運行JSP 頁面和Servlet。另外,Tomcat和IIS、Apache等Web服務器同樣,具備處理HTML頁面的功能,另外它仍是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的默認模式。不過,Tomcat處理靜態HTML的能力不如Apache服務器。 
      Tomcat 最新版本是4.0x.4.0x與3.x的架構不一樣,而是從新設計的。Tomcat4.0x中採用了新的Servlet容器:Catalina,完整的實現了Servlet2.3和Jsp1.2規範。因爲Java的跨平臺特性,基於Java的Tomcat也具備跨平臺性。 
      與傳統的桌面應用程序不一樣,Tomcat中的應用程序是一個WAR(Web Archive)文件。WAR是Sun提出的一種Web應用程序格式,與JAR相似,也是許多文件的一個壓縮包。這個包中的文件按必定目錄結構來組織:一般其根目錄下包含有Html和Jsp文件或者包含這兩種文件的目錄,另外還會有一個WEB-INF目錄,這個目錄很重要。一般在WEB-INF目錄下有一個web.xml文件和一個classes目錄,web.xml是這個應用的配置文件,而classes目錄下則包含編譯好的Servlet類和Jsp或Servlet所依賴的其它類(如JavaBean)。一般這些所依賴的類也能夠打包成JAR放到WEB-INF下的lib目錄下,固然也能夠放到系統的CLASSPATH中,但那樣移植和管理起來不方便。 
     在Tomcat中,應用程序的部署很簡單,你只需將你的WAR放到Tomcat的webapp目錄下,Tomcat會自動檢測到這個文件,並將其解壓。你在瀏覽器中訪問這個應用的Jsp時,一般第一次會很慢,由於Tomcat要將Jsp轉化爲Servlet文件,而後編譯。編譯之後,訪問將會很快。編程

     Tomcat不只僅是一個Servlet容器,它也具備傳統的Web服務器的功能:處理Html頁面。可是與Apache相比,它的處理靜態Html的能力就不如Apache.咱們能夠將Tomcat和Apache集成到一塊,讓Apache處理靜態Html,而Tomcat處理Jsp和Servlet.這種集成只須要修改一下Apache和Tomcat的配置文件便可。 
     在Tomcat4中,你還能夠利用Servlet2.3提供的事件監聽器功能,來對你的應用或者Session實行監聽。Tomcat也提供其它的一些特徵,如與SSL集成到一塊,實現安全傳輸。還有Tomcat也提供JNDI支持,這與那些J2EE應用服務器提供的是一致的。瀏覽器

    (二)JBoss

     一個基於J2EE的開放源代碼的應用服務器。由於JBoss代碼遵循LGPL許可,你能夠在任何商業應用中無償使用它,而不用支付費用。JBoss支持EJB 1.1和EJB 2.0 EJB3.0的規範,它是一個管理EJB的容器和服務器。相似於Sun'sJ2SDK Enterprise Edition(J2EE),JBoss的目標是一個源代碼開放的J2EE環境。可是JBoss核心服務僅是提供EJB服務器。JBoss不包括serverlers/JSPpage的WEB容器,固然能夠和Tomcat或Jetty綁定使用。 
JBoss還具備以下六大優勢: 
一、JBoss是免費的,開放源代碼J2EE的實現,它經過LGPL許可證進行發佈。 
二、JBoss須要的內存和硬盤空間比較小。 
三、安裝很是簡單。先解壓縮JBoss打包文件再配置一些環境變量就能夠了。 
四、JBoss可以"熱部署",部署BEAN只是簡單拷貝BEAN的JAR文件到部署路徑下就能夠了。若是沒有加載就加載它;若是已經加載了就卸載掉,而後LOAD這個新的。 
五、JBoss與Web服務器在同一個Java虛擬機中運行,Servlet調用EJB不通過網絡,從而大大提升運行效率,提高安全性能。 
六、用戶能夠直接實施J2EE-EAR,而不是之前分別實施EJB-JAR和Web-WAR,很是方便。 

    (三) WebLogic

     WebLogic是美國bea公司(目前被Oracle收購)出品的一個application server,確切的說是一個基於Javaee架構的中間件,純java開發的,最新版本WebLogic Server 9.0是迄今爲止發佈的最卓越的BEA應用服務器。BEAWebLogic是用於開發、集成、部署和管理大型分佈式Web應用、網絡應用和數據庫應用的Java應用服務器。將Java的動態功能和JavaEnterprise標準的安全性引入大型網絡應用的開發、集成、部署和管理之中。徹底遵循J2EE 1.4規範。目前weblogic在世界application server市場上佔有最大的份額
     BEAWebLogic是用於開發、集成、部署和管理大型分佈式Web應用、網絡應用和數據庫應用的Java應用服務器。將Java的動態功能和JavaEnterprise標準的安全性引入大型網絡應用的開發、集成、部署和管理之中。 
     BEAWebLogic Server擁有處理關鍵Web應用系統問題所需的性能、可擴展性和高可用性。 
     與BEA WebLogic Commerce ServerTM配合使用, BEA WebLogic Server可爲部署適應性個性化電子商務應用系統提供完善的解決方案。 
     BEA WebLogic Server具備開發和部署關鍵任務電子商務Web應用系統所需的多種特點和優點,包括: 
1)領先的標準 
    對業內多種標準的全面支持,包括EJB、JSB、JMS、JDBC、XML和WML,使Web應用系統的實施更爲簡單,而且保護了投資,同時也使基於標準的解決方案的開發更加簡便。 
2)無限的可擴展性 
    BEA WebLogic Server以其高擴展的架構體系聞名於業內,包括客戶機鏈接的共享、資源pooling以及動態網頁和EJB組件羣集。 
3)快速開發 
    憑藉對EJB和JSP的支持,以及BEA WebLogic Server 的Servlet組件架構體系,可加速投放市場速度。這些開放性標準與WebGain Studio配合時,可簡化開發,並可發揮已有的技能,迅速部署應用系統。 
4)部署更趨靈活 
    BEA WebLogic Server的特色是與領先數據庫、操做系統和Web服務器緊密集成。 
5)關鍵任務可靠性 
    其容錯、系統管理和安全性能已經在全球數以千記的關鍵任務環境中得以驗證。 
6)體系結構 
    BEA WebLogic Server是專門爲企業電子商務應用系統開發的。企業電子商務應用系統須要快速開發,並要求服務器端組件具備良好的靈活性和安全性,同時還要支持關鍵任務所必需的擴展、性能、和高可用性。BEA WebLogic Server簡化了可移植及可擴展的應用系統的開發,併爲其它應用系統和系統提供了豐富的互操做性。 
    憑藉其出色的羣集技術,BEA WebLogic Server擁有最高水平的可擴展性和可用性。BEAWebLogic Server既實現了網頁羣集,也實現了EJB組件羣集,並且不須要任何專門的硬件或操做系統支持。網頁羣集能夠實現透明的複製、負載平衡以及表示內容容錯,如Web購物車;組件羣集則處理複雜的複製、負載平衡和EJB組件容錯,以及狀態對象(如EJB實體)的恢復

     (四) WebSphere

     WebSphere是 IBM的集成軟件平臺。它包含了編寫、運行和監視全天候的工業強度的隨需應變 Web應用程序和跨平臺、跨產品解決方案所須要的整個中間件基礎設施,如服務器、服務和工具。WebSphere提供了可靠、靈活和健壯的集成軟件。(太貴了,瞭解很少)

    (五)Apache

     Apache是世界使用排名第一的Web服務器軟件。它能夠運行在幾乎全部普遍使用的計算機平臺上,因爲其跨平臺和安全性被普遍使用,是最流行的Web服務器端軟件之一。在Apache基金會裏面Apache Server永遠會被賦予最大的支持。

    Apache支持靜態頁,Tomcat支持動態的,好比Servlet等,通常使用Apache+Tomcat的話,Apache只是做爲一個轉發,對JSP的處理是由Tomcat來處理的。

    Apache能夠支持PHPcgiperl,可是要使用Java的話,你須要Tomcat在Apache後臺支撐,將Java請求由Apache轉發給Tomcat處理。

     Apache是Web服務器,Tomcat是應用(Java)服務器,它只是一個Servlet(JSP也翻譯成Servlet)容器,能夠認爲是Apache的擴展,可是能夠獨立於Apache運行。

     Apache是專門用了提供HTTP服務的,以及相關配置的(例如虛擬主機、URL轉發等等)

     Tomcat是Apache組織在符合Java EE的JSP、Servlet標準下開發的一個JSP服務器.

     Apache是一個Web服務器環境程序,啓用他能夠做爲Web服務器使用,不過只支持靜態網頁如(ASP,PHP,CGI,JSP)等動態網頁的就不行。

     若是要在Apache環境下運行jsp的話就須要一個解釋器來執行jsp網頁,而這個jsp解釋器就是Tomcat, 爲何還要JDK呢?由於jsp須要鏈接數據庫的話,就要jdk來提供鏈接數據庫的驅程,因此要運行jsp的web服務器平臺就須要Apache+tomcat+JDK。整合的好處是:

    ◆若是客戶端請求的是靜態頁面,則只須要Apache服務器響應請求。

    ◆若是客戶端請求動態頁面,則是Tomcat服務器響應請求。

    ◆由於JSP是服務器端解釋代碼的,這樣整合就能夠減小Tomcat的服務開銷。

    Apache:側重於HTTPServer

    Tomcat:側重於Servlet引擎,若是以Standalone方式運行,功能上與Apache等效,支持JSP,但對靜態網頁不太理想;

    Apache是Web服務器,Tomcat是應用(Java)服務器,它只是一個Servlet(JSP也翻譯成Servlet)容器,能夠認爲是Apache的擴展,可是能夠獨立於Apache運行。

    換句話說,Apache是一輛卡車,上面能夠裝一些東西如Html等。可是不能裝水,要裝水必需要有容器(桶),而這個桶也能夠不放在卡車上。

 

 

     Apache+Tomcat整合的好處是: 

 

    1)若是客戶端請求的是靜態頁面,則只須要Apache服務器響應請求;若是客戶端請求的是動態頁面,則讓Tomcat服務器響應請求 
    2)Apache的特色是簡單、速度快、性能穩定,並可作代理服務器來使用。原本它只用於小型或試驗Internet網絡,後來逐步擴充到各類Unix系統中,尤爲對Linux的支持至關完美。Apache有多種產品,能夠支持SSL技術,支持多個虛擬主機。Apache是以進程爲基礎的結構,進程要比線程消耗更多的系統開支,不太適合於多處理器環境,所以,在一個Apache Web站點擴容時,一般是增長服務器或擴充羣集節點而不是增長處理器。Apache成功之處主要在於它的源代碼開放、有一支開放的開發隊伍、支持跨平臺的應用(能夠運行在幾乎全部的Unix、Windows、Linux系統平臺上)以及它的可移植性等方面。 
  幾乎全部的Linux發佈都安裝Apache做爲默認配置。SuSE7.1甚至預安裝有包括各類高級模塊選項的Apache,如PHP3,mod_perl和LDAP等等。用戶會驚奇地發現系統安裝成功就會有一個功能強大的Web服務器可供選擇。雖然安裝Apache並非很是簡單,可是若是有具備新的特性或安全補丁的Apache發佈,則下載源代碼包並編譯新的Apache是值得的。 
Apache不但具備龐大的用戶羣基礎,而且有豐富的配置使用文檔。Apache提供服務器端對腳本技術的支持,好比Perl、PHP等,Apache結合使用Apache JServ能夠實現對Java servlets及JSP的支持。Apache的不少模塊實現安全方面的防禦:如mod_auth提供對對服務器上數據進行適當的保護,而SSL模塊則用來保護服務器和客戶端之間的通訊安全。 
  下面咱們再介紹一下Tomcat服務器軟件,Tomcat是Sun和Apache合做作出來的JSPServer,支持Servlet2.2及JSP1.1等版本。筆者建議你們使用Tomcat,並且Tomcat將來將會取代JServ,成爲Apache主要的Servlet&JSPEngine。Tomcat在設計上是以獨立的Server執行,而不像Jserv是附在Apache中,這樣就更能夠發揮在servlet中,非HttpServlet的能力。Tomcat是Java程序,因此只要有JDK就可使用,不須要考慮操做系統平臺。 

     相同點:

     五個服務器都是基於java的基礎架構來知足實時處理需求,不一樣的版本與jdk版本兼容和有所不一樣;由於都是要和前臺交互,因此他們都基於sun公司的servlet來實現的。

     不一樣點:

     1.應用服務器提供更多的J2EE特徵,如EJB,JMS,JAAS等,同時也支持Jsp和Servlet.而Tomcat則功能沒有那麼強大,它不提供EJB等支持。但若是與JBoss(一個開源的應用服務器)集成到一塊,則能夠實現J2EE的所有功能。

     2.事實上,咱們的不少中小應用不須要採用EJB等技術,Jsp和Servlet已經足夠,這時若是用應用服務器就有些浪費了。而Tomcat短小精悍,配置方便,能知足咱們的需求,這種狀況下咱們天然會選擇Tomcat. 

     3.Tomcat也能夠與其它一些軟件集成起來實現更多的功能。如與上面提到的JBoss集成起來開發EJB,與Cocoon(Apache的另一個項目)集成起來開發基於Xml的應用,與OpenJMS集成起來開發JMS應用
     4.價位不一樣:

     JBoss與Tomcat的是免費的。

     5.開源性不一樣:

     JBoss與Tomcat的是徹底開源的,而其餘兩個不是。

     6.對技術的支持:

     Tomcat不支持EJB,JBoss是實現了EJB容器,再集成了Tomcat。

    JBoss和WebLogic、WebSphere都含有Jsp和Servlet容器,也就能夠作web容器。
    JBoss和WebLogic、WebSphere也都包含EJB容器,是完整的J2EE應用服務器。

    WebLogic與WebSphere都是對業內多種標準的全面支持,包括EJB、JSB、JMS、JDBC、XML和WML,使Web應用系統的實施更爲簡單,而且保護了投資,同時也使基於標準的解決方案的開發更加簡便。 

    JBoss是實現了EJB容器,同時內嵌Tomcat,處理靜態頁面Jboss的速度要比較快,能夠做應用服務器。

     7.擴展性的不一樣:

WebLogic和WebSphere都是以其高擴展的架構體系聞名於業內,包括客戶機鏈接的共享、資源 pooling以及動態網頁和EJB組件羣集。

     8.WebLogic更增強大。weblogic是j2ee的應用服務器(application server),包括ejb ,jsp,servlet,jms等等,全能型的。是商業軟件裏排名第一的容器(JSP、servlet、EJB等),並提供其餘如JAVA編輯等工具,是一個綜合的開發及運行環境。

     WebLogic應該是J2EE Container(Web Container + EJB Container + XXX規範)!

     Tomcat只能算Web Container,是官方指定的JSP&Servlet容器。只實現了JSP/Servlet的相關規範,不支持EJB(硬傷啊)!不過Tomcat配合jboss和apache能夠實現j2ee應用服務器功能

       通常來講考慮stucts等架構tomcat就能夠了,但若是考慮EJB的話,WebLogic是比較好的選擇。

     9.用WebLogic運行標準的java可能並非最好的方式,WebLogic裏支持他本身的一些東西,這些東西雖然是在純java基礎上開發的,但其餘工具裏都沒有。WebLogicServer憑藉其出色的羣集技術,擁有處理關鍵Web應用系統問題所需的性能、可擴展性和高可用性。

     WebLogic Server既實現了網頁羣集,也實現了EJB組件羣集,並且不須要任何專門的硬件或操做系統支持。網頁羣集能夠實現透明的複製、負載平衡以及表示內容容錯。

     不管是網頁羣集,仍是組件羣集,對於電子商務解決方案所要求的可擴展性和可用性都是相當重要的。共享的客戶機/服務器和數據庫鏈接以及數據緩存和EJB都加強了性能表現。這是其它Web應用系統所不具有的

因此,在擴展性方面WebLogic是遠遠超越了Tomcat。

     總之,在功能強大和擴展性和可用性等方面WLS比Tomcat好不少,但這也不能說明WLS適合每一方面,從Tomcat的使用流行度即可以看出,Tomcat雖功能有限,但也很受歡迎。其實關鍵看你要作什麼。

     Tomcat是免費開源的jsp,servlet引擎,入門級別的Web服務器,剛入門的IT人使用Tomcat簡單易上手。並且它一個輕量級應用服務器,最重要的是它免費,因此在中小型系統和併發訪問用戶不是不少的場合下被廣泛使用,是開發和調試JSP程序的首選。Tomcat比較輕巧,消耗資源較少。固然,項目大的時候,WLS確定再合適不過,並且Tomcat也沒法知足太多需求,可是,WLS的費用也是不可小覷的。--------------------- 做者:Alvin家雞鴨魚的小米米 來源:CSDN 原文:https://blog.csdn.net/u013573133/article/details/23379565 版權聲明:本文爲博主原創文章,轉載請附上博文連接!

相關文章
相關標籤/搜索