常用的三大Java EE開源伺服器Apache Geronimo3、Tomcat8和JBoss7比較分析
當企業級的Java應用程序需要真正的應用部署時,Java EE應用伺服器是必不可少的工具。研究表明,除了商業的應用伺服器之外,開源的Java EE應用伺服器開始成為很多Java企業級應用的最佳選擇。而Apache Geronimo、Tomcat及JBoss是其中最主流的開源Java EE應用伺服器。
Apache Geronimo全球應用最廣泛的http伺服器,免費,出自apache基金組織,Tomcat應用也算非常廣泛的web伺服器,支持部分j2ee,免費,出自apache基金組織。JBoss開源的應用伺服器,比較受人喜愛,免費(文檔要收費),JBoss支持j2ee,含有Jsp和Servlet容器可以做web容器,包含EJB容器,是完整的J2EE應用伺服器。而tomcat只能做jsp和servlet的container。
目前常用的三大Java EE開源伺服器下載地址:
JBoss7 https://developers.redhat.com/downloads/?referrer=jbd
一、Apache Geronimo v3.0.1
Apache Geronimo是Apache軟體基金會的開放源碼J2EE伺服器,它集成了眾多先進技術和設計理念。 這些技術和理念大多源自獨立的項目,配置和部署模型也各不相同。Geronimo能將這些項目和方法的配置及部署完全整合到一個統一、易用的模型中。
伺服器支持的相關依賴組件升級版本如下:
Tomcat升級到7.0.39版本
Tranql升級到1.8以支持JDBC 4版本
MyFaces升級到2.1.10以支持JSF 2.1版本
OpenJPA升級到2.2.2版本
Yoko升級到1.4版本
ActiveMQ升級到5.4.3版本
作為符合J2EE標準的伺服器,Geronimo提供了豐富的功能集和無責任Apache許可,具備「立即部署」式J2EE 1.4容器的各種優點,其中包括:
符合J2EE1.4標準的伺服器
預集成的開放源碼項目
統一的集成模型
可伸縮性、可管理性和配置管理功能
JBoss AS7中的新概念-域
JBoss AS7新加入了域(domain)的概念並實現了相關功能。域的提出及實現,其目的是使得多台JBoss AS伺服器的配置可以集中於一點,統一配置、統一部署,從而在管理多台JBoss AS伺服器時,實現集中管理。
域(Domain)的概念及其與群集(Cluster)的區別。對於使用過JBoss AS過往版本的用戶,可能對AS所提供的群集功能已經很熟悉了,在理解域的時候可能會遇到困難。那麼域和群集有什麼區別,用處上有什麼不同呢?總的來講,JBoss的群集的目的是提供:
1.負載平衡(Load Balance)
2.高可用(High Availablity)
而域的目的則是將多台伺服器組成一個伺服器組(Server Group),並為一個伺服器組內的多台主機(Host)提供:
1.單點集中配置(通過一個域控制器,即Domain Controller,實現組內主機的統一配置)
2.單點統一部署,通過域控制器將項目一次部署至組內全部主機。
簡單來講,群集的目標是讓多台伺服器分攤壓力,當一台或多台伺服器當機時,服務可以繼續保持運轉;而域的目標則是提供集中配置和管理多台伺服器的能力。
在沒有域的概念時,要想讓群集內的多台伺服器或幾組伺服器保持統一的配置,一個一個分別的去手工維護,是非常麻煩的事情,而域的引入解決了這一問題。
我們可以理解域和群集的相互關係是"正交(orthogonal)"的:通過一橫一豎這兩條軸,JBoss AS為我們在運維方面提供了強大的可擴展能力。
二、Apache Tomcat 8.5.16
tomcat 是一個小型的輕量級應用伺服器,在中小型系統和並發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。對於一個初學者來說,可以這樣認為,當在一台機器上配置好Apache 伺服器,可利用它響應對HTML 頁面的訪問請求。實際上Tomcat 部分是Apache 伺服器的擴展,但它是獨立運行的,所以當你運行tomcat 時,它實際上作為一個與Apache 獨立的進程單獨運行的。
Tomcat8.0特性
1.支持servlet3.1, jsp 2.3, el表達式3.0 and Java WebSocket 1.0.
2.默認http與ajp請求實現non-blocking技術,即NIO技術。
3.多個應用發布的時候可以先打成jar包,然後打成一個總的war發布。(這句翻譯不太准,意思大概是這樣子的)
4.默認支持應用工程字符集為UFT-8
5.提升了日誌性能,採用了非同步技術
6.新增AJP 連接採用了Servlet3.1的non-blocking IO。
Servlet 3.1最大的改進是實現了非阻塞式的I/O通信。這使得性能得到巨大的改進,數據可以通過ReadListener和WriteListener介面以非同步的方式進行管理。
Servlet 3.1的第二大改進是HTTP協議的升級。它允許客戶端指定雙方通信所使用的協議。比如說,伺服器和客戶端原本使用HTTP通信協議,能夠升級成WebSockets通信。
EL 3.0較之前的版本有很大的改進和增強。主要有:
1)EL可以以"獨立模式"的方式運行,即運行於Servlets和JSP頁面之外。
簡而言之,此增強可以使用ELProcessor類在Servlet容器內或容器外進行直接調用。
2)EL表達式還支持Lambda表達式,這一點與Java 8相似,這些表達式可以簡化代碼。
表達式包括:參數集、Lambda操作符、函數體。
3)集合操作符允許構造Set、List和Map等集合類型。
4)Java EL流式API包含了forEach、reduce、filter、map等過濾器。
這裡可以獲得集合或列表List,調用字元串夫婦,或者在列表List運行外部的過濾器或聚合函數。比如,你可以對字元串求和。
5)通過EL上下文的導入,開發者能夠直接訪問任何類的靜態欄位和方法。
Tomcat 8正式支持WebSocket 1.0這個標準的API。儘管Tomcat 7也提供了支持,但是它只是部分支持,因為在Tomcat 7的時代,標準還未正式制定。目前,大多數網站還以半雙工模式運行HTTP通信,這意味著通信在兩端都可能發生,但是在同一時間點,只能有1個方向的通信。這有點像對講機。
WebSockets協議是一個全雙工協議,它意味著在同一時間點,通信是雙向傳輸數據的。WebSockets也是HTML5的規範之一。
Tomcat 8最大的變化是資源Resource。Tomcat 8的資源進行了重構,可以更好地支持外部資源。原先的別名Aliases、VirtualLoader、VirtualDirContext、JAR資源和外部倉庫等,現在都以單個的、一致的方法進行配置。這個新的資源的實現也可以用於主WAR包,並作為其它多個Web應用程序的基礎。
三、Jboss 7.1.0
JBoss AS7可實現為雲做好準備的架構,並可使啟動時間縮短十倍,提供更快的部署速度並降低內在的佔用。JBoss Enterprise Application Platform 6的核心是JBoss Application Server 7的最新版本,該版本代表著Java應用伺服器在從複雜和單一的形式轉向更加輕便、模塊化和敏捷的變革過程中的一個意義重大的里程碑。 該版本將使開發人員有重新思考如何開發和部署企業Java應用。
JBoss Application Server 7構建於先前版本的良好基礎之上,並提供更出色的性能、更低的內存佔用率、分布式管理和Java EE6 Web Profile認證。它的新能力包括:
1.Java Enterprise Edition(EE)6 Web Profile認證,一種輕型的標準可移植Java EE,專為開發和部署豐富的交換式Web應用而進行了優化。
2.Java上下文和依存關係插入(Java Context and Dependency Injection – CDI),這種標準化的統一框架支持類型安全的依存關係插入和定義完善的上下文生命周期,通過簡化和優化代碼的方式實現了代碼的輕鬆編寫、測試和維護。
3.Arquillian測試,改善了對測試驅動式開發的支持,提供了遠程和嵌入式組件測試,且不會生產完整企業Java容器所帶來的不必要複雜性。
4.構建於輕型的高度優化的模塊化服務容器和新型域模型基礎上,使JBoss Application Server 7能夠從最小的設備擴展至更大的關鍵任務集群。
5.通過基於Eclipse的JBoss工具來提供開發人員工具支持,改善了對Java CDI、休眠、代表性狀態傳輸和Web服務的支持。
6.全新的複雜域模型和豐富的管理API,可實現強大的伺服器和集群自動化。
Jboss7新特性
1.構建在Modular Service Container上,充分地利用了多核處理器的能力,並發、按需啟動服務,啟動速度更快、佔用內存更小。
2.全面兼容Java EE6
3.支持JDK6/7
4.統一的配置和管理
5.兼容OSGI 4.2,支持OSGI和Java EE組件模型集成。
6.容易測試:利用Arquillian測試平台—一種集成測試組件模型,更易於測試,改變-編譯-測試的周期更短。
7.兩種模式
1)Standalone模式(使用standalone.bat啟動)相當於以前的3、4、5、6版本。配置文件、發布內容等放在standalone目錄下。
2)Domain模式(使用domain.bat啟動)是Jboss7的一個新特徵,可以在一個控制點管理多個伺服器。域的提出及實現,其目的是使得多台JBoss AS伺服器的配置可以集中於一點,統一配置、統一部署,從而在管理多台JBossAS伺服器時,實現集中管理。
8.類載入
類載入基於Jboss Module,取代了層次類載入環境,避免了當類存在多個版本時,導致類載入錯誤。由於類載入是基於模塊的,必須顯示的定義模塊依賴。部署也是模塊化的,如果沒有顯示的定義類依賴則不能訪問應用伺服器jar中的類。
推薦
優哉游哉
更多推薦:《優哉游哉》
關注優哉游哉微信公眾號,發送技術相關辭彙如:hadoop,免費領取視頻資料和項目。該公眾號涵蓋:程序人生、搞笑視頻、演算法與數據結構、黑客技術與網路安全、前端開發、Java、Python、Redis緩存、Spring源碼、各大主流框架、Web開發、大數據技術、Storm、Hadoop、MapReduce、Spark、elasticsearch、單點登錄統一認證、分布式框架、集群、安卓開發、iOS開發、C/C++、.NET、Linux、Mysql、Oracle、NoSQL非關係型資料庫、運維等。
TAG:優哉游哉 |
※SpringBoot伺服器壓測對比(jetty、tomcat、undertow)
※如何在Ubuntu 18.04伺服器上安裝TensorFlow(Nvidia GPU)
※Hitachi Vantara升級Skylaking伺服器加入Optane緩存和GPU
※Netcraft 6月Web 伺服器排名:Nginx有望超越Microsoft,Apache持續走低
※EchoStreams基於AMD EPYC的伺服器可配備108個Intel Ruler固態硬碟
※Emissary Panda攻擊:針對中東政府的Sharepoint伺服器
※在 Ubuntu 18.04 LTS 無頭伺服器上安裝 Oracle VirtualBox
※centos下apache伺服器以及Tomcat的配置
※re:Invent 2018:AWS擴展Lambda無伺服器功能 新增Kafka管理服務
※Web Forms Validation 伺服器控制項
※專為RainbowSix Siege確認的伺服器 Remastered在本周出局
※Windows 上的 SSH?使用 PowerShell Remoting 遠程管理 Windows 伺服器
※Facebook公布Big Basin Volta計劃 為OCP貢獻伺服器設計
※十分鐘搭建私有 Jupyter Notebook 伺服器
※Eurocom發布Tornado F7 SE伺服器式筆記本
※Eurocom發布Tornado F7 SE伺服器式筆記本:最多支持22TB硬碟
※Intel下代伺服器Cascade Lake發貨:10nm Ice Lake 2020年見
※PUBG Xbox One獲得Oceanic伺服器
※Docker環境下搭建DNS LVS(keepAlived) OpenResty伺服器簡易集群
※西數發布Ultrastar Serv24 NVMe存儲伺服器