自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

主流Java EE應用服務器橫向對比分析

開發(fā) 后端 前端
在開源的Java應用服務器領域,像JBoss、Tomcat及Apache的Geronimo,他們不僅僅是商業(yè)領域的領跑者,同時是技術領域的先行者。本文將為大家做一個橫向的比較。

在開源Java應用服務器領域,像JBoss、Tomcat及Apache的Geronimo,他們不僅僅是商業(yè)領域的領跑者,同時是技術領域的先行者。當然,所有的Java EE應用服務器的實現(xiàn)不盡相同,但其很多方面具有一定程度的可比性。本文對JBoss4.2、Geronimo 2及Tomcat 6三種開源的Java EE應用服務器,就他們的特性、部署及性能等方面進行一一比較。

一、前言

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

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

二、特性比較

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

特性
JBoss 4.2
Geronimo 2
Tomcat 6
Java EE 5一致性
部分支持
完全支持
部分支持
支持EJB 3.0
支持
支持
原則上支持
JSP2.1和Servlet2.5
支持
支持
支持
JSF1.2
支持
支持
原則上支持
客戶化插件
支持
支持
不支持
業(yè)務規(guī)則引擎
原則上支持
原則上支持
原則上支持
Hibernate3.x
支持
原則上支持
原則上支持
集群
支持
支持
部分支持
Eclipse IDE
支持
支持
支持
表1.Java EE應用服務器特性比較

當讀者的應用需要比較特殊的擴展,或是想與Java EE 5最貼近時,那么,Geronimo 2是最佳的開源Java EE應用服務器選擇。盡管JBoss 4.2與Sun的Java EE標準在實現(xiàn)上有一定的出入,但JBoss 4.2 team提供了許多與Java EE標準很符合的技術,同時也擴充了Java EE 5的標準范圍。而Tomcat 6本身就是一種輕量級的解決方案,所以它不并包括Java EE 5的所有特性,或是在JBoss及Geronimo中所提供的特性,但正是由于它的輕量級,才使它對內存的占有量比較少,并且比其它兩種服務器運行起來更快。

1.Java EE 5一致性

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

2.支持EJB3

EJB(Enterprise JavaBeans)是指能在Java EE服務器部署的Java組件。它通常將一些業(yè)務功能打包成可重用的組件。新發(fā)布的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開發(fā)的用戶界面。與請求驅動的MVC(Model-View-Controller)的架構不同的是,JSF采用了組件驅動的模式。就目前的JSF1.2而言,JBoss 4.2及Geronimo 2都有很好的支持,而運行在Tomcat 6時有不少的問題待解決。

5.支持客戶化插件

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

6.支持業(yè)務規(guī)則引擎

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

7.支持Hibernate 3.x

Hibernate為Java編程提供了強有力的關系/對象模型(ORM,Object-relational mapping)。Hibernate可以將面向對象的模型映射為關系型數(shù)據庫,這對Java開發(fā)來說是最有吸引力的。Hibernate作為一種開源的軟件,最早就是由于JBoss的一個團隊所開發(fā)(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的開發(fā)團隊稱,Tomcat可以通過使用JBoss嵌入式EJB 3容器來支持JBoss Seam。

9.支持集群

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

10.支持Eclipse IDE

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

#p#

三、部署

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

1.Geronimo

對Geronimo 2來說,進行配置及部署Java應用程序非常的簡單,特別是通過它提供的Web控制臺更加簡單。Geronimo控制提供了許多簡單的功能來幫助開發(fā)人員進行應用程序的配置??梢赃M行數(shù)據庫的連接池測試及安全設置或配置等。

2.JBoss

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

 

圖2.JBoss控制臺

3.Tomcat

Tomcat 6不愧為一款快速的輕量級的應用服務器。它的控制臺提供了基本的部署功能??梢酝ㄟ^Tomcat的控制臺進行服務的啟動/停止及WAR包的deploy/undeploy操作。當然也提供了Tomcat的運行狀態(tài)及監(jiān)測信息,同時有很好的用戶授權系統(tǒng)。

  

圖3.Tomcat控制臺

四、性能

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

使用的測試機器為:雙核-64位 CPU,4G的內存,在實驗中,讓第一種應用服務器運行到1200000個會話。當然,這些會話不并是同時連接。

 

圖4.多Session測試JSP頁面結果

 

圖5.多Session測試servlet結果

測試所用的代碼量只有區(qū)區(qū)的幾百行,為了準確起見,筆者對三種服務器使用了相同之處的配置。當然,如果采用實際的Java應用程序來測試時,所得到的數(shù)據結果圖會有一定的出入,但大概的趨勢會一致。

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

五、 小結

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

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

JBoss、Geronimo及Tomcat是快速可靠的可用于處理部署大規(guī)模的Java企業(yè)級應用的服務器。特別值得一提的是,很多的高性能Java服務器技術都是從這些開源的應用服務器中總結與借鑒過來,而不是從那些商業(yè)的應用服務器中發(fā)展而來。

【編輯推薦】

  1. 使用Java建立穩(wěn)定的多線程服務器
  2. Tomcat與Web服務器、應用服務器的關系
  3. 基于Ubuntu 8.10平臺的PHP Web服務器配置
責任編輯:彭凡 來源: baidu博客
相關推薦

2019-10-23 10:14:24

TomcatJettyGlassFish

2012-02-02 10:24:08

JavaResin

2009-01-10 19:32:36

2018-12-12 08:40:11

服務器TomcatJava

2009-02-27 14:25:00

Weblogic應用服務器服務器管理

2009-06-16 15:35:20

JBoss應用服務器

2021-05-28 05:18:08

PHP語言roadrunnner

2009-01-16 14:37:57

TomcatWeb服務器應用服務器

2012-02-23 10:02:08

Web服務器應用服務器

2012-03-27 10:31:41

JavaResin

2009-06-19 16:41:53

J2EE應用服務器

2014-05-30 11:29:36

Java服務器

2012-06-13 01:51:05

ResinJava

2014-08-08 16:35:37

應用服務器

2009-05-08 16:38:54

SpringHyperic服務器

2018-02-07 10:08:02

應用服務器網絡數(shù)據庫

2009-06-18 10:03:57

EquinoxOSGi應用服務器

2012-03-23 09:32:48

應用服務器

2018-05-24 10:15:18

服務器Session問題
點贊
收藏

51CTO技術棧公眾號