2009-11-30 89 views
8

OSGi是一個用於Java的動態模塊化系統。好的,但基線主題是什麼,OSGi爲什麼開發?使用OSGi有什麼好處?開發OSGi的主要故事是什麼?它爲什麼存在?OSGi中的基礎主題是什麼?

+0

osgi是一種說法,「嘿,我們知道你們所有的程序員都有壞習慣,但這是一種讓你更容易練習壞習慣的方法。」 – 2016-06-15 16:43:44

回答

5

OSGi

  • 的Java模塊系統:它提供了導出和導入Java包和執行模塊的邊界,包括明確的依賴和版本信息的一種方式。

  • 爲Java系統的廣義容器:束可以被動態地加載和卸載,而不停止該系統,其中「束」基本上是JAR文件。

  • 面向服務的編程系統:除了通過包模塊化系統外,OSGi還支持面向服務的模塊化,包括諸如whiteboard pattern(PDF)之類的東西。

OSGi的最初開發是爲了支持高端嵌入式系統,例如機頂盒,這激發了明確的依賴關係和版本,以及作爲一個較新的,企業端使用時使其相當輕量級容器。

+1

在OSGi聯盟重新命名之前,OSGi代表「開放服務網關倡議」。主要目標是嵌入式家庭網關和路由器。 – akr 2009-12-08 01:11:16

17

如果你仔細看,類路徑中的Java概念真的很爛。

您將類分佈在JAR文件中,但在運行時,Java將(幾乎)將所有JAR文件中的所有類盲目地扔到一個大包中,其中同名的類彼此遮蔽,然後以意想不到的方式進行交互。

的OSGi帶來了正確的運行時模塊到Java平臺和一個功能強大的服務模型之上,有時也被稱爲「SOA在JVM內部」。

我會強烈建議閱讀OSGi的一些介紹文章,將給予的這一切意味着一個更具體的想法。一個很好的出發點可能是Alex Blewitt的一系列的關於Java模塊化InfoQ上的文章:

3

我想這個問題可以降低到「什麼是Modularisation'的價值。有關Kirk Knoernschild關於此主題的優秀系列文章,請參見http://techdistrict.kirkk.com/。我相信一本書也在作品中。

如果您在學術上傾斜 - 模塊化和動力系統總成的動力深受最近出版的新書探討 - 「多樣性和複雜性」(http://press.princeton.edu/titles/9208.html)。儘管不是以軟件爲中心的,本書解釋了爲什麼下一代自適應/強大的軟件系統必須是模塊化的。

請注意,除了成爲Java模塊化的行業標準(因此啓用上述所有功能); OSGi還爲桌面帶來了強大的「SOA-內部JVM」服務架構。

最後,一個溫柔以及製作介紹到OSGi的發展 - 嘗試尼爾·巴特利特的書「OSGi的實踐」 http://njbartlett.name/osgibook.html

問候

理查德

3

任何好處的OSGi提供,他們黯然失色由於缺乏靈活性,對構建環境的修改以及大量其他變化,這主要是由(經驗豐富的)開發人員無能所致。

這些障礙會降低開發人員的生產力,從而降低對源代碼進行所有改進的速度(不僅僅是模塊化改進)。

+0

我不同意,Bundles上的工具非常好,所以它本身可以做很多事情(Bnd和Felix註釋,你涵蓋了很多)。許多開源庫已經有OSGi清單條目(正因爲它很容易添加)。 – eckes 2014-04-16 02:58:28

+0

示例:由Felix拒絕生成配置文件的Maven bundle插件由於格式不正確(並且必須手動修復它們),「應用到classpath」會中斷maven項目,當某些操作失敗時沒有錯誤或警告,樣板文件iPOJO默默無法完成工作,消息中的拼寫錯誤,需要黑客(pax url)在IDE和部署的JAR之間進行相同的工作,因爲它們對它進行了過度設計,並假定每臺機器都將有一個管理員來控制OSGi容器,部署可插拔遊戲,圖形,音頻軟件給普通用戶不合理。 – user515655 2015-11-03 17:20:20