OSGi介紹

什麼是OSGI

OSGi(Open Service Gateway Initiative)有雙重含義。一方面它指OSGi Alliance組織;另一方面指該組織制定的一個基於Java語言的服務(業務)規範——OSGi服務平臺(Service Platform)。

OSGi Alliance是一個由Sun MicrosystemsIBM愛立信等於1999年3月成立的開放的標準化組織, 最初名爲Connected Alliance。該組織及其標準原本主要目的在於使服務提供商通過住宅網關,爲各種家庭智能設備提供各種服務。目前該平臺逐漸成爲一個爲室內、交通工具、移動電話和其他環境下的所有類型的網絡設備的應用程序和服務進行傳遞和遠程管理的開放式服務平臺。

該規範和核心部分是一個框架 ,其中定義了應用程序的生命週期模式和服務註冊。基於這個框架定義了大量的OSGi服務:日誌配置管理、偏好,HTTP(運行servlet)、XML分析、設備訪問、軟件包管理、許可管理、星級、用戶管理、IO連接、連線管理、Jini和 UPnP

這個框架實現了一個優雅、完整和動態的組件模型。應用程序(稱爲bundle)無需重新引導可以被遠程安裝、啓動、升級和卸載(其中Java包/類的管理被詳細定義)。API中還定義了運行遠程下載管理政策的生命週期管理服務註冊允許bundles去檢測新服務和取消的服務,然後相應配合。

OSGi原先關注於服務網關,其實可用於多個方面。現在OSGi規範已經用於從移動電話到開源的Eclipse(其中包括了與IBM的OSGi框架SMF兼容的開源版本)。 OSGi服務平臺的應用包括:服務網關、 汽車移動電話、 工業自動化建築物自動化、 PDA 網格計算娛樂(如iPronto)、和IDE

OSGi規範是由成員通過公開的程序開發,對公衆免費而且沒有許可證限制。但是OSGi Alliance的兼容性程序只對成員開放,目前有12個兼容的實現

2003年Eclipse選擇OSGi作爲其插件的底層運行時架構。Equinox project對該理念進行了實驗,2004年6月在Eclipse3 R3中發佈。ProSyst是面向OSGi開發者的Eclipse插件。

2003年10月, 諾基亞摩托羅拉ProSyst 和其他OSGi成員組建了Mobile Expert Group (MEG)爲下一代智能手機規範業務平臺,做爲對MIDP 和CDC的補充。

OSGi(Open Service Gateway Initiative)技術是面向Java的動態模型系統。OSGi服務平臺向Java提供服務,這些服務使Java成爲軟件集成和軟件開發的首選環境。 Java提供在多個平臺支持產品的可移植性。OSGi技術提供允許應用程序使用精煉、可重用和可協作的組件構建的標準化原語。這些組件能夠組裝進一個應用 和部署中。

OSGi亦稱做Java語言的動態模塊系統,它爲模塊化應用的開發定義了一個基礎架構。OSGi容器已有多家開源實現,比如 Knoflerfish、Equinox和Apache的Felix。您可以通過這些容器,把您的應用程序劈分爲多個模塊單元,這樣,您就可以更容易地管 理這些模塊單元之間的交叉依賴關係。

OSGi的主要職責就是爲了讓開發者能夠建動態化、模塊化的Java系統。

傳統的開發和部署的侷限性

1、java講求的是面向接口編程,比如接口A有兩個實現類B和C,當在運行時需要將B轉換成C的時候,就需要重新啓動服務,否則是無法實現的,也就是說J2EE本身是不提供這種支持的。

2、JAR文件規範粒度太粗,沒有足夠的約束力。運行期,如果這些第三方Jar包不存在,或者命名存在差異,或者提供了不同JAR包版本,則會出現各種不同結果。Java SE/Java EE平臺沒有細化這方面的任何內容。

3、由於Java EE平臺規範沒有針對Java package引入版本支持,這使得在同一企業應用中幾乎不可能啓用同一JAR包的不同版本。與此同時,現有的Java EE技術體系難以動態升級、替換生產環境,實際的做法是,每次部署新版應用時,都需要重啓應用或Java EE容器,進而影響到在線用戶。

4、維護成本較高。因爲企業應用的模塊化程度不高,即Java EE的模塊化更多地是停留在邏輯概念層面。通常,我們會將企業應用以單個WAR包形式存在,其中內置了當前應用所有的內容,包括.class、.jsp、.js等資源。很顯然,這給維護工作帶來挑戰,畢竟升級或修改WAR包中的任何內容都可能會波及到整個WAR包。這就要求,每次升級生產環境之前,都必須對整個WAR包的各個方面進行完整的迴歸測試,進而增加了不必要的維護成本,包括人力和物力成本。

5、開發不具備模塊化的特性,一般企業中項目往往是放到一個工程中,這樣造成的後果是模塊化能力不強,難於維護,越大越不容易維護。

OSGI的優缺點

a) 您可以在不重啓容器的情況下,動態地安裝、卸載、啓動和停止您的應用程序中的不同模塊;

b) 對於您應用程序中的某一特定模塊,容器可以同時運行該模塊的多個版本;

c) OSGi爲開發嵌入式應用、移動應用、富互聯網應用(RIA)提供了非常優秀的基礎架構

OSGI的分類

主要分成以下三個部分:

1、OSGi服務平臺Core規範及服務集合。這類似於Java SE平臺。

2、OSGi服務平臺Residential規範。這類似於Java ME平臺。

3、OSGi服務平臺Enterprise規範。這類似於Java EE平臺。

使用OSGI實現SOA

模塊化設計是軟件設計的一個基本思想,同時作爲SOA應用,一個很重要的需求就是要方便用戶擴展,利用擴展向SOA應用添加新功能,並能夠很方便地和應用 本身做無縫集成。這就要求SOA應用中的模塊提供可接入的擴展實現,還可以提供進一步擴展的能力。OSGi具備構造滿足這樣特點的SOA應用模塊的能力。 OSGi提供了一個微內核的機制,實現了模塊的可插拔,併爲模塊定義了一個清晰的物理格式,保證了模塊開發與複用的一致性。

詳細的內容可以參考

http://book.51cto.com/art/200912/173733.htm

本文轉自:http://www.cnblogs.com/skyme/archive/2012/07/09/2580613.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章