對于剛剛開始java培訓的學員們,很多人都有一個這樣的疑問OSGi是什么?這次小編就來給初學java語言的學員們講解一下OSGi是什么。
(PS:本篇文章不單只介紹了java培訓學員們想知道的OSGi是什么,還介紹了OSGi容器的一些現狀、OSGi亦稱做Java語言的動態模塊系統、它為模塊化應用的開發定義了一個基礎架構。) 之前曾經有過一篇文章叫做《OSGi為什么重要:向模塊化轉移的主攻手》,里面對于OSGi的優勢進行了分析。不過,對于究竟什么是OSGi,很多人仍然只有一個模糊的概念。本系列(你好,OSGi)從基礎開始介紹了OSGi。本部分介紹OSGi是什么,以及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的基礎知識。
粵嵌科技創辦于2005年是一家IT高新技術企業,專注IT職業教育13年,主要培訓課程分別有嵌入式培訓、Java培訓、Unity游戲開發、Python人工智能、HTML5前端開發、全棧UI設計、網絡營銷、CCIE網絡等專業課程