2007-04-02
OSGi笔记(3)--模块化
关键字: OSGi
模块化是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.
如果bundle输出一个java包,后来这个bundle被卸载了,OSGi Framework确保输入者都重起,以便它们能够和新的输出包绑定。这整个过程对bundle而言是透明的,因为是在它们停止的时候进行的。
在JVM中为多个独立的bundle管理java类导入是很重要的任务。这个复杂领域里不同厂家的依从关系是由特定的小细节来完成的,这是OSGi Framework在所有情况下必须要做的。
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.
如果bundle输出一个java包,后来这个bundle被卸载了,OSGi Framework确保输入者都重起,以便它们能够和新的输出包绑定。这整个过程对bundle而言是透明的,因为是在它们停止的时候进行的。
在JVM中为多个独立的bundle管理java类导入是很重要的任务。这个复杂领域里不同厂家的依从关系是由特定的小细节来完成的,这是OSGi Framework在所有情况下必须要做的。
- 16:33
- 浏览 (2519)
- 评论 (5)
- 分类: 学习笔记
- 发布在 Eclipse PlugIns&RCP&OSGI 圈子
- 相关推荐
评论
hatalf
2007-07-16
现在做到OSGI和HIBERNATE整合这块了,郁闷的很,由于2个classload运行在不同的JVM的缘故,老是找不到类.OSGI好是好,但是由于做的过程中老出现问题,要么和这个结合不好,要么和那个不能互相调用,唉....总以为要正常整合的时候突然出个大问题又要慢慢来...时间啊....都被错误冲走了...
mochow
2007-07-10
我看的就是英文的,OSGI自己的文档。不过发现还是有技术人员的老毛病,写概要写着写着就深入到编程细节去了,没有全局观。
hatalf
2007-07-09
刚刚把项目用到OSGI里,结合tomcat做的~希望有时间能写点东西上来呵呵~ 建议多看英文资料。。。那个中文的。。。我寒。。IBM的和equinox的都比较不错~还有neil的blog~peter的,都是学习的好地方!
mochow
2007-06-25
hatalf
2007-06-22
没次的内容有点少,而且不够到位,建议你看看勤劳的蜜蜂的blog上对OSGI的讲解,我个人对你的笔记(1)比较赞赏,希望继续!最好是写出一个实际的例子来慢慢分析,代码少点就比较好.







评论排行榜