2012-08-24 43 views
4

我是OSGI框架的新手。我正在瀏覽這些網站並閱讀有關OSGI框架的內容。坦率地說,我沒有理解任何東西。以下是我的疑惑osgi相關的一些疑問

  1. OSGi應該提供模塊化。我們不能通過普通罐子來實現模塊化嗎?
  2. 這是什麼意思,OSGi有一個動態組件模型?
  3. 軟件包可以安裝,啓動,停止,更新等。我們爲什麼要安裝捆綁軟件?爲什麼不能像我們訪問其他普通罐子一樣直接訪問?

我完全困惑。有人可以回答我嗎?如果可以舉一些例子。

+3

我保證我沒有試圖變得sn,不馴,但OSGi提供的功能只有在Java最佳實踐環境中才有意義。 OSGi是構建真正架構良好的Java應用程序的一種強大工具。如果沒有這個目標和一系列的缺陷,模塊化,組件生命週期和「JVM中的SOA」概念就沒有太多可看的地方了。 – chad

+0

@chad:我認爲你在那裏表現得非常好 - 根本不會嗤之以鼻:) –

回答

4
  1. 編號JAR是開放的類的容器,不提供運行時封裝。請參閱http://www.slideshare.net/bjhargrave/why-osgi
  2. 動態表示在VM/OSGi框架運行時可以更改bundle的生命週期。也就是說,您無需重新啓動系統即可安裝/啓動/停止/更新/卸載軟件包。
  3. 您想要做這些事情來管理捆綁的生命週期。一個人不需要動態地使用OSGi。您可以將其用於模塊化和服務,而只需在開始框架之前預先安裝捆綁軟件。
4

我的一個模塊的定義是封裝(即它隱藏內部細節),其與通過合同一個(即預定義的一組可能的相互作用的)其他模塊通信的單元。 JAR文件不是模塊,因爲它不具備這些屬性。沒有封裝,所有內部實現細節都可以從外部看到和訪問。沒有合同,只需將JAR文件放在classpath中,並希望它提供您所需的功能。

動態表示可以在運行時期間安裝,升級或卸載OSGi軟件包(模塊)。這對於升級正在運行的系統或將軟件有效地部署到大型網絡非常有用。

必須安裝軟件包,因爲在使用軟件之前必須安裝軟件。 JAR文件也必須安裝!只有安裝方式略有不同,即將JAR文件添加到類路徑中,而使用install命令安裝捆綁軟件(也可以通過腳本或API調用)。 OSGi給我們更多的控制這個過程。

2

除了捆綁的方面作爲真正的模塊,這在所有其他的答案被處理,還有其他一些功能,使OSGi的非常強大:

  1. 服務層使您在運行時動態連線對象。與declarative services相結合,您將得到一個非常強大且靈活的編程模型,其所有好處爲IOC
  2. Extender Model提供了一種更高級別的IOC,並且可以爲可擴展性創造巨大的好處。