关于《OSGi实战》这本书

生气的散人 发布于 2012/12/11 14:47
阅读 3K+
收藏 3


OSGi规范编写规整、内容翔实,若需了解OSGi技术细节,OSGi规范将是一个很好的选择。但在阅读该规范的过程中,你可能会发现它面向的是该规范的实现者而非使用者。本书的创作初衷就是打造一本面向用户的OSGi规范配套指南,以弥补OSGi规范在应用指导方面的不足。本书的目标并非简单整理、汇总OSGi的功能与特性,而是要系统、全面、深入地阐述OSGi的重要特性,并告诉读者如何使用OSGi。我们的主要思路是,忽略某些实现细节,介绍一些使用说明,尽可能简洁地阐述OSGi规范。

为此,在撰写本书的过程中,我们试图将讨论重点限定在应用OSGi技术所必需掌握的最常见概念、特性及原理上,但这并不意味着我们会回避所有复杂难懂的细节。开始使用OSGi,你会发现OSGi对模块化提出了更加严格的要求,这些要求很可能会打破过去很多习惯的做法。最后,你会了解一些技术原理,从而能够有效地调试、诊断在使用OSGi过程中遇到的各种问题。

按照编写思路,本书可分为三大部分:

(1) 解读OSGi核心规范;

(2) 阐述如何在实践中使用规范;

(3) 介绍一些与OSGi相关的高级主题。

本书第一部分将从用户视角,重点介绍OSGi核心规范中的基本内容。这部分将围绕OSGi的三层架构,即模块层、生命周期层和服务层,逐层展开介绍。但这不是介绍OSGi的唯一方式,通常是从实现一个简单服务的bundle开始介绍。在我们看来,这种介绍方式有一个弊端:由于一下子直接涉及了OSGi的全部三层,这就要求一开始就必须立即解释这三层的具体含义。

分层介绍的好处在于,我们把要介绍的概念依据层次进行了明确划分。例如,介绍模块化那一章(第2章)重点解释与模块层相关的概念,基本没有提到生命周期层和服务层。这种介绍方式也非常自然,因为模块层是OSGi的基础,生命周期层在它的基础上构建,服务层又构建在生命周期层的基础上。这部分还会重点分析在不使用高层架构的情况下,如何使用OSGi的低层架构,这在某些时候是非常必要的。

基于第一部分对OSGi核心规范的介绍,本书第二部分将从更加实用的角度介绍如何运用这项技术。这部分会详细介绍如何将现有JAR文件转换成bundle,如何对bundle进行测试、调试和管理。若要深入学习OSGi的使用方法,本书前两部分是不错的选择。

第三部分介绍一些与OSGi相关的高级主题,包括面向服务的组件模型、框架的启动、安全性以及分布式计算等。该部分是一块跳板,带你走进一个充满无限可能的OSGi世界。

------------------------------------------------------------------------------------------

路线图

第1章从较高层次概述OSGi,以及该技术旨在解决的问题。为避免介绍时过于抽象,本章通过“Hello,world!”示例来阐述OSGi框架的不同层,OSGi的主要内容将安排在后续章节介绍。此外,本章还介绍了Java以及其他相关技术对模块化的支持情况。

第2章分析OSGi框架的模块层。本章首先对计算领域的模块化进行了简单的介绍,进而引出OSGi中的模块化概念,即bundle。之后介绍OSGi基于元数据声明创建模块的方法,并展示通过该方法将一个简单的绘图程序模块化的过程。最后分析OSGi中的一项关键任务:如何解析bundle依赖。

第3章介绍OSGi框架中的生命周期层。本章首先介绍常规的生命周期管理,进而细述OSGi对bundle的动态生命周期管理。并创建一个简单的OSGi shell示例,介绍OSGi中与生命周期相关的API,同时对之前的绘图程序进行调整,使其具有OSGi生命周期的特征。

第4章分析OSGi框架中的服务层。本章首先介绍服务的定义,以及使用服务的目的和时机。随后通过一些简单的示例,介绍如何提供服务、使用服务,并通过迭代的方式介绍如何处理服务动态性的独特方面。最后,我们将应用动态服务来修改之前的绘图程序,并以此结束对服务层的讨论。

第5章再次讲述模块层,重点分析模块层中一些更高级、更细微的特性。本章会介绍处理bundle依赖和内容的其他方法,如利用bundle级别的依赖及bundle片段。此外,你还会了解到bundle如何处理执行环境与本地库。

第6章从实践的角度介绍如何将JAR文件转换为bundle,包括定义bundle元数据,打包bundle内容,增加生命周期支持。同时还将以一个开源项目为例,展示如何将一个应用划分为多个bundle。

第7章说明如何对bundle和基于OSGi的应用进行测试。本章分析了如在OSGi 中运行现有测试和模拟OSGi API。除了单元测试、集成测试,本章还介绍了测试管理以及辅助测试工具。

在探讨完测试后,第8章将介绍如何调试bundle。本章将介绍在命令行和Eclipse IDE下进行调试的方法。同时还将介绍如何通过配置开发环境来提高效率。最后,说明利用OSGi进行开发时遇到的常见问题及解决方法。

第9章讨论如何管理项目中的bundle,包括为包和bundle定义有意义的版本号,管理bundle的配置数据,并在此过程中描述OSGi相关服务。此外还介绍了触发bundle自动启动和初始化的方法。

第10章继续探讨与管理相关的内容,但侧重点从单个bundle转向了多个bundle,重点介绍一系列部署bundle及其依赖的方法,同时介绍如何控制bundle的启动顺序。

第11章介绍了和OSGi相关的面向组件编程,通过具体实例,分析了一种被称为声明式服务(Declarative Services)的标准OSGi组件框架。随后介绍如何使声明式服务与POJO协同工作,如何通过声明式服务简化动态服务的处理。

第12章继续研究OSGi组件框架的高级组件。本章将介绍Blueprint,它面向的是那些已经熟悉Spring技术的企业应用开发者。另外,本章还研究了Apache FelixiPOJO组件框架。最终我们将发现,OSGi组件框架的优势之一就是,多个组件可以通过服务实现协同工作。

第13章从bundle开发转向分析OSGi框架的启动,描述了配置、创建OSGi框架的标准方法。最后还将展示如何利用标准API,将OSGi框架嵌入到已有的应用之中。

第14章深入研究在安全环境中操作OSGi,描述相关问题和解决办法。本章解释了OSGi如何扩展标准的Java安全架构,使其具备灵活性且易于管理。最后本章还将展示如何创建支持安全功能的OSGi框架,并创建一个安全的示例应用。

第15章是本书的最后一章,简要介绍了在OSGi中如何使用与Web相关的技术。我们讨论了一些常用Web应用技术的使用方法,例如servlet、JSP和WAR 文件,同时我们也将介绍如何发布和使用这些Web服务。

----------------------------------------------------------------------------------------------

本书评论:
“本书令人难忘。”——Peter Kriens,OSGi技术总监
“本书透彻讲解了OSGi的复杂主题。”——John S. Griffin,Overstock.com
“本书内容通俗易懂,解释了你想了解的所有OSGi相关内容。”——Jason Lee,Oracle
“权威专家经典力作。”——Erik Van Oosten,JTeam
“本书可助你迅速入门,快速提高。”——David Dossot,Mule in Action一书合著者

----------------------------------------------------------------------------------------------

内容简介:

OSGi是一种标准技术,用于创建高度模块化的Java应用。利用OSGi,无需停止运行整个系统就可以安装、启动、停止、更新或卸载组件。Oracle、BEA和IBM都在积极推动OSGi技术的采用。
本书作者既来自开发一线,又参与了OSGi规范的制定,这就保障了全书内容的权威性。全书历时两年多方才完成,凝聚了作者们多年来的宝贵经验和辛勤汗水。内容分三部分,涵盖OSGi核心规范解读、OSGi规范的实际应用及相关高级主题,系统、全面、深入地阐述OSGi的重要特性,揭示了大量鲜为人知的技术细节。此外,本书还通过极具实用价值的实例示范了OSGi的各种应用,能够满足各个层次读者的需求。通过大师的指引,相信读者一定可以轻松实现“入门-进阶-精通”三级跳,在OSGi世界里创造出无限可能。

----------------------------------------------------------------------------------------------

关于封面插图:

本书封面上的插图的标题是“士兵”。插图来自一本土耳其奥斯曼帝国的服饰画册,由伦敦老邦德街的William Miller于1802年1月1日出版。画册的扉页已经丢失,因此我们很难推断准确的创作时间。此书的目录同时使用英语和法语标识插图,每张图片都有创作它的两位艺术家的名字,他们一定会为自己的作品出现在两百年后的一本计算机编程类图书的封面上而倍感惊讶。

Manning出版社的一个编辑在位于曼哈顿西26街“Garage”的古董跳蚤市场买到了这本画册。卖主是住在土耳其安卡拉的一个美国人,交易时间是在那天他准备收摊的时候。这位编辑没带够买这本画册所需的现金,并且卖主礼貌地拒绝了他使用信用卡和支票的请求。卖主当天晚上要飞回安卡拉,看起来好像没什么希望了。怎么办呢?两个人最后通过握手约定的君子协议方式达成一致。卖主提议通过银行转账付款,编辑在纸上抄下了收款银行的信息,随后画册就到他手里了。不用说,第二天我们就把款付给了卖主。我们感谢这位陌生人能如此信任我们的同事。这让我们回忆起了那个很久以前的美好时代。

我们Manning人崇尚创造性和主动性,而以两个世纪以前的丰富多彩的地区生活作为图书封面的素材,使得计算机商业充满趣味性,这本画册中的这张图片,把我们带到了那时的生活中。

分享一组土耳其奥斯曼帝国的服饰画册的几张图


加载中
0
缪斯的情人
缪斯的情人
OSGI号称的是实现动态模块加载,插件热插拔方式,但是实际应用中除了eclipse没发现其他类似于web的应用啊,看了一段时间,在web应用中使用osgi很费劲。求解
0
宏哥
宏哥

码农寻找银弹的努力

就和人类寻找长生不老药的热情一样

0
mallon
mallon
OSGi本质是把Java的类加载技巧推到了一个无法驾驭的高度
0
边缘行者
边缘行者
感觉还是不错的  现在有很多多支持OSGI化  只是到开发层面 封装还不够好 好需要继续努力吧~~我自己学习过一段时间。做底层的网关类的程序还是不错的 不一定是要用到Web层中
0
yxtwang
yxtwang
正在学习中。
0
m
mcgrady32303
我看过英文版,算是比较生动吧,老外写书都比较生动,挺不错的!
但是程序员学习,需要hello world之类的快速上手实例,可以推荐http://www.osgi.com.cn/这个网站。
返回顶部
顶部