Fragment Bundle的实际用途

最近在研发兼容OSGi R4.1规范的运行环境 BOND(前身为MINIOSGi),发现 Fragment Bundle 用处很大,它可以使用在下面实际应用场景中:

 

1. 为其他Bundles进行扩展实现,类似于Java中接口(Host Bundle,以下称HB)和实现类(Fragment Bundle,以下称FB)的作用。例如 org.eclipse.swt_x.x.x 这个包,它是一个HB,导出的包名都是通用的包名,像 org.eclipse.swt.widget、org.eclipse.swt.graphics 等,附属于它的包有 org.eclipse.swt.win32_x.x.x、org.eclipse.swt.gtk_x.x.x等 FBs,用于对不同操作系统环境的提供SWT实现。

 

2. 程序国际化消息包,例如 一个 Bundle 如果使用了 ResourceBundle 来为其提供国际化文字,如果别人想加入自己本地语言的文字怎么办?答案是,创建一个附属于它的FB,并根据其主包路径放入消息文件。这么做的好处就是不用修改源Bundle内容,直接安装这个FB就能达到效果,真正的动态部署。如图:
 

附主 Bundle,只有一个 messages.properties 文件用于默认语言的显示。
 

附属 Bundle,提供了英文和中文两种语言的显示。

 

3. 作为Framework的扩展包,就是注入到OSGi运行环境中,为所有Bundles提供支持。

你可能感兴趣的:(eclipse,应用服务器,osgi)