为什么要引入bundle?我们常常需要把大型系统分解为多个较小的互相协作的逻辑单元,我们希望这些逻辑单元内部之间是互相不可见的,但同时我也要是这些逻辑单元对外提供一些接口供外部调用以协作完成我们的业务。这不就是面向对象吗?类似于封装一个类,同时提供一些外部可以访问的public方法。
但事实上大多数情况下这些逻辑单元是不可能通过一个类就能解决的,可能是多个类一起协作完成的,我们常常把这些类打包成一个jar包供外部调用,比如数据连接的jdbc jar包。传统的java更多的面向类的而非面向jar的,于是就产生模块化管理的一套标准协议(OSGI)。
那么到底什么是bundle,简单讲一个jar包就是一个bundle,里面包含:class文件,xml,jpg等资源文件,元数据文件(MANIFEST.MF)。实现模块化的关键是就是这个MANIFEST.MF文件,有了这个文件一个jar包就变成了一个bundle。
参考:http://osgi.com.cn/article/7289219
OSGI的bundle
时间: 2024-10-05 16:04:09