如何构建java桌面应用程序运行时模块?

时间:2014-11-08 21:24:17

标签: java eclipse osgi javafx-8 equinox

我有一个java桌面应用程序,我想在我的应用程序中添加插件/插件支持功能

搜索后我看到Blender3D插件非常好只是将一些文件复制到Blender目录并在首选项窗口启用它然后插件可以添加新引擎,菜单,按钮和面板.....我喜欢这种风格并且想要在我的应用程序中有这样的东西,在发布主应用程序后用插件开发它

我找到OSGi,但无法理解如何在我的主应用程序中使用通过此功能创建的插件?!而且我也不想使用Eclipse RCP或Netbeans RCP,我想将此功能添加到我当前使用javafx for gui的主应用程序。

感谢,

2 个答案:

答案 0 :(得分:1)

看一下java reflection api

java.lang.reflect.Method等。

还了解接口和抽象类的用途。您可能希望让您的插件api为一个或多个抽象类提供一个或多个接口,以作为实现扩展的具体基类。

实际jdk中的一个很好的例子是jdbc api。它是完全由插件驱动的(你要求DriverManager为给定的URI实例化一个驱动程序,它处理编组实现,它隐藏在接口和抽象类之后)。

欢呼声

答案 1 :(得分:0)

一个相当古老,但仍然非常好的例子,因为它确实是你想要做的事情,the Apache Felix Application tutorial

在您掌握了这些概念之后,您可能需要查看OSGi enRoute以了解我们在OSGi中拥有的新设施。