繁体   English   中英

开发人员如何使Java项目“可扩展”?

[英]How to make a Java project 'extendable' by developers?

我正在使用服务器引擎,但不确定以什么形式分发它。 它是非常模块化的,并且使用接口/抽象类。

应该是:

  • 一个库(没有入口点,编写您自己的main()并调用new Server().setSomeHandler(myHandler).run()

  • 二进制文件(带有配置文件的可执行入口点,您可以在其中使用处理程序注入JAR)

  • 还有什么吗

基本上,开发人员应该能够完全扩展或更改服务器的工作方式。 我不喜欢将它做成一个库,因为它本身应该是一个平台,也应该是整个服务器系统。

提供编程方式比仅可执行文件更具通用性。 两种方式也不是互斥的。 毕竟,即使开发人员提供了处理程序,您在内部可能仍需要调用示例中的setter之类的东西才能实际使用该处理程序。 公开该API应该不会太困难。 如果需要,您仍然可以提供一个小的启动器应用程序,该应用程序可以加载一些配置文件并将其包装在一些API调用中。

更为重要的问题是,是否存在预定义的扩展点,开发人员可以在其中插入自己的实现,或者所有内容都是完全模块化和可交换的?

对于提供预定义接口的实现的简单方法,可以使用ServiceLoader / SPI机制。 您可以使用它构建一个基本的插件系统。

如果要创建平台,则OSGi之类的东西似乎更合适。 在这里,您可以为细粒度的组件/服务定义API / SPI。 然后,开发人员可以提供自己的模块来扩展服务器,甚至替换您的默认模块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM