現在看來OSGi是一個熱門詞彙。許多benefits調用:OSGi的盈虧平衡點
- 降低複雜性
- 重用
- 易於部署
- 版本控制
(ETC)
我問了一個非常具體的用例 - 小型到中型web應用程序。 OSGi爲這些人帶來了什麼好處?它實際上值得嗎?
現在看來OSGi是一個熱門詞彙。許多benefits調用:OSGi的盈虧平衡點
(ETC)
我問了一個非常具體的用例 - 小型到中型web應用程序。 OSGi爲這些人帶來了什麼好處?它實際上值得嗎?
我會冒險NO,儘管我是OSGi的忠實粉絲。除非您正在使用其他OSGi軟件包,否則您有一個特殊問題,如果沒有這個大錘,就無法輕鬆解決。
好處是優雅的類路徑分離(恕我直言)。如果你需要同一個JAR /類的不同版本,比如說因爲你正在升級應用程序的某些部分,或者因爲你合併了很多第三方模塊,那麼OSGi很棒。
這不是一件容易的事情,OSGi也不容易。它變得乾淨,但是需要環境堆棧中另一層的代價。還有很多工作要學習和維護。
更不用說文檔不是特別適合初學者。
我建議大家學習一下 - 構建Eclipse插件是一種非常好的方法 - 但不能將其構建到您的開發計劃中,直到您知道它爲止。
我會一如既往地說「這取決於」。
你的環境
考慮現有的團隊沒有OSGI經驗(誰自豪地認爲自己有經驗的開發誰「把事情做好」。有一個機會,他們會經歷一個重大的痛苦或慢啓動。
許多人(超過你的想象)的開發人員不熟悉構建工具,如Ant或Maven,當他們他們只用那些有限的功能構建工具。
創建OSGI包最好用Eclipse,Ant tasks或Maven BND plugin VS腳本或手動書寫的jar歸檔清單來完成。
小應用
對於小型應用程序,OSGI帶來不必要的複雜性,同時可以使用動態語言如Jython等或JPF或SPI一個插件框架等。您也可以直接使用反射和簡單的自定義類加載器。
大應用
大的應用程序可能會受益於OSGI,尤其是當他們從頭寫起。將OSGI集成到現有應用程序中的IMHO更像是引入了一個用於提供模塊化體系結構的補丁程序。
根據我的經驗,在重寫許多應用程序之後,最好在項目初期考慮模塊化。
其他關注
部署: 這是在任何應用程序相同。如果您習慣部署Java Web Start應用程序,則部署不是問題。如果你習慣OSGI,那麼部署不應該成爲問題。
在任何應用程序中,在生產中部署它時都會遇到問題,這是很自然的。
版本: 在應用程序中提供版本控制的方法很多。但是,如果您僅將版本信息作爲「信息」與工具(管理依賴關係要求)一起使用,則版本控制不是問題。
重用: 使用OSGI時,您傾向於編寫代碼以供重用,但任何編寫良好的API都是考慮到代碼重用的原因。 Eclipse是用OSGI編寫的一個成功的大型應用程序的數字例子。還有其他大/不錯的工具,它們不使用OSGI並且是模塊化的。
結論
在許多模塊化的框架,這是難以處理的依賴關係,停止/啓動/卸載/在運行時安裝的功能,而無需重新啓動應用程序。你玩定製類加載器,關機和啓動掛鉤等。
OSGI爲您提供這樣的靈活性,在一個小的成本恕我直言。
這是主觀的,但不是CW素材。我會用最好的論據來選擇答案。 – 2009-07-28 22:41:15