2009-10-23 174 views
57

我們正在嘗試確定如何爲我們正在實現的服務實現一個簡單的插件框架,以允許不同類型的計算器「插入」。Java插件框架選擇

閱讀有關Java插件框架柱的number,這似乎是最常用的選項後是:

OSGI似乎比我們需要的更多。

「滾動你自己」是可以的,但重用一個公用庫會很好。

所以我們下到JPF和JSPF。 JPF似乎不再積極發展。

JSPF看起來非常簡單,而且真的是我們所需要的。但是我沒有聽說太多。我只在StackOverflow上看到過一個post。其他人有沒有使用JSPF的經驗?或者有關此設計選擇的其他評論?


更新:不一定有一個正確答案的..但是我們會用帕沃爾的主意,因爲我們僅僅需要一個非常非常簡單的解決方案。感謝EoH的好指導。

回答

29

如果你打算只有一個(或者只有幾個)不是很複雜的'擴展點',那麼可能是一個明確定義的SPI和一個配置可能就足夠了。不需要使用插件框架。

通過一塊配置我的意思是一些機制來找到你的插件。例如像META-INF/services/之類的東西,或者簡單地將您的插件列入配置文件。

更多細節(根據要求):

SPI = Service Provider Interface,一個 「執行者側當量的API的」。要了解更多信息,請嘗試搜索API和SPI之間的區別。然而,在這種情況下,它只是插件實現接口的一個奇特術語(即爲您的插件定義合同)。

Ethan Nicholas的一篇很好的短文「Creating a Service Provider Interface」描述瞭如何以類似的方式創建自己的SPI,就像在Java平臺本身的幾個部分中完成的那樣。

META-INF/services/可以看作是一種更廣義的創建SPI的方法。更多信息可在JAR File Specification的相應部分找到。

+0

API還是SPI?什麼是SPI? – Egwor 2009-10-25 11:15:34

+0

我們只有一個(或最多幾個)直接擴展。你能詳細說明你的想法嗎? – 2009-10-25 13:30:32

+0

對不起,遲到的回覆。我已經更新了我的原始答案和更多細節。 – 2009-10-30 20:21:08

43

(聲明:我是JSPF的作者,所以還是聽從我的意見與鹽;-)一粒

我開始與JSPF主要的原因是因爲我有同樣的問題,因爲你現在有:我正在尋找一個簡單的解決方案,使我的論文項目1)可擴展,並且2)給它一個或多或少明確的代碼結構。

我之所以沒有決定使用現有的框架,是因爲它們中的大多數都是如此重量級開始,我迷失在閱讀文檔中,幾乎忘記了我原來的任務。因此,根據你的陳述

我們正在試圖確定如何 實施,我們正在實現 服務一個簡單的插件框架 允許不同類型的計算器 的是「插入式」。

我想你可以給JSPF一個鏡頭,看看你在一兩個小時內會有多遠。

然而,最終的決定還取決於你想要達到的目標以及具體情況。

我聽到了一些使用它來構建項目或在項目中加載插件的個人的積極結果。另一方面,我也知道我們系的一個人再次拋棄了它,因爲他覺得自己並沒有和他的編程風格相配合。

因此,簡要地回答你的問題(並可靠地在偏置方式),我會用

的OSGi對項目和團隊

  • 大且有許多人做這個工作
  • 這證明需要的具體服務建立基礎設施
  • 的開銷提供

JPF對項目和團隊

    中等大小的
  • (?,說實話我不知道關於項目/團隊規模,他們的目標)
  • 這是需要更加結構化的設施,舉辦他們的代碼,比如XML配置,詳細的插件生命週期管理,可擴展的插件......

JSPF對項目和團隊

    小尺寸的
  • ,下面的敏捷範式
  • ,只是需要的東西開箱的,無需配置或安裝的
  • 爲了簡單而願意犧牲某些功能

我希望你找到最適合你的場景的插件框架。而且,無論您嘗試什麼,我都會很樂意聽到您的結果。

+3

有沒有人使用過JSPF在生產? – 2013-02-20 07:04:05

+0

有沒有人有JSPF的簡單例子?我想了解「選項」功能。 – capovawi 2014-03-14 09:43:06

+4

是否棄用jspf? – wener 2014-09-15 11:13:43

2

如果您需要一個非常簡單的解決方案,請嘗試jin-plugin。這是一個Java和PHP的簡約插件框架。