模块化必须考虑到模块中的类的导出,隐藏,依赖,版本管理,生命周期变化和模块之间交互等一系列问题。
OSGI弥补Java中资源精细划分的缺陷,加强架构的自约束力(例防止跨service直接调用dao)
会引导程序员开发出可积累可重用软件
比较容易实现强鲁棒性系统
可以做到动态修复缺陷
允许不同版本的Package同时存在,客观上会占用内存
缺点:对系统性能损耗(osgi类加载层次比普通Java应用要深,需要经过更多次类加载委派才能找到,在两个互相依赖的模块发送调用容易死锁,避免出现有时要选用性能损失的串行化加载策略,动态性决定了应用不能缓存服务对象)