當前位置:才華齋>IT認證>J2EE>

主流JavaEE應用伺服器橫向分析

J2EE 閱讀(1.58W)

J2EE是一套全然不同於傳統應用開發的技術架構,包含許多元件,主要可簡化且規範應用系統的開發與部署,進而提高可移植性、安全與再用價值。下面是小編收集的主流JavaEE應用伺服器橫向分析,希望大家認真閱讀!

主流JavaEE應用伺服器橫向分析

  一、前言

當企業級的Java應用程式需要真正的應用部署時,Java EE應用伺服器是必不可少的工具。研究表明,除了商業的應用伺服器之外,開源的Java EE應用伺服器開始成為很多Java企業級應用的最佳選擇。而JBoss、Tomcat及Apache的Geronimo是其中最主流的開源Java EE應用伺服器。而這三者中,儘管JBoss和Tomcat並非100%的實現了Java EE 5標準,但這二者佔有的市場份額相對比較大。Geronimo是對Java EE 5標準100%的實現,正在快速的發展。如果讀者想在Java EE領域找份像樣的工作,對這三種開源的應用伺服器應該達到比較熟悉的程度,並能在一定程度上進行比較區分。

在本文中,對這三種主流的應用伺服器,就其特性、部署及效能等方面進行比較。分析了他們各自的特色對該應用伺服器的重要性,當然,也提供了一些如何選擇適合專案的伺服器的原則及建議。

  二、特性比較

表1就JBoss 4.2、Tomcat 6及Geronimo 2的特性進行全面的比較。請注意,表中用到的“部分支援”表述,表明該應用伺服器並非完全的支援,需要安裝一些額外包。而其中的“原則上支援”表述,表明該應用伺服器需要第三方的安裝包的支援。注:三種應用伺服器均在Linux、Solaris、Windows及Mac OS X上進行過測試。

當讀者的應用需要比較特殊的擴充套件,或是想與Java EE 5最貼近時,那麼,Geronimo 2是最佳的開源Java EE應用伺服器選擇。儘管JBoss 4.2與Sun的Java EE標準在實現上有一定的出入,但JBoss 4.2 team提供了許多與Java EE標準很符合的技術,同時也擴充了Java EE 5的標準範圍。而Tomcat 6本身就是一種輕量級的解決方案,所以它不併包括Java EE 5的所有特性,或是在JBoss及Geronimo中所提供的特性,但正是由於它的輕量級,才使它對記憶體的佔有量比較少,並且比其它兩種伺服器執行起來更快。

EE 5一致性

Sun公司的Java EE 5標準是一種行業標準,而作為這種標準的實現,開源的Java EE 5應用伺服器應該與其儘量的保持一致,因此Java EE 5的一致性是一個很重要的指標。在這三種開源的實現中,Geronimo是實現得最好,與Java EE 5標準最貼近的應用伺服器。JBoss 4.2支援絕大部分Java EE 5的特性,當然,不久即將釋出的JBoss 5將完全支援Java EE 5的所有特性。而Tomcat一般看成是JSP/servlet的容器,僅僅支援Java應用伺服器的基本特性。

2.支援EJB3

EJB(Enterprise JavaBeans)是指能在Java EE伺服器部署的Java元件。它通常將一些業務功能打包成可重用的元件。新發布的EJB3提供了許多新功能,解決了舊版本中許多問題。JBoss 4.2及Geronimo 2均支援EJB3。Tomcat 6本身並不支援EJB3,但Apache OpenEJB專案可以使Tomcat支援EJB3,據稱Tomcat可以執行一種嵌入式的JBoss EJB3容器

3.支援JSP 2.1/Servlet2.5

對JSP/servlet的支援是絕大部分Java伺服器應提供的最基本功能。JSP2.1和Servlet2.5是Java EE 5對JSP/servlet的升級功能。JBoss 4.2、Geronimo 2及Tomcat 6均支援JSP/servlet這一特性。

4.支援JSF 1.2

JSF(Java Server Faces)是一種在Java EE應用部署的元件式架構。提供基本的Web開發的使用者介面。與請求驅動的MVC(Model-View-Controller)的架構不同的是,JSF 採用了元件驅動的模式。就目前的JSF1.2而言,JBoss 4.2及Geronimo 2都有很好的支援,而執行在Tomcat 6時有不少的問題待解決。

5.支援客戶化外掛

客戶化外掛支援,意味著可以在原有應用伺服器功能的基礎上,開發新的功能,並能很好的協同使用。在JBoss中使用MBeans (managed beans)來處理外掛開發。而Geronimo也採用類似的處理方式,只是名稱不一樣,叫GBeans。這些客戶的Beans為開發及部署客戶資源時,提供一系列統一的介面。

6.支援業務規則引擎

幾乎所有的應用程式都是建立在一系列業務規則之上,或稱之為業務邏輯。而業務規則引擎元件則能幫助管理與簡化業務邏輯程式設計。一般的程式設計過程中,程式設計師最常見的邏輯有如if/then邏輯。而有了業務規則引擎,則可以實現許多更加智慧的業務邏輯。Drools作為一種業內很流行、標準化的業務規則引擎,在JBoss 4.2、Geronimo 2及Tomcat 6中均可得到支援。Geronimo完全支援Drools,而JBoss支援Drools的歷史最久,已達三年之久,並使JBoss/Drools成為了一種非常有市場競爭力的業務規則解決方案。

7.支援Hibernate 3.x

Hibernate為Java程式設計提供了強有力的關係/物件模型(ORM,Object-relational mapping)。Hibernate可以將面向物件的模型對映為關係型資料庫,這對Java開發來說是最有吸引力的。Hibernate作為一種開源的軟體,最早就是由於JBoss的一個團隊所開發(Gavin King)。當然,JBoss 4.2、Geronimo 2及Tomcat 6均支援Hibernate 3。

8.支援JBoss Seam

JBoss Seam是一種著名的應用框架,集成了眾多的Java及Web技術,例如Ajax、JSF、Java Portlets、BPM(Business-process management)等技術。Seam是JBoss的專案,理所當然,JBoss 4.2自然支援它,同樣Geronimo 2也支援JBoss Seam。據JBoss Seam的開發團隊稱,Tomcat可以通過使用JBoss嵌入式EJB 3容器來支援JBoss Seam。

9.支援叢集

叢集通過並行在多臺伺服器運行同樣的服務,從而大大的提高應用的吞吐量,達到所謂的高負荷的效果。由於採用了數臺伺服器同時執行,所以當其中的某臺服務暫時或宕機時,對客戶不會造成服務停止,從而達到業務的可持續。叢集極大的提高了企業級的Java應用的效能、吞吐量等能力。

JBoss 4.2、Geronimo 2及Tomcat 6均以同樣的方式來支援叢集。JBoss在叢集層使用及時複製的方式來達到叢集的目的。而Geronimo所釋出的叢集,還處於測試階段,需要時間的考驗,如果有興趣,可以與Apache基金組織聯絡。

10.支援Eclipse IDE

Eclipse是目前最流行的Java開發工具,自然,與Eclipse的整合是眾多Java EE 5應用伺服器應該提供的功能。JBoss、Geronimo及Tomcat均支援與Eclipse整合。特別地,JBoss還有自己的Eclipse版本,稱為Red Hat Developer Studio,目前正處於測試的階段。利用Geronimo提供的工具,可以省去手工配置XML檔案的煩瑣。同時,資料庫連線池工具都可以自動的下載所需要的資料庫連線驅動。

三、部署

這三種應用伺服器的安裝均十分簡單。在相關的網站上下載zip或tar包進行解壓,唯一需要配置的`是設定JAVA_HOME環境變數(不過一般均有配置)。注意,在Linux/Unix系統下,需要先發送chmod命令。

nimo

對Geronimo 2來說,進行配置及部署Java應用程式非常的簡單,特別是通過它提供的Web控制檯更加簡單。Geronimo控制提供了許多簡單的功能來幫助開發人員進行應用程式的配置。可以進行資料庫的連線池測試及安全設定或配置等。

s

JBoss 4.2有非常漂亮的Web管理控制檯,但它所提供的管理功能及特性與Geronimo不盡相同。首先看到的是JBoss的狀態及其監測資訊,但並沒有提供部署功能。而部署Java應用時,只需要將它複製到default/deploy資料夾下面,JBoss會自動的檢測到它並進行相關的快速部署。當然,也可以通過修改配置來進行客戶應用程式所在目錄的對映。

at

Tomcat 6不愧為一款快速的輕量級的應用伺服器。它的控制檯提供了基本的部署功能。可以通過Tomcat的控制檯進行服務的啟動/停止及WAR包的deploy/undeploy操作。當然也提供了Tomcat的執行狀態及監測資訊,同時有很好的使用者授權系統。

  四、效能

就可靠性而言,效能應該是所以的應用伺服器所應該提供的最重要的特性。在本文中,筆者做了一個小實驗,使用JSP頁面及編譯好的servlet 來測試應用伺服器所能處理的使用者會話個數以及所能連線的使用者數量。當然,實際的Java應用是更加複雜的,而本實驗中的JSP頁面及servlet是比較簡單的,主要用於測試Web應用伺服器的穩定性、可靠性及速度。

使用的測試機器為:雙核-64位 CPU,4G的記憶體,在實驗中,讓第一種應用伺服器執行到1200000個會話。當然,這些會話不併是同時連線。

測試所用的程式碼量只有區區的幾百行,為了準確起見,筆者對三種伺服器使用了相同之處的配置。當然,如果採用實際的Java應用程式來測試時,所得到的資料結果圖會有一定的出入,但大概的趨勢會一致。

JBoss 4.2的表現不如Geronimo2,畢竟Geronimo 2所採用的實現技術及思想都是最新的。正如圖所示,Tomcat 6的效能最好,因為Tomcat 6本身就是為JSP/servlet量身定做的Java EE 5應用伺服器。相比起JBoos或Geronimo需要20秒進行啟動的長時間,Tomcat僅僅需要3秒鐘。

  五、小結

在本文中,筆者比較了主流的Java EE應用伺服器的特性、部署及效能方面的內容,特性方面的比較應該有利於讀者選擇更加適合自己專案的Java EE應用伺服器,做到有目的性的選擇伺服器,從而達到適合的效果。

同時,筆者測試比較了商用或開源的Java應用伺服器,發現商業的Java應用伺服器不一定比開源的好,反而在商業的應用伺服器(如Sun的Java應用伺服器或BEA的WebLogic)中的Bug比開源的的應用伺服器更多些。

JBoss、Geronimo及Tomcat是快速可靠的可用於處理部署大規模的Java企業級應用的伺服器。特別值得一提的是,很多的高效能Java伺服器技術都是從這些開源的應用伺服器中總結與借鑑過來,而不是從那些商業的應用伺服器中發展而來。