熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

JBoss、Geronimo及Tomcat比較分析

2013-11-23 20:15:27  來源: Java開源技術 

  在開源的Java應用服務器領域像JBossTomcat及Apache的Geronimo他們不僅僅是商業領域的領跑者同時是技術領域的先行者當然所有的Java EE應用服務器的實現不盡相同但其很多方面具有一定程度的可比性本文對JBossGeronimo 及Tomcat 三種開源的Java EE應用服務器就他們的特性部署及性能等方面進行一一比較
        前言
當企業級的Java應用程序需要真正的應用部署時Java EE應用服務器是必不可少的工具研究表明除了商業的應用服務器之外開源的Java EE應用服務器開始成為很多Java企業級應用的最佳選擇而JBossTomcat及Apache的Geronimo是其中最主流的開源Java EE應用服務器而這三者中盡管JBoss和Tomcat並非%的實現了Java EE 標准但這二者占有的市場份額相對比較大Geronimo是對Java EE 標准%的實現正在快速的發展如果讀者想在Java EE領域找份像樣的工作對這三種開源的應用服務器應該達到比較熟悉的程度並能在一定程度上進行比較區分
在本文中對這三種主流的應用服務器就其特性部署及性能等方面進行比較分析了他們各自的特色對該應用服務器的重要性當然也提供了一些如何選擇適合項目的服務器的原則及建議

          特性比較
就JBoss Tomcat 及Geronimo 的特性進行全面的比較請注意表中用到的部分支持表述表明該應用服務器並非完全的支持需要安裝一些額外包而其中的原則上支持表述表明該應用服務器需要第三方的安裝包的支持三種應用服務器均在LinuxSolarisWindows及Mac OS X上進行過測試
Java EE應用服務器特性比較


 

特性
JBoss
Geronimo
Tomcat
Java EE 一致性
部分支持
完全支持
部分支持
支持EJB
支持
支持
原則上支持
JSP和Servlet
支持
支持
支持
JSF
支持
支持
原則上支持
客戶化插件
支持
支持
不支持
業務規則引擎
原則上支持
原則上支持
原則上支持
Hibernatex
支持
原則上支持
原則上支持
集群
支持
支持
部分支持
Eclipse IDE
支持
支持
支持
 
當讀者的應用需要比較特殊的擴展或是想與Java EE 最貼近時那麼Geronimo 是最佳的開源Java EE應用服務器選擇盡管JBoss 與Sun的Java EE標准在實現上有一定的出入但JBoss team提供了許多與Java EE標准很符合的技術同時也擴充了Java EE 的標准范圍而Tomcat 本身就是一種輕量級的解決方案所以它不並包括Java EE 的所有特性或是在JBoss及Geronimo中所提供的特性但正是由於它的輕量級才使它對內存的占有量比較少並且比其它兩種服務器運行起來更快
.Java EE 一致性
Sun公司的Java EE 標准是一種行業標准而作為這種標准的實現開源的Java EE 應用服務器應該與其盡量的保持一致因此Java EE 的一致性是一個很重要的指標在這三種開源的實現中Geronimo是實現得最好與Java EE 標准最貼近的應用服務器JBoss 支持絕大部分Java EE 的特性當然不久即將發布的JBoss 將完全支持Java EE 的所有特性而Tomcat一般看成是JSP/servlet的容器僅僅支持Java應用服務器的基本特性

  .支持EJB
EJB(Enterprise JavaBeans)是指能在Java EE服務器部署的Java組件它通常將一些業務功能打包成可重用的組件新發布的EJB提供了許多新功能解決了舊版本中許多問題JBoss 及Geronimo 均支持EJBTomcat 本身並不支持EJB但Apache OpenEJB項目可以使Tomcat支持EJB據稱Tomcat可以運行一種嵌入式的JBoss EJB容器

  .支持JSP /Servlet
對JSP/servlet的支持是絕大部分Java服務器應提供的最基本功能JSP和Servlet是Java EE 對JSP/servlet的升級功能JBoss Geronimo 及Tomcat 均支持JSP/servlet這一特性

  .支持JSF
JSF(Java Server Faces)是一種在Java EE應用部署的組件式架構提供基本的Web開發的用戶界面與請求驅動的MVC(ModelViewController)的架構不同的是JSF采用了組件驅動的模式就目前的JSF而言JBoss 及Geronimo 都有很好的支持而運行在Tomcat 時有不少的問題待解決

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

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

  .支持Hibernate x
Hibernate為Java編程提供了強有力的關系/對象模型(ORMObjectrelational mapping)Hibernate可以將面向對象的模型映射為關系型數據庫這對Java開發來說是最有吸引力的Hibernate作為一種開源的軟件最早就是由於JBoss的一個團隊所開發(Gavin King)當然JBoss Geronimo 及Tomcat 均支持Hibernate

  .支持JBoss Seam
JBoss Seam是一種著名的應用框架集成了眾多的Java及Web技術例如AjaxJSFJava PortletsBPM(Businessprocess management)等技術Seam是JBoss的項目理所當然JBoss 自然支持它同樣Geronimo 也支持JBoss Seam據JBoss Seam的開發團隊稱Tomcat可以通過使用JBoss嵌入式EJB 容器來支持JBoss Seam

  .支持集群
集群通過並行在多台服務器運行同樣的服務從而大大的提高應用的吞吐量達到所謂的高負荷的效果由於采用了數台服務器同時運行所以當其中的某台服務暫時或死機時對客戶不會造成服務停止從而達到業務的可持續集群極大的提高了企業級的Java應用的性能吞吐量等能力
JBoss Geronimo 及Tomcat 均以同樣的方式來支持集群JBoss在集群層使用及時復制的方式來達到集群的目的而Geronimo所發布的集群還處於測試階段需要時間的考驗如果有興趣可以與Apache基金組織聯系

  .              支持Eclipse IDE
Eclipse是目前最流行的Java開發工具自然與Eclipse的集成是眾多Java EE 應用服務器應該提供的功能JBossGeronimo及Tomcat均支持與Eclipse整合特別地JBoss還有自己的Eclipse版本稱為Red Hat Developer Studio目前正處於測試的階段利用Geronimo提供的工具可以省去手工配置XML文件的煩瑣同時數據庫連接池工具都可以自動的下載所需要的數據庫連接驅動

          部署
這三種應用服務器的安裝均十分簡單在相關的網站上下載zip或tar包進行解壓唯一需要配置的是設置JAVA_HOME環境變量(不過一般均有配置)注意在Linux/Unix系統下需要先發送chmod命令
.Geronimo
對Geronimo 來說進行配置及部署Java應用程序非常的簡單特別是通過它提供的Web控制台更加簡單Geronimo控制提供了許多簡單的功能來幫助開發人員進行應用程序的配置可以進行數據庫的連接池測試及安全設置或配置等

  

  圖Geronimo控制台

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

  

  圖JBoss控制台
Tomcat
Tomcat 不愧為一款快速的輕量級的應用服務器它的控制台提供了基本的部署功能可以通過Tomcat的控制台進行服務的啟動/停止及WAR包的deploy/undeploy操作當然也提供了Tomcat的運行狀態及監測信息同時有很好的用戶授權系統

  

  圖Tomcat控制台

          性能
就可靠性而言性能應該是所以的應用服務器所應該提供的最重要的特性在本文中筆者做了一個小實驗使用JSP頁面及編譯好的servlet來測試應用服務器所能處理的用戶會話個數以及所能連接的用戶數量當然實際的Java應用是更加復雜的而本實驗中的JSP頁面及servlet是比較簡單的主要用於測試Web應用服務器的穩定性可靠性及速度
使用的測試機器為雙核位 CPUG的內存在實驗中讓第一種應用服務器運行到個會話當然這些會話不並是同時連接

  

  圖多Session測試JSP頁面結果

  

  圖多Session測試servlet結果
測試所用的代碼量只有區區的幾百行為了准確起見筆者對三種服務器使用了相同之處的配置當然如果采用實際的Java應用程序來測試時所得到的數據結果圖會有一定的出入但大概的趨勢會一致
JBoss 的表現不如Geronimo畢竟Geronimo 所采用的實現技術及思想都是最新的正如圖所示Tomcat 的性能最好因為Tomcat 本身就是為JSP/servlet量身定做的Java EE 應用服務器相比起JBoos或Geronimo需要秒進行啟動的長時間Tomcat僅僅需要秒鐘
        小結
在本文中筆者比較了主流的Java EE應用服務器的特性部署及性能方面的內容特性方面的比較應該有利於讀者選擇更加適合自己項目的Java EE應用服務器做到有目的性的選擇服務器從而達到適合的效果
同時筆者測試比較了商用或開源的Java應用服務器發現商業的Java應用服務器不一定比開源的好反而在商業的應用服務器(如Sun的Java應用服務器或BEA的WebLogic)中的Bug比開源的的應用服務器更多些
JBossGeronimo及Tomcat是快速可靠的可用於處理部署大規模的Java企業級應用的服務器特別值得一提的是很多的高性能Java服務器技術都是從這些開源的應用服務器中總結與借鑒過來而不是從那些商業的應用服務器中發展而來


From:http://tw.wingwit.com/Article/program/Java/ky/201311/28190.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.