基于插件的Java应用程序设计

5
我正在尝试制作一个基于插件的应用程序,这意味着除了基本框架之外,其他功能应该以插件方式添加。
这种系统的主要问题在于如何在运行时加载新插件。我不想在安装新插件时重新编译整个项目。就像Eclipse一样,在安装新插件后,用户只需要重启它。
因此,我第一个想法是使用Java反射在运行时加载类。可能会有一些插件配置文件,系统读取它们并使用反射加载插件类。也许我还可以使用Spring框架,因为它的控制反转正好符合我的要求。
我正在研究的另一个想法是使用EJB容器。当插件是EJB时,我可以将它们打包成JAR并部署到EJB容器中,然后可以使用JNDI来访问它们。但这仅适用于插件是EJB的情况。
总之,我对系统设计还是个新手。所以我发布了这个话题,并希望听取您的意见。顺便说一下,您有没有关于系统设计的好书推荐?
非常感谢!

“我想听听你的意见”不是一个好问题,请尽量更具体一些。 - Cephalopod
1
看一下 Class.forName()。 - Adriaan Koster
2个回答

2

你可能首先要了解OSGI及其实现(Eclipse的Equinox和Apache Felix),但如果你能提供更多你想要做的事情的信息,那会更容易些。


1
插件解决什么问题?
框架设计人员通常具有深入的领域知识,这些知识影响他们的设计选择。框架是在尝试两次或三次解决某些问题后产生的;早期的实现提供了将重要内容抽象成框架的线索。
Eclipse 解决了可扩展 IDE 的问题(在我看来做得不太好)。EJB 是运行在容器中的事务性分布式组件。
你没有给出想要解决什么样的问题的任何提示。在你这样做之前,你的想法不会走得很远。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接