这个东西其实在以前的OSCAR项目中是有的,而现在处于Apache沙箱中OSGi R4的实现Felix也准备构建这个了,构建OBR其实和构建Maven 2、Ivy这些的Repository没什么区别,解决的都是方便其他的使用者通过仓库直接下到所需要的东西(OBR中提供的是Bundle、Maven2、Ivy中是jar),最大的好处在于下载的Bundle或jar会根据其元数据信息去下载其所依赖的其他的Bundle或jar,这就大大方便了使用者了。
构建OBR自然就对OSGi实现框架提出了要求,框架中必然需要有支持远程下载的方式的命令(如FELIX现在定义的obr),而在OSGi的规范中目前是没有这部分的东西的,也许在将来会考虑加上吧,这个无所谓,只要有框架去实现了,其他的框架即使没实现,也可以通过安装上这个Bundle来获取这样的功能,其实我觉得这个就像我以前所想的,一站式解决方案,很方便,呵呵,假设我以后需要安装一个CMS,就可以象现在N多的linux中敲一个apt -get bluedavy-cms,哈哈,多爽,当然,最好就是还有网站提供能够让我备份我系统中所有软件的配置,以后我要装机器就只要跑到这个网站选择bluedavy的windows 2003或者bluedavy的Ubuntu,只要网络允许的情况下很快就可以装好了,呵呵......
另外一个问题是自动解决依赖的问题,大家知道,jar包中是没有写需要依赖其他什么jar包的信息的,Maven 2、Ivy为了解决这个问题都是在外部增加了xml文件来描述jar包的依赖,这个带来的好处就是假设我们现在要在项目中使用hibernate,就只需要直接从Maven 2、Ivy的仓库中直接下Hibernate就可以了,而至于hibernate所需要依赖的包Maven 2和Ivy则会自动的下载过来,对于OSGi的Bundle来说就比较好办了,因为OSGi的Bundle本来就在Manifest.MF文件中描述了当前Bundle的依赖信息,所以对于构建OBR来说不会太困难,而Maven 2、Ivy的仓库在构建的时候的麻烦就在于手动写那个标识jar包元数据的xml文件。
OBR的构建还是很有必要的,鉴于FELIX的进度,TPF将先实现远程下载Bundle的这个功能.......