?????做任何web項目,都離不開服務器,有錢的公司用WebSphere、WebLogic,沒錢公司用nginx+tomcat,不要小瞧nginx+tomcat麻雀雖小,五臟俱全。
?????服務器的知識,在筆試、面試中會經常被問到,對于一個合格的程序員,在豐富自己的編程知識外,也要盡可能多的了解開發相關的知識來豐富自己。
?????對于一個菜鳥的我來說,僅用過tomcat和Apache。而我在實際開發工作中,僅關注代碼一層,對于服務器的部署和調優知之甚少。因此,最近搜集了市面上常用的5中J2EE應用服務器(Tomcat僅能稱得上是Servlet容器)的相關信息,不求研究得有多深入,但也略知一二。下面來總結一下Tomcat、JBOSS、WebSphere、WebLogic、Apache這五種應用服務器的優缺點。
?????J2ee開發主要是瀏覽器和服務器進行交互的一種結構.邏輯都是在后臺進行處理,然后再把結果傳輸回給瀏覽器。可以看出服務器在這種架構是非常重要的。
?????Tomcat:應用也算非常廣泛的web服務器,支持部分j2ee,免費,出自apache基金組織,支持Servlet、jsp。
?
?????JBoss:開源的應用服務器,比較受人喜愛,免費(文檔要收費)???
?????Weblogic與Websphere:應該說算是業界第一的app??server,全部支持j2ee1.4,??對于開發者,有免費使用一年的許可證。
?????Apache:全球應用最廣泛的http服務器,免費,出自apache基金組織,可以作為web服務器使用。不過只支持靜態網頁,如(asp,php,cgi,jsp)等動態網頁無法支持。??
?????Tomcat、JBOSS、WebSphere、WebLogic、Apache,都是web服務器,有什么區別和聯系呢?
????(一)Tomcat
?????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還具有如下六大優點:?
????1、JBoss是免費的,開放源代碼J2EE的實現,它通過LGPL許可證進行發布。?
????2、JBoss需要的內存和硬盤空間比較小。?
????3、安裝非常簡單。先解壓縮JBoss打包文件再配置一些環境變量就可以了。?
????4、JBoss能夠"熱部署",部署BEAN只是簡單拷貝BEAN的JAR文件到部署路徑下就可以了。如果沒有加載就加載它;如果已經加載了就卸載掉,然后LOAD這個新的。
?
????5、JBoss與Web服務器在同一個Java虛擬機中運行,Servlet調用EJB不經過網絡,從而大大提高運行效率,提升安全性能。?
????6、用戶可以直接實施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
版權聲明:本文為作者原創文章,轉載請附上博文鏈接!
內容解析By:CSDN,CNBLOG博客文章一鍵轉載插件