当前位置:  开发笔记 > 编程语言 > 正文

使用Java构建插件系统的最佳方法

如何解决《使用Java构建插件系统的最佳方法》经验,为你挑选了7个好方法。

您将如何为Java应用程序实现插件系统?

是否可以使用易于使用(对于开发人员)系统,实现以下目标:

用户将他们的插件放入应用程序的子目录中

插件可以提供配置屏幕

如果您使用框架,许可证是否与商业开发兼容?

Bombe.. 103

首先,您需要一个所有插件都需要实现的接口,例如

public interface Plugin {
    public void load(PluginConfiguration pluginConfiguration);
    public void run();
    public void unload();
    public JComponent getConfigurationPage();
}

插件作者然后应该将他们的插件捆绑到JAR文件中.您的应用程序打开JAR文件,然后可以使用JAR清单中的属性或JAR文件中所有文件的列表来查找实现Plugin接口的类.实例化该类,该插件已准备就绪.

当然,您可能还希望实现某种沙盒,以便插件受限于它能够做什么和不能做什么.我创建了一个小型测试应用程序(并在博客上发布),其中包含两个插件,其中一个插件被拒绝访问本地资源.



1> Bombe..:

首先,您需要一个所有插件都需要实现的接口,例如

public interface Plugin {
    public void load(PluginConfiguration pluginConfiguration);
    public void run();
    public void unload();
    public JComponent getConfigurationPage();
}

插件作者然后应该将他们的插件捆绑到JAR文件中.您的应用程序打开JAR文件,然后可以使用JAR清单中的属性或JAR文件中所有文件的列表来查找实现Plugin接口的类.实例化该类,该插件已准备就绪.

当然,您可能还希望实现某种沙盒,以便插件受限于它能够做什么和不能做什么.我创建了一个小型测试应用程序(并在博客上发布),其中包含两个插件,其中一个插件被拒绝访问本地资源.


您提到的沙箱实际上是最困难的部分!但不要烦恼-osgi已经为您做到了,如上所述。

2> Aaron Maenpa..:

使用OSGi.

它是Eclipse插件系统的基础.Equinox是Eclipse的实现(许可的EPL),Felix是Apache Project的实现(许可的Apache公共许可证).

Eclipse提供了一个具体示例,OSGi可以涵盖您提到的要点(或者,如果您需要完整的Eclipse/SWT/JFace堆栈,则可以在Eclipse RCP之上构建应用程序).


我已经涉足OSGi,但从来没有找到一个非常好的入门.如果有人可以在这里推荐一些链接会很棒.
OSGi理想情况下是事实上的插件系统.但是,从标准Ja​​va到OSGi编程模型的飞跃相当广泛......

3> Pete Kirkham..:

从1.6开始,如果你想编写自己的简单系统,可以使用java.util.ServiceLoader.

但是,如果您需要的不仅仅是基本功能,请使用现有框架之一.



4> jan..:

还有JPF(Java插件框架).



5> Mallikarjuna..:

使用PF4J.它支持Web,Spring和Wicket.易于使用和构建应用程序



6> Sean Anderso..:

我在OSGi工作了一个星期 - 一个激烈的,只有OSGi周.最后它就像一个糟糕的梦,但我学到了很多东西.

我能够让OSGi工作(不容易,所有的例子都已经过时了,网上的一切都至少有三年,如果不是五年),但由于问题,我很难将它集成到现有项目中罐子清单.

简而言之,只有少数模糊的工具用于构建清单,并且它们没有很好的文档记录(BND工具很难模糊,但它是为Eclipse中的某个进程设计的).此外,大多数可用的OSGi信息不针对具有现有桌面应用程序的应用程序开发人员.

这使得信息的大量背景模糊或不合适.Neil Bartlett的博客文章是最大的帮助,但即使是那些未能获得工作系统的人(我从Felix教程中抓取了一些代码并拼凑起来以使嵌入式框架滚动).我找到了他多年前免费发布的书籍草稿,非常好,但是由于Eclipse OSGi支持的变化,Eclipse中的示例无效.

每一步都是一个主要障碍.我稍后会尝试在此处发布更多详细信息.


这是怎么回答的?这更像是对OSGi的咆哮,你甚至都没有解释OSGi是什么.

7> Steen..:

我认为推荐OSGi来解决上述问题是非常糟糕的建议.OSGi是"正确的选择",但对于上面的场景,我认为无论是JPF还是一些本土的简约框架都足够了.

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有