譯自《OSGi R4規(guī)范》

          Eclipse從3.0版本開始采用基于OSGi的插件體系結(jié)構(gòu)。

          ××××××××××××××××××××××××
          先簡(jiǎn)要介紹下OSGi框架

          OSGi框架是OSGi服務(wù)平臺(tái)規(guī)范的核心部分。該框架提供了一個(gè)大眾化,安全,可管理的平臺(tái),可以支持可擴(kuò)展可下載應(yīng)用插件的部署,我們稱這些應(yīng)用插件為Bundle。

          與OSGi兼容的設(shè)備可以下載和安裝OSGi bundles,在不需要的時(shí)候還可以在運(yùn)行時(shí)卸載它們。OSGi框架使用一種動(dòng)態(tài)的,可協(xié)調(diào)的方式管理OSGi環(huán)境中bundles的安裝和更新,為了完成這個(gè)任務(wù),框架會(huì)管理bundles、services的依賴細(xì)節(jié)。

          框架使得Bundle的開發(fā)者能夠充分利用java平臺(tái)的跨平臺(tái)性和動(dòng)態(tài)加載能力,這樣,開發(fā)部署到大規(guī)模的嵌入式設(shè)備的服務(wù)將更加容易。

          OSGi框架的功能模塊主要?jiǎng)澐譃橐韵聨讉€(gè)層面:
          * 安全管理層面
          * 模塊層面
          * 生命周期層面
          * 服務(wù)層面
          * 部署的服務(wù)

          安全管理層面基于Java 2的安全機(jī)制,但另外添加了一些安全方面的限制,還擴(kuò)充了Java安全方面的一些管理機(jī)制。

          模塊層面定義了一個(gè)基于Java的模塊化模型,它更正了Java部署模型的一些缺陷,它在bundles之間的共享包(package)和隱藏包方面定義了嚴(yán)格的規(guī)則。模塊層面可以在沒有生命周期層面和服務(wù)層面的情況下使用,生命周期層面提供了一個(gè)管理模塊層面中bundles的類庫(kù),而服務(wù)層面則提供一個(gè)bundles之間交互的模型。

          生命周期層面提供了一個(gè)管理bundles生命周期的API。這個(gè)API定義了bundles的運(yùn)行時(shí)模型,它定義了bundles是如何啟動(dòng),停止,安裝,更新和卸載的。而且它還提供了一個(gè)事件API,使得一個(gè)行使管理功能的Bundle能夠控制服務(wù)層面的行為。生命周期層面依賴于模塊層面,它不依賴于安全層面。

          服務(wù)層面為Java Bundle開發(fā)者提供了動(dòng)態(tài),準(zhǔn)確和一致的編程模型,通過(guò)解耦服務(wù)規(guī)范及其實(shí)現(xiàn)來(lái)簡(jiǎn)化服務(wù)Bundle的開發(fā)和部署。這個(gè)模型允許Bundle開發(fā)者只綁定到接口規(guī)范。如果要為了特定需要進(jìn)行優(yōu)化,或選擇不同的廠商定制,就可以在運(yùn)行時(shí)選擇相應(yīng)的實(shí)現(xiàn)來(lái)替換。

          一致的編程模型使得開發(fā)者可以協(xié)調(diào)各個(gè)方面的實(shí)現(xiàn)問題 -- 這是很重要的,因?yàn)榭蚣苡锌赡芤\(yùn)行在不同的設(shè)備平臺(tái)上,這些平臺(tái)有著不同的硬件特性,這會(huì)影響到實(shí)現(xiàn)的諸多方面。但一致的接口可以保證各個(gè)組件能夠重新被組裝起來(lái),構(gòu)建出穩(wěn)固的系統(tǒng)。

          OSGi框架中,bundles可以在運(yùn)行時(shí)通過(guò)服務(wù)注冊(cè)表選擇可用的實(shí)現(xiàn)。Bundles可以注冊(cè)新的服務(wù),接受服務(wù)的狀態(tài)信息,查找已存在的服務(wù)來(lái)適應(yīng)設(shè)備的當(dāng)前能力。框架的這些機(jī)制使得已經(jīng)部署的bundles能夠繼續(xù)更新和擴(kuò)展:新的bundles可以被添加以擴(kuò)充功能,運(yùn)行中的bundles也可以在不重啟系統(tǒng)的情況下被修改和更新。




          版權(quán)所有 羅明
          posted on 2007-06-29 14:18 羅明 閱讀(2203) 評(píng)論(29)  編輯  收藏 所屬分類: JavaEclipseStudy
          Comments
           
          主站蜘蛛池模板: 林口县| 仁化县| 石泉县| 玛多县| 辽阳市| 肥乡县| 瑞昌市| 广元市| 通海县| 东平县| 康乐县| 北川| 化隆| 扎兰屯市| 泰顺县| 台山市| 青岛市| 桦甸市| 营口市| 沙湾县| 老河口市| 剑川县| 乐平市| 来凤县| 三河市| 长阳| 老河口市| 东平县| 丘北县| 临泉县| 安龙县| 阿瓦提县| 衡东县| 文成县| 武城县| 新泰市| 嘉鱼县| 镇原县| 廊坊市| 阿拉善盟| 德化县|