【问题标题】:Java plugin framework choice [closed]Java插件框架选择[关闭]
【发布时间】:2010-12-09 11:51:16
【问题描述】:

我们正在尝试确定如何为我们正在实施的服务实施一个简单的插件框架,该服务允许“插入”不同类型的计算器。

在阅读了number 有关 Java 插件框架的帖子后,似乎最常见的选项是:

OSGI 似乎超出了我们的需要。

“滚动你自己的”是可以的,但重用一个公共库会很好。

所以我们只剩下 JPF 和 JSPF。 JPF 似乎不再处于积极开发中。

JSPF 看起来很简单,而且确实是我们所需要的。但是我没有听到太多关于它的消息。我只在 StackOverflow 上看到过一个 post。有没有其他人对 JSPF 有任何经验?或者这个设计选择上的任何其他cmets?


更新:这不一定是正确的答案。但是我们将采用 Pavol 的想法,因为我们只需要一个非常非常简单的解决方案。感谢 EoH 的精彩指南。

【问题讨论】:

    标签: java osgi plugin-architecture


    【解决方案1】:

    (免责声明:我是 JSPF 的作者,所以最好对我的评论持保留态度;-)

    我开始使用 JSPF 的主要原因是因为我遇到了和你现在一样的问题:我一直在寻找一个简单的解决方案来使我的论文项目 1) 可扩展 2) 给它一个或多或少清晰的代码结构体。

    我没有决定使用现有框架的原因是因为它们中的大多数一开始就非常重量级,以至于我在阅读文档时迷失了方向,几乎忘记了我最初的任务。所以,根据你的说法

    我们正在尝试确定如何 实现一个简单的插件框架 对于我们正在实施的服务 允许不同类型的计算器 被“插入”。

    我认为您可以试一试 JSPF,看看您在一两个小时内能走多远。

    但是,最终决定还取决于您到底想要实现什么,以及具体情况。

    我从许多人那里听到了积极的结果,他们一直在使用它来构建他们的项目或在他们的项目中加载插件。另一方面,我也认识我们部门的一个人,因为他觉得这与他的编程风格不太协调,所以又把它扔掉了。

    所以,为了简短地回答你的问题(肯定是有偏见的),我会使用

    OSGi 用于项目和团队

    • 它们很大并且有很多人在工作
    • 证明设置基础架构的开销是合理的
    • 需要提供的具体服务

    JPF 用于项目和团队

    • 中等规模(?,老实说,我不确定他们所针对的项目/团队规模)
    • 需要更多结构化工具来组织代码,例如 XML 配置、详细的插件生命周期管理、可扩展插件...

    JSPF 适用于项目和团队

    • 体积小,遵循敏捷范式
    • 只需要开箱即用的东西,无需配置或设置
    • 愿意为了简单而牺牲一些功能

    希望您找到最适合您的场景的插件框架。而且,无论您尝试什么,我都会很高兴听到您的结果。

    【讨论】:

    • 有人在生产中使用过 JSPF 吗?
    • 有没有人用 JSPF 举个简单的例子?我想了解选项功能。
    • jspf 被弃用了吗?
    【解决方案2】:

    如果您计划只有一个(或几个)不太复杂的“扩展点”,那么一个定义明确的 SPI 和一个配置可能就足够了。无需使用插件框架。

    通过配置,我的意思是一些机制来找到你的插件。例如META-INF/services/ 之类的东西,或者只是在配置文件中列出您的插件。

    更多详情(根据要求):

    SPI = Service Provider Interface,“API 的实现端等效项”。要了解更多信息,请尝试搜索 API 和 SPI 之间的区别。然而,在这种情况下,它只是一个由插件实现的接口的花哨术语(即定义插件的合同)。

    Ethan Nicholas 撰写的一篇不错的简短文章“Creating a Service Provider Interface”描述了如何以与在 Java 平台本身的多个部分中类似的方式创建自己的 SPI。

    META-INF/services/ 可以看作是一种更通用的创建 SPI 的方法。更多信息可以在JAR File Specification的相应部分找到。

    【讨论】:

    • 我们只有一个(或最多几个)直接扩展。你能详细说明你的想法吗?
    • 抱歉回复晚了。我已经用更多细节更新了我的原始答案。
    • 知道了。这是一个很好的简单解决方案。谢谢。
    • Ethan Nicols 的文章“创建服务提供者接口”现在可以在以下位置找到:community.oracle.com/blogs/enicholas/2006/04/07/…
    【解决方案3】:

    如果您需要一个非常简单的解决方案,请尝试jin-plugin。它是 Java 和 PHP 的简约插件框架。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      • 2012-07-30
      • 2013-06-09
      • 1970-01-01
      • 2010-10-13
      • 2012-03-04
      • 2013-07-15
      相关资源
      最近更新 更多