程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2EE >> OSGi是什麼:Java語言的動態模塊系統

OSGi是什麼:Java語言的動態模塊系統

編輯:J2EE

之前51CTO曾發過一篇文章叫做《OSGi為什麼重要:向模塊化轉移的主攻手》,裡面對於OSGi的優勢進行了分析。不過,對於究竟什麼是OSGi,很多人仍然只有一個模糊的概念。本系列(你好,OSGi)從基礎開始介紹了OSGi。本部分介紹OSGi是什麼,以及OSGi容器的一些現狀。(注:本文英文原文於08年3月發布在JavaWorld網站)

51CTO編輯推薦:OSGi入門與實踐全攻略

OSGi是什麼

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

OSGi規范和Servlet規范及EJB規范類似,該規范定義了兩種對象,一是容器對外提供的服務對象,另一個是容器和您的應用程序之間必須遵守的契約,其中,服務對象是容器要實現的。您如果想要在OSGi平台上進行開發,首先,您必須要使用OSGi API來創建您的應用,然後將之部署到OSGi容器中。從開發者的角度看,OSGi具有以下優點:

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

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

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

如果說您使用Servlet容器開發您的網絡應用,使用EJB容器開發交易式應用,您可能會問,為什麼我們還需要另外的容器呢?對這個問題的簡短回答是,OSIG容器是專門為開發復雜的Java應用准備的,在這些應用的開發過程中,您非常需要將這些應用分割為一個個的模塊。在本系列以後的文章中,我將針對這個問題進行展開並深入回答。

1. OSGi在企業開發中的應用

OSGi聯盟(OSGiAlliance)於1999年3月開始著手制定OSGi規范,其主要目的就是要制定一套開放式標准,以便向局域網及其中的設備提供可管理的服務;其基本思路是,一旦您在網絡設備(如服務器和嵌入式設備)上使用了OSGi服務平台,您就可以在網絡上的任何地方管理這些設備上運行的軟件組件的生命周期,可以在後台對這些組件進行安裝、升級或卸載,但不需要打斷該設備的正常運行。

近年來,OSGi技術在嵌入式系統及網絡設備市場得到廣泛應用。現在,由於Eclipse的成功,OSGi在企業開發中逐漸成為切實可行的、較有價值的一種技術。

1.1. 業界對OSGi的支持逐漸上升

2003年,Eclipse開發團隊開始想辦法提高Eclipse工具集的模塊化,以便讓它成為更加動態的富客戶端平台。Eclipse團隊最終選中OSGi框架作為其組件的運行時模型,2004年6月發布的Eclipse3.0就是第一個基於OSGi平台的版本。現在幾乎所有的企業應用服務器都支持OSGi,Spring也通過一個叫“OSGi服務平台上的Spring動態模型(亦稱之為OSGiSpring)”的項目來支持OSGi。該項目提供OSGi基礎架構,以便我們在Spring的企業開發中更容易使用OSGi。

2. 開放源碼的OSGi容器

從企業開發者的角度看,OSGi容器的要求很低,您可以很容易地把它嵌入到企業應用中,比如我們在開發Web應用時,我們可以把這個Web應用分為多個模塊,一個模塊負責視圖層,另一個模塊負責DAO層,第三個模塊負責數據訪問層,如果我們使用OSGi容器來管理這些模塊之間的交叉依賴,我們就可以在不用重啟該Web應用的前提下,將DAO層從速度較慢的升級到速度較快的DAO。

只要您的應用和OSGi規范兼容,您的應用就應該可以運行在任何OSGi容器中,現在比較流行的開放源碼的OSGi容器有以下三種:

a) Equinox容器是參照OSGi規范第4版實現的,它構成了Eclipse IDE的核心—模塊化的Java運行時;它實現了OSGi規范4中規定的必須強制實現的功能,同時,它也實現了OSGi規范中大部分的可選功能;

b) Knoflerfish是OSGi規范第3版和第4版的開源實現,它實現了OSGi規范規定的必須實現的功能及部分可選功能;

c) Apache的Felix是apache軟件基金會實現的OSGi開源容器,至本文截稿時為止,該容器還沒有和OSGi規范完全兼容。在本文中,我們將使用Equinox作為我們的OSGi容器。

對OSGi是什麼的介紹就先到這裡,下面的部分將繼續介紹OSGi的基礎知識。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved