1

我正在为 Java 应用程序编写插件 API,其想法是最终第三方将为应用程序提供他们自己的插件扩展,而用户需要做的就是将插件 jar 放入应用程序的插件目录中。对于不耐烦的人,简而言之,我的问题是当插件与系统上的 API 不同时,如何处理可能的版本冲突,请参阅下文了解我的情况和我的想法的详细信息。

我已经阅读了许多使用服务提供者接口的文章,并且有一些与之相关的东西。当考虑如何处理不同的版本组合时,问题就来了。

我知道在向 API 添加扩展接口时添加扩展接口而不是更改现有接口的技术(例如,具有 MyInterface 的 API 1.0、使用新方法添加 MyInterface2 的 API 1.1 等)。使用这种技术,如果用户拥有最新的 API,那么旧的插件应该可以正常工作,但是如果用户拥有旧的 API 和更新的插件会发生什么?

因此,作为一个示例,用户只有带有 MyInterface 的 API 1.0,但安装了针对 API 1.1 编译的二进制插件,其中提供程序类实现了 MyInterface2。虽然应用程序可能只使用 MyInterface 调用插件,但如果插件在内部调用 MyInterface2 会发生什么?这是否会导致错误或异常以及何时(即加载类或调用 MyInterface2 的方法时)。这个标准也是跨 JVM 的,还是可能因使用的 JVM 而异?

最后,使用插件框架会更好吗,可以检查版本要求吗?搜索互联网,我在 github 上找到了 PF4J。快速查看源代码似乎表明它可能支持某种版本检查。

4

0 回答 0