2009-07-28 66 views
5

現在看來OSGi是一個熱門詞彙。許多benefits調用:OSGi的盈虧平衡點

  • 降低複雜性
  • 重用
  • 易於部署
  • 版本控制

(ETC)

我問了一個非常具體的用例 - 小型到中型web應用程序。 OSGi爲這些人帶來了什麼好處?它實際上值得嗎?

+0

這是主觀的,但不是CW素材。我會用最好的論據來選擇答案。 – 2009-07-28 22:41:15

回答

6

我會冒險NO,儘管我是OSGi的忠實粉絲。除非您正在使用其他OSGi軟件包,否則您有一個特殊問題,如果沒有這個大錘,就無法輕鬆解決。

好處是優雅的類路徑分離(恕我直言)。如果你需要同一個JAR /類的不同版本,比如說因爲你正在升級應用程序的某些部分,或者因爲你合併了很多第三方模塊,那麼OSGi很棒。

這不是一件容易的事情,OSGi也不容易。它變得乾淨,但是需要環境堆棧中另一層的代價。還有很多工作要學習和維護。

更不用說文檔不是特別適合初學者。

我建議大家學習一下 - 構建Eclipse插件是一種非常好的方法 - 但不能將其構建到您的開發計劃中,直到您知道它爲止。

7

我會一如既往地說「這取決於」。

你的環境

考慮現有的團隊沒有OSGI經驗(誰自豪地認爲自己有經驗的開發誰「把事情做好」。有一個機會,他們會經歷一個重大的痛苦或慢啓動。

許多人(超過你的想象)的開發人員不熟悉構建工具,如AntMaven,當他們他們只用那些有限的功能構建工具。

創建OSGI包最好用Eclipse,Ant tasksMaven BND plugin VS腳本或手動書寫的jar歸檔清單來完成。

小應用

對於小型應用程序,OSGI帶來不必要的複雜性,同時可以使用動態語言如Jython等或JPFSPI一個插件框架等。您也可以直接使用反射和簡單的自定義類加載器。

大應用

大的應用程序可能會受益於OSGI,尤其是當他們從頭寫起。將OSGI集成到現有應用程序中的IMHO更像是引入了一個用於提供模塊化體系結構的補丁程序。

根據我的經驗,在重寫許多應用程序之後,最好在項目初期考慮模塊化。

其他關注

部署: 這是在任何應用程序相同。如果您習慣部署Java Web Start應用程序,則部署不是問題。如果你習慣OSGI,那麼部署不應該成爲問題。

在任何應用程序中,在生產中部署它時都會遇到問題,這是很自然的。

版本: 在應用程序中提供版本控制的方法很多。但是,如果您僅將版本信息作爲「信息」與工具(管理依賴關係要求)一起使用,則版本控制不是問題。

重用: 使用OSGI時,您傾向於編寫代碼以供重用,但任何編寫良好的API都是考慮到代碼重用的原因。 Eclipse是用OSGI編寫的一個成功的大型應用程序的數字例子。還有其他大/不錯的工具,它們不使用OSGI並且是模塊化的。

結論

在許多模塊化的框架,這是難以處理的依賴關係,停止/啓動/卸載/在運行時安裝的功能,而無需重新啓動應用程序。你玩定製類加載器,關機和啓動掛鉤等。

OSGI爲您提供這樣的靈活性,在一個小的成本恕我直言。