你将如何为Java应用程序实现插件系统?
是否有一个易于使用的(对于开发人员而言)系统可以实现以下目的:
首先,你需要一个所有插件都需要实现的接口,例如
public interface Plugin { public void load(PluginConfiguration pluginConfiguration); public void run(); public void unload(); public JComponent getConfigurationPage(); }
然后,插件作者应将其插件捆绑到JAR文件中。你的应用程序将打开JAR文件,然后可以使用JAR清单中的属性或JAR文件中所有文件的列表来查找实现你的Plugin接口的类。实例化该类,插件即可使用。
当然,你可能还希望实现某种沙箱操作,以使该插件在它可以做什么和不能做什么方面受到限制。我创建了一个小型测试应用程序(并向其发布了博客),该应用程序由两个插件组成,其中一个被拒绝访问本地资源。