关于可插拔Java框架的设计问题
在过去的4年里,我在业余时间做了一个项目,目标有两个:作为一名软件工程师提高自己,以及构建(我希望)能够帮助我构建更快更好的Java应用程序的东西。我一直喜欢模块化的应用程序,所以我觉得有一个可插拔的框架也不错 因为我总是在构建东西之前先看(不需要重新发明轮子,对吗?),所以我在看Eclipse和NetBeans,但缺少了一些东西,它没有我想要的东西:关于可插拔Java框架的设计问题,java,plugins,frameworks,Java,Plugins,Frameworks,在过去的4年里,我在业余时间做了一个项目,目标有两个:作为一名软件工程师提高自己,以及构建(我希望)能够帮助我构建更快更好的Java应用程序的东西。我一直喜欢模块化的应用程序,所以我觉得有一个可插拔的框架也不错 因为我总是在构建东西之前先看(不需要重新发明轮子,对吗?),所以我在看Eclipse和NetBeans,但缺少了一些东西,它没有我想要的东西: Eclipse和NetBeans是客户端应用程序的优秀平台,是很好的插件系统,但是如何基于插件编写服务器端应用程序呢?客户端/服务器可插拔应用
- Eclipse和NetBeans是客户端应用程序的优秀平台,是很好的插件系统,但是如何基于插件编写服务器端应用程序呢?客户端/服务器可插拔应用程序如何
- 如果您只想编写一个小应用程序,那么就有点重了;另外,像Swing应用程序框架这样的东西对我来说太简单了(我不是在批评,这是编写Swing应用程序的一个很好的起点——它有一个小而简单的API)
- 不适合使用相同的API构建客户端、服务器端或客户端/服务器应用程序(双方的API并不完全相同,而是更统一的API)
- 基于插件的模块化设计
- 应用程序功能由服务提供,不同的插件创建和注册服务,这些服务提供特定的功能:模板、持久性、调度、作业/任务执行、安全性、自动更新等
- 应用程序在XML文件中描述,每个应用程序在多个模块中结构化,每个模块包含1..N个插件;插件在模块之间共享(基本上,一小部分插件创建应用程序核心,其余插件可以以某些方式区分应用程序,如不同的应用程序UI。当然,这仅对客户端有意义,在服务器端,所有插件都被实例化以提供对任何客户端类型的支持)
- 每个插件都加载在自己的类加载器中,并且有一个应用程序生命周期:加载插件、初始化插件(此时所有服务都已注册)、初始化服务、后初始化服务、后初始化插件、后初始化UI插件、后初始化UI插件、启动插件
- 每个插件都有自己的XML描述符文件来添加/注册/配置应用程序,有一个API允许通过XML轻松配置应用程序,类似于Apache Commons Digester
- 插件是从几个应用程序存储库加载的,与Maven解析依赖项的方式相同;还支持Maven 1和2存储库
- 5-10行内的自动应用程序部署(Ant任务)(基本上是2-3行-任务定义和调用-但有一些设置涉及如何更改应用程序布局-插件、库、引导库、应用程序启动脚本、应用程序数据等的放置位置)