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

发布于:2009 年 10 月 19 日 03:18

七牛云 CEO 许式伟,首次分享完整架构经验,带你解读常见业务场景的架构范式,戳此学习 >>

这不是一本传授 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 原理与最佳实践》的精选版,欢迎大家免费下载

阅读数:1536 发布于:2009 年 10 月 19 日 03:18

更多 Java、开源、架构 相关课程,可下载【 极客时间 】App 免费领取 >

评论

发布
暂无评论
  • 详解 Service Mesh 的事实规范

    第二代 Service Mesh 除了使用 SideCar 代理作为数据面板来保障数据可靠性传输外,还通过独立的控制面板做到对服务的遥测、策略执行等精细控制。

    2018 年 3 月 20 日

  • 开源文档《OSGi 进阶》发布暨作者访谈录

    Bluedavy在去年发布了名为《OSGi 实战》的开源文档后,又于近日发布了此系列的第二篇:《OSGi 进阶》。InfoQ中文站就这次发布邀请Bluedavy对文档的写作背景、OSGi的设计理念及当前的应用现状进行了访谈。

    2007 年 10 月 14 日

  • 采用 OSGi 框架开发项目的十个问题

    Java社区领袖Adam Bien认为,从技术角度讲,OSGi的确是实现模块化的可行办法,但OSGi的主要挑战不是技术,而是模块和bundle的管理。他建议在决定采用OSGi框架开发项目之前考虑10个重要问题。

    2010 年 3 月 11 日

  • 实战(四):“画图”程序后端实战

    基于 OpenID Connect 协议来提供帐号系统,基于 OAuth 2.0 协议来实现 Open API 体系。

    2019 年 9 月 24 日

  • OSGi 原理与最佳实践(精选版)

    这不是一本传授OSGi高级技巧的书,但绝对是一本让人读完之后能对OSGi获得全面认识的书。作者在这本书里面试图给读者一个全方位的OSGi介绍。本精选版节选了其中的两章。InfoQ中文站就这次出版邀请BlueDavy对OSGi的近况、在具体项目上应用OSGi应该注意的问题和解决方法,以及如何在OSGi开发过程中结合使用敏捷实践的问题进行了一番访谈。

    2009 年 10 月 16 日

  • 课程介绍

    2019 年 5 月 27 日

  • Hudson 以新版本编号 2.0.0 重新登场

    这是自Hudson/Jenkins分道扬镳以来Hudson的一次重要发布,它使用的是与OSGi/Sematic一致的版本编号。另外,此版本中包括JSR330依赖注入模型,所以它能更方便地运行在OSGi运行时中并且不再依赖于特定的Hudson标注。

    2011 年 4 月 27 日

  • Spring Cloud:面向应用层的云架构解决方案

    我们应该从效率、成本、稳定性这几个方面来检验架构是否合理,并为架构朝着更加健康的方向发展保驾护航。

    2018 年 2 月 18 日

  • 一个 OSGi 成功案例

    Nagarro的Bill Kayser最近详细描述了他将应用程序从一个自定义基础架构和构造过程转移到OSGi上的经历。

    2008 年 1 月 19 日

  • Red Hat 开源 Quarkus 1.0:Java 已为云原生时代做好了准备

    最近,Red Hat 开源了 Quarkus 1.0 项目,这标志着其在为 Kubernetes 提供 Java 实例上取得了一个里程碑。Java 已为云原生时代做好了准备。

    2019 年 11 月 11 日