《OSGi 原理与最佳实践》书评

  • 金明

2009 年 10 月 19 日

话题:Java开源架构Book ReviewDevOps语言 & 开发

这不是一本传授 OSGi 高级技巧的书,但绝对是一本让人读完之后能对 OSGi 获得全面认识的书。不同于前两篇 opensource 文档,作者在这本书里面试图给读者一个全方位的 OSGi 介绍。

在第一章“OSGi 简介”里面,作者解释了 OSGi 解决的问题以及其中涉及的一些基本概念。Java 里面并没有提供模块的概念,也不存在通用的插件体系结构。在这种情况下,OSGi 应运而生,其主要职责就是:

让开发者能够构建动态化、模块化的 Java 系统,使用 OSGi 后,应用就可以像搭积木一样的来完成搭建

为了便于后面章节的介绍,作者在这一章里面对 OSGi 的基本概念和名词做了一番简单地解释。

接下来的几章(从第二章到第十章),作者主要从如下几个部分进行阐述:

  • OSGi 框架应用示例
  • OSGi 规范解读
  • OSGi 框架实现分析

在“OSGi 框架应用示例”部分,作者结合 eclipse,对如何使用各种不同的 OSGi 框架一一做了细致入微的说明,花了不少篇幅讲解 OSGi 框架的设计思想。如何才能使用 OSGi 框架提供的模块化和动态性,在设计系统的时候就需要考虑如下几点:

  • 模块化的设计
  • 面向服务的组件模型的设计
  • 动态化的设计
  • 可扩张的设计

为了说明这些设计思想,作者使用 Spring-DM 实现了经典的 JEE 示例项目——petstore,并按数据库设计-> 模块分析 -> 模块设计的过程展现了一个使用 OSGi 构建新系统的完整过程。

在第四章,考虑到分布式应用系统的需求,作者对 Distribute OSGi 也做了一番介绍,并通过几个例子解释了 DOSGi 的推荐实现 Apache CXF。

Apache CXF 通过 Web service 的方式实现了分布式 OSGi 的请求调用,并且是通过 WSDL 对外暴露了 Web Service。

第五章介绍了 OBR 的使用背景,作者就 Apache Felix 提供的 OBR 实现进行了介绍。

在“OSGi 规范解读”部分,作者回顾了 OSGi 规范的发展历程,就最新的 V4.1 规范详细地探讨了细节问题:

OSGi 规范从 4.0 以后明确的分为 Core 和 Service 两部分组成,其中 Core 是保证 OSGi 能够做到模块化、动态化的规范,也是 OSGi 框架必须实现的,而 Service 则是可选的,其用于扩展提供一些常用的功能,以方便开发人员进行使用,例如 Http Service、Log Service

在讨论过程中,作者详尽解释了 classloader 的继承体系结构。

在接下来的“OSGi 框架实现分析”部分,作者针对已有的 OSGi 框架——Equinox、Felix、Spring-DM 和 CXF,分别按照下面的思路做了解释:

  • 模块化
    • 加载并解析 Jar 为 Bundle
    • Bundle 类共享以及类加载机制
  • 动态化

在介绍这些理论实践的同时,作者在第十一章和第十二章对 OSGi 的近况和前景也做了分析,介绍了 OSGi V4.2 草案激动人心的特性,以及 OSGi 的改进前景。

随着这几年 OSGi 的迅猛发展,国内开发人员对 OSGi 的热情也是与日俱增,但与此相背离的却是现实中还没有出版一本介绍 OSGi 的书籍,遑论全面讲解 OSGi 原理和实践的书了。这本书很好地填补了这个空缺。

InfoQ 中文站亦推出了《OSGi 原理与最佳实践》的精选版,欢迎大家免费下载

Java开源架构Book ReviewDevOps语言 & 开发