您好,登錄后才能下訂單哦!
OSGi是什么意思,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
OSGi是什么
OSGi亦稱做Java語(yǔ)言的動(dòng)態(tài)模塊系統(tǒng),它為模塊化應(yīng)用的開(kāi)發(fā)定義了一個(gè)基礎(chǔ)架構(gòu)。OSGi容器已有多家開(kāi)源實(shí)現(xiàn),比如Knoflerfish、Equinox和Apache的Felix。您可以通過(guò)這些容器,把您的應(yīng)用程序劈分為多個(gè)模塊單元,這樣,您就可以更容易地管理這些模塊單元之間的交叉依賴關(guān)系。
OSGi規(guī)范和Servlet規(guī)范及EJB規(guī)范類似,該規(guī)范定義了兩種對(duì)象,一是容器對(duì)外提供的服務(wù)對(duì)象,另一個(gè)是容器和您的應(yīng)用程序之間必須遵守的契約,其中,服務(wù)對(duì)象是容器要實(shí)現(xiàn)的。您如果想要在OSGi平臺(tái)上進(jìn)行開(kāi)發(fā),首先,您必須要使用OSGi API來(lái)創(chuàng)建您的應(yīng)用,然后將之部署到OSGi容器中。從開(kāi)發(fā)者的角度看,OSGi具有以下優(yōu)點(diǎn):
a) 您可以在不重啟容器的情況下,動(dòng)態(tài)地安裝、卸載、啟動(dòng)和停止您的應(yīng)用程序中的不同模塊;
b) 對(duì)于您應(yīng)用程序中的某一特定模塊,容器可以同時(shí)運(yùn)行該模塊的多個(gè)版本;
c) OSGi為開(kāi)發(fā)嵌入式應(yīng)用、移動(dòng)應(yīng)用、富互聯(lián)網(wǎng)應(yīng)用(RIA)提供了非常優(yōu)秀的基礎(chǔ)架構(gòu)
如果說(shuō)您使用Servlet容器開(kāi)發(fā)您的網(wǎng)絡(luò)應(yīng)用,使用EJB容器開(kāi)發(fā)交易式應(yīng)用,您可能會(huì)問(wèn),為什么我們還需要另外的容器呢?對(duì)這個(gè)問(wèn)題的簡(jiǎn)短回答是,OSIG容器是專門(mén)為開(kāi)發(fā)復(fù)雜的Java應(yīng)用準(zhǔn)備的,在這些應(yīng)用的開(kāi)發(fā)過(guò)程中,您非常需要將這些應(yīng)用分割為一個(gè)個(gè)的模塊。在本系列以后的文章中,我將針對(duì)這個(gè)問(wèn)題進(jìn)行展開(kāi)并深入回答。
1. OSGi在企業(yè)開(kāi)發(fā)中的應(yīng)用
OSGi聯(lián)盟(OSGiAlliance)于1999年3月開(kāi)始著手制定OSGi規(guī)范,其主要目的就是要制定一套開(kāi)放式標(biāo)準(zhǔn),以便向局域網(wǎng)及其中的設(shè)備提供可管理的服務(wù);其基本思路是,一旦您在網(wǎng)絡(luò)設(shè)備(如服務(wù)器和嵌入式設(shè)備)上使用了OSGi服務(wù)平臺(tái),您就可以在網(wǎng)絡(luò)上的任何地方管理這些設(shè)備上運(yùn)行的軟件組件的生命周期,可以在后臺(tái)對(duì)這些組件進(jìn)行安裝、升級(jí)或卸載,但不需要打斷該設(shè)備的正常運(yùn)行。
近年來(lái),OSGi技術(shù)在嵌入式系統(tǒng)及網(wǎng)絡(luò)設(shè)備市場(chǎng)得到廣泛應(yīng)用?,F(xiàn)在,由于Eclipse的成功,OSGi在企業(yè)開(kāi)發(fā)中逐漸成為切實(shí)可行的、較有價(jià)值的一種技術(shù)。
1.1. 業(yè)界對(duì)OSGi的支持逐漸上升
2003年,Eclipse開(kāi)發(fā)團(tuán)隊(duì)開(kāi)始想辦法提高Eclipse工具集的模塊化,以便讓它成為更加動(dòng)態(tài)的富客戶端平臺(tái)。Eclipse團(tuán)隊(duì)最終選中OSGi框架作為其組件的運(yùn)行時(shí)模型,2004年6月發(fā)布的Eclipse3.0就是***個(gè)基于OSGi平臺(tái)的版本?,F(xiàn)在幾乎所有的企業(yè)應(yīng)用服務(wù)器都支持OSGi,Spring也通過(guò)一個(gè)叫“OSGi服務(wù)平臺(tái)上的Spring動(dòng)態(tài)模型(亦稱之為OSGiSpring)”的項(xiàng)目來(lái)支持OSGi。該項(xiàng)目提供OSGi基礎(chǔ)架構(gòu),以便我們?cè)赟pring的企業(yè)開(kāi)發(fā)中更容易使用OSGi。
2. 開(kāi)放源碼的OSGi容器
從企業(yè)開(kāi)發(fā)者的角度看,OSGi容器的要求很低,您可以很容易地把它嵌入到企業(yè)應(yīng)用中,比如我們?cè)陂_(kāi)發(fā)Web應(yīng)用時(shí),我們可以把這個(gè)Web應(yīng)用分為多個(gè)模塊,一個(gè)模塊負(fù)責(zé)視圖層,另一個(gè)模塊負(fù)責(zé)DAO層,第三個(gè)模塊負(fù)責(zé)數(shù)據(jù)訪問(wèn)層,如果我們使用OSGi容器來(lái)管理這些模塊之間的交叉依賴,我們就可以在不用重啟該Web應(yīng)用的前提下,將DAO層從速度較慢的升級(jí)到速度較快的DAO。
只要您的應(yīng)用和OSGi規(guī)范兼容,您的應(yīng)用就應(yīng)該可以運(yùn)行在任何OSGi容器中,現(xiàn)在比較流行的開(kāi)放源碼的OSGi容器有以下三種:
a) Equinox容器是參照OSGi規(guī)范第4版實(shí)現(xiàn)的,它構(gòu)成了Eclipse IDE的核心—模塊化的Java運(yùn)行時(shí);它實(shí)現(xiàn)了OSGi規(guī)范4中規(guī)定的必須強(qiáng)制實(shí)現(xiàn)的功能,同時(shí),它也實(shí)現(xiàn)了OSGi規(guī)范中大部分的可選功能;
b) Knoflerfish是OSGi規(guī)范第3版和第4版的開(kāi)源實(shí)現(xiàn),它實(shí)現(xiàn)了OSGi規(guī)范規(guī)定的必須實(shí)現(xiàn)的功能及部分可選功能;
c) Apache的Felix是Apache軟件基金會(huì)實(shí)現(xiàn)的OSGi開(kāi)源容器,至本文截稿時(shí)為止,該容器還沒(méi)有和OSGi規(guī)范完全兼容。在本文中,我們將使用Equinox作為我們的OSGi容器。
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。