你会如何实现一个插件系统Java应用程序?

是否有可能有一个易于使用(开发人员)的系统实现了以下:

  • 用户把他们插入一个子目录的程序
  • 插件可以提供一个配置屏幕
  • 如果你使用一个框架,许可兼容的商业开发的?
有帮助吗?

解决方案

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

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

插件的作者然后应束他们的插件进入罐子的文件。你的应用打开罐子文件和随后可能使用的一个属性,从罐子清单或清单的所有文件在罐子里的文件找到的类实现了你的插件接口。实例,类,插件已经准备就绪。

当然你也可能想要实施某种类型的沙盒以便插件被限制在什么可以和不可以做。我已经创建了一个小小的 测试的应用程序 (及 博客它)是由两个插件,其中之一是拒绝访问当地资源。

其他提示

使用 访.

它的基础蚀插件系统。 春分 是蚀的执行情况(许可EPL)和 菲利克斯 是Apache项目的执行情况(许可Apache用公共许可证).

日食提供了一个具体的例子,访可以掩盖你所提到的(或者你们可以生成应用程序上的 日食RPC 如果你想要一个完全日食/他/JFace stack)。

因为1.6,有过 java。工具.ServiceLoader 这可以使用,如果你想要代码你自己简单的系统。

但如果你想要任何东西比基本功能,使用现有的一个框架。

我曾在访一周--一个强烈,没有什么但是访周。在结束它就像一个恶梦但我学到了很多。

我能得到访的工作(并不容易,所有的实例是过时了,一切都在网上至少三岁的时候如果没有五个),但我不得不严重的麻烦,它综合到现有的项目,因为问题与罐体现。

总之,只有几个模糊的工具,用于建筑物清单的和他们是不好的记录(文莱的工具几乎是模糊的,但它是专为某一工艺在日食).此外,大多数访信息不是专门针对应用程序开发者们有一个现有的桌面应用程序。

这使得很多的背景信息雾或不适当的。尼尔*巴特利特的博客是最大的帮助,但即使是那些未能得到系统的工作(我抓住了一些代码自费利克斯教程和拼凑在一起,获得嵌入式框架的滚动).我找到了他的书草案,他发布免费的年前,这是良好的,但实例在日食不起作用,因为改变蚀访的支持。

每一步都是一个主要障碍。我将尝试后一些更多的详细信息在这里以后。

使用 PF4J.它支持网络、弹簧和检票口。容易使用,并建立应用程序

我认为,建议访于解决上述问题是极端贫困的建议。访是"正确的选择",但对于一个情形作为一个上所述,我认为无论是JPF或一些自产自销的简约的框架是足够的。

几年前,我开始了一个项目,我希望很快将准备。我的灵感来自项目已蚀但与此同时,它改变了的东西有点不同。访看起来像一个好的选择,但是我没有机会将它与我的项目。它是相似的与JPF上所述,但在同一时间的不同在很多方面。

基本的想法,这促使我是那么容易,因为可能建立Java应用程序,没有分离之间的网络应用程序,桌面应用程序或小程序/耶和华见证应用程序(当然这并不复盖UI-但)作为一个核心功能。

我建立该项目与几个目标在我的心灵:

  • 不要紧,如果建立一个网络应用程序或桌面应用程序,则应启动申请相同的方式,一个普通的主要方法,没有花哨的web.xml 《宣言》(不,我反对具有一个标准的网描述,但是它不好用一个插件系统,在其中添加"servlet"-我叫他们RequestHandler(s)动态在你会)。
  • 易于插入"扩展"周围"扩点"的东西从蚀但一个不同的方法。
  • 自部署,因为所有的插件登记(XML文件)的应用程序必须是自部署的独立建立的系统当然有一只蚂蚁的任务和一家魔咒的链接,与我们那边的世界,但最终它要求的应用程序,并指示它自部署本身在一个特定的位置。
  • 借用专家,可以下载码从仓库(包括玛文1和2存储库)所以你的应用可以部署为一个单一的小罐子里只要你有机会获得储存库(用的某个时候,基本上,这提供了支持自动更新-你不喜欢这个想法通知你的网页应用程序,那里是一个较新的版本,它载的它只是需要你的允许安装吗?我知道我喜欢那)。
  • 基本的应用程序的监测系统有关健康、电子邮件通知的情况下故障
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top