日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《深入理解OSGi:Equinox原理、应用与最佳实践》一2.2 Bundle

發布時間:2023/12/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《深入理解OSGi:Equinox原理、应用与最佳实践》一2.2 Bundle 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2.2 Bundle

從本節開始,一直到本書結束,我們都會不斷地提起“Bundle”這個詞。Bundle是OSGi中最基本的單位,通俗地講,如果說OSGi是基于Java平臺的“模塊化開發體系”,那么Bundle便是其中的“模塊”。
OSGi中的Bundle是在JAR文件格式規范基礎上擴展而來的,一個符合OSGi規范的Bundle首先必須是一個符合JAR文件格式規范的JAR包。與JAR文件格式兼容這點雖然沒有太多技術含量可言,但是這個簡單的舉措極大地加速了OSGi的發展傳播,它令OSGi的Bundle可以不經任何修改就直接應用于非OSGi的系統之中,也為將非OSGi的JAR包轉換為可在OSGi系統運行的Bundle提供了很大的便利。
Bundle相對普通的JAR文件主要進行了以下三個方面擴展。
JAR文件格式規范里定義的/META-INF/MANIFEST.MF文件用于描述JAR包的元數據信息,如JAR包的版本、數字簽名信息等,Bundle在MANIFEST.MF文件中添加了大量擴展定義,如描述該Bundle可以提供哪些資源、依賴哪些其他Bundle、啟動或卸載時要執行哪些動作等,這部分內容我們會在2.3節中詳細介紹。
加入了一個可選的/OSGI-OPT文件夾,可以在其中保存一些與Bundle運行無關的信息,比如Bundle源碼、軟件說明書等。Bundle的使用者可以從中獲取一些額外的信息,也可以安全地刪除該文件夾,以節約OSGi系統的存儲空間。
Bundle中可以包含一些具備特殊含義的程序和資源,如使用Bundle-Activator定義的初始化類、定義在OSGI-INF/l10n目錄中的本地化信息等。
Fragment Bundle是一種特殊的Bundle,它無法獨立存在,必須依附于某個其他的普通Bundle來使用,可以將它視為“Bundle的插件”、“模塊中的模塊”。
Fragment Bundle經常用來提供某些可選的功能,譬如為某個實現具體功能的Bundle提供一個中文語言包。有這個語言包,實現功能的Bundle能顯示中文界面;在沒有這個中文語言包時,實現功能的Bundle也能夠正常使用。Fragment Bundle的另一項主要用途是隔離Bundle中經常變動的部分,譬如把系統的內部配置文件(開發模式還是生產模式、連接的數據庫地址、調試級別等)集中在Fragment Bundle中,通過更換不同的Fragment Bundle來實現配置快速切換。
從靜態角度(開發期)來看,Fragment Bundle與普通Bundle沒有太大區別,它們都以JAR文件格式為基礎,具備相同的元數據信息標記,標記的含義與設置方式也一樣。區別僅僅是Fragment Bundle的元數據中會使用Fragment-Host標記說明它的宿主Bundle。
從動態角度(運行期)來看,Fragment Bundle與普通Bundle在運行時的處理差別卻非常大,最重要的一點差異是Fragment Bundle不具備自己獨立的類加載器。OSGi利用每個Bundle獨立的類加載器互相協作來維護Bundle間導入、導出的依賴關系。沒有類加載器,就無法直接與其他Bundle交互,必須依附于宿主,使用宿主Bundle的類加載器完成。關于這部分內容,我們在后面會有更詳盡的介紹。

總結

以上是生活随笔為你收集整理的《深入理解OSGi:Equinox原理、应用与最佳实践》一2.2 Bundle的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。