开篇 OSGi运行环境和参考资料:
参考资料:
OSGi联盟的官方站点:http://www.osgi.org/Specifications/HomePage
这儿可以找到OSGi规范的英文版本,以及OSGi规范的API。
OSGi R5中文版:优快云 不才的专栏正在翻译:
http://blog.youkuaiyun.com/wzumath/article/category/1936125
OSGi R4中文版:网上有范里程翻译,曹晓钢审校的版本
OSGi中文社区也是不错的参考:http://osgi.com.cn/
运行框架
可选Equinox,或者Felix。
Equinox是Eclipse的基础。Felix是Apache的实现。
Felix提供了对OSGi 核心框架R5的实现,目前最新版本是4.4
相对而言,我更喜欢Felix,更纯粹一些(外部耦合),开发很活跃(更新比较快),适合对OSGi的仔细梳理和理解。
Felix官方站点:http://felix.apache.org/
开发环境
开发环境可选Maven或者bndtools
关于开发环境的选择,可能各有利弊,考虑到对Maven或bndtools的熟悉程度,初步先选择Maven吧。此外,可能还有以下原因:
- l Maven中央仓库已经积累了大量的第三方JAR包,这些JAR可能是Bundle的、或者非Bundle的库。作为开发期依赖,这些库全部可以利用。而Bndtools开发期的库的依赖只能是Bundle。对于大量的非Bundle的库,需要加以改造。
- l 扩展性:Maven的插件体系方便扩展。
- l 不足1:相对于bndtools的构件自动打包,Maven的打包显得不方便。不过可以借助Eclipse快捷键执行Maven-Install动作,或者制作一个EclipseBuilder,来提供自动打包的功能,以弥补此处不足。
- l 不足2:对于Felix的运行,bndtools提供了一个比较方便的测试运行环境,并且通过对于运行Bundle的依赖分析,自动将依赖项加入运行环境中。对Maven而言,可以自行开发扩展实现可视化的运行环境配置以及依赖分析功能。
此外,作为核心的Manifest元数据生成,使用Maven或者bndtools没有区别,无论Maven-bundle-plugin或者bndtools,底层都是使用BND工具来分析class文件,生成bundle的Export、Import-Package信息。
另外提一下,BND是Peter Kriens写的一个Bundle文件生成库(核心是Manifest元数据的分析和生成,但不只限于此,比如还包括嵌入式资源处理等)。BND有大量的参数,可以参考其官方网站:http://www.aqute.biz/Bnd/Bnd
对于Peter Kriens,有媒体称作是OSGi的推动者之一,甚至称作OSGi之父。总之,是对OSGi发展有相当影响的人。infoQ上有一篇专访可以参考:
http://www.infoq.com/cn/articles/Peter-Kriens-Returns-To-OSGi-Alliance
其他的:
JDK选用1.6;
Eclipse选用4.3以上的JavaEE版本,已自带了Maven。
可选安装Subclipse插件、org.sf.easyexplore插件等。另外,推荐安装bndtools插件,主要使用其中的JARViewer来查看Manifest文件。