"osgi in practice"
本书《OSGi in Practice》由Neil Bartlett撰写,发布于2009年1月11日,主要探讨了OSGi(Open Service Gateway Initiative)技术及其在实际开发中的应用。书中内容涵盖了OSGi的基本概念、问题、解决方案以及与JARs、J2EE类加载器的对比,并介绍了如何开始使用OSGi。
1. OSGi基础
- 模块系统:OSGi的核心是模块化,作者在第1章介绍什么是模块,解释了模块系统对于软件工程的重要性。
- JARs的问题:JARs作为Java应用程序的打包方式,存在一系列问题,包括类加载器的全局类路径问题、类冲突、缺乏显式依赖、版本信息不足以及无法在JARs之间实现信息隐藏。
1.1 J2EE类加载
书中讨论了J2EE环境下的类加载机制,指出它与OSGi的差异。
1.2 OSGi:简单理念
- 从树到图:OSGi将类的依赖关系从静态的树状结构转变为动态的图结构,允许更灵活的依赖管理。
- 信息隐藏:OSGi包(bundle)提供了一种信息隐藏机制,增强了代码的封装性。
- 版本控制:OSGi支持并行版本,使得不同版本的库可以同时存在并互不影响。
1.3 动态模块
OSGi的模块系统是动态的,这意味着模块可以在运行时安装、启动、停止和卸载,提供了高度的灵活性。
1.4 OSGi联盟与标准
OSGi Alliance制定了一系列标准,推动了OSGi的规范化发展。
1.5 OSGi实现
书中提到了一些OSGi的实现,如Equinox和Felix,它们是OSGi规范的具体实现。
1.6 OSGi的替代方案
- 构建工具:Maven和Ivy等工具可以解决部分模块化问题,但它们并不是完整的模块系统。
- Eclipse插件系统:虽然Eclipse有自己的插件模型,但它并非完全符合OSGi标准。
- JSR277:这是一个试图标准化Java模块化的Java Specification Request,但与OSGi有区别。
2. 开始使用OSGi
- 包建设:作者详细讲解了如何构建OSGi bundle,这是使用OSGi的第一步。
- OSGi开发工具:推荐了Eclipse PDE(Plugin Development Environment)和bnd等工具,用于简化OSGi开发过程。
- 安装框架:指导读者如何安装和配置OSGi框架,如Felix。
- 设置Eclipse:提供配置Eclipse以支持OSGi开发的步骤。
- 运行Felix:演示了如何启动Felix框架。
- bnd安装:解释了bnd工具的安装过程。
- "Hello, World!"示例:通过一个简单的示例,引导读者开始OSGi编程。
《OSGi in Practice》深入浅出地介绍了OSGi的概念和实践,旨在帮助开发者理解OSGi的优势,克服传统Java开发中遇到的问题,以及如何利用OSGi实现更高效、更灵活的模块化系统。