OSGi笔记(3)--模块化

模块化是OSGi框架的主要部分之一,说到模块化,主要还是指bundle,以及对bundle之间关系的处理。

bundle的主要组成部分就是类(class)文件,class文件是bundle的可执行部分。在java中,类文件被组织到包里,每个包都有唯一的名字。

限制类仅对本地访问(私有bundle)是最简单的解决方法。

共享类使得bundle包含一些给其他bundle的库。可以依赖本地功能(或是根据需要下载)使得bundle可以更灵活和更小巧,从这个角度来看,
共享类是最好的解决。

然而,共享类意味着多个bundle可以提供同一个类,潜在的导致不同bundle中同一个类的版本不兼容问题。一个相关的问题就是对其他bundle的依赖。同样也有可能不同套的bundle使用同一个类,但需要该类的不同版本。OSGi用严格的规范和确定的方式来处理所有这些问题。

每个bundle都可以输入输出包(packages)。输出意味着这个包(一系列类)可以被其他的bundle使用。输入意味着需要使用的这个包是来自其他bundle的。如果多bundles同时输出相同的包(可能是不同的版本),则框架将为每个输入该包的bundle选择一个合适版本。

一个输出的package总是有唯一的版本。而输入者可以指定一个可以接受的版本范围。Framework尽力最小化输出的数量,但它支持同一个类的多版本的多类空间可以在同一时间使用。为了防止冲突,Framework要确保bundle注意获取class cast Exception.<o:p></o:p> <o:p>
</o:p>
如果bundle输出一个java包,后来这个bundle被卸载了,OSGi Framework确保输入者都重起,以便它们能够和新的输出包绑定。这整个过程对bundle而言是透明的,因为是在它们停止的时候进行的。<o:p></o:p>

JVM中为多个独立的bundle管理java类导入是很重要的任务。这个复杂领域里不同厂家的依从关系是由特定的小细节来完成的,这是OSGi Framework在所有情况下必须要做的。<o:p></o:p>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值