首页>参考读物>计算机科学与技术>软件与程序设计

深入理解OSGi:Equinox原理、应用与最佳实践
作者 : 周志明 谢小明 著
出版日期 : 2013-02-27
ISBN : 978-7-111-40887-1
定价 : 79.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 429
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书是原创Java技术图书领域继《深入理解Java虚拟机》后的又一实力之作,也是全球首本基于最新OSGi R5.0规范的著作。理论方面,既全面解读了OSGi规范,深刻揭示了OSGi原理,详细讲解了OSGi服务,又系统地介绍了Equinox框架的使用方法,并通过源代码分析了该框架的工作机制;实践方面,不仅包含一些典型的案例,而且还总结了大量的最佳实践,极具实践指导意义。
全书共14章,分四个部分。第一部分(第1章):走近OSGi,主要介绍了什么是OSGi以及为什么要使用OSGi。第二部分(2~4章):OSGi规范与原理,对最新的OSGi R5.0中的核心规范进行了全面的解读,首先讲解了OSGi模块的建立、描述、依赖关系的处理,然后讲解了Bundle的启动原理和调度管理,最后讲解了与本地及远程服务相关的内容。第三部分:OSGi服务与Equinox应用实践(5~11章),不仅详细讲解了OSGi服务纲要规范和企业级规范中最常用的几个子规范和服务的技术细节,而且还通过一个基于Equinox的BBS案例演示了Equinox的使用方法,最重要的是还通过源代码分析了Equinox关键功能的实现机制和原理。第四部分:最佳实践(12~14章),总结了大量关于OSGi的最佳实践,从Bundle如何命名、模块划分、依赖关系处理到保持OSGi动态性、管理程序启动顺序、使用API基线管理模块版本等各方面的实践技巧,此外还介绍了Spring DM的原理以及如何在OSGi环节中进行程序测试。

图书特色

基于最新OSGi R5.0规范撰写,继《深入理解Java虚拟机》后的又一实力之作
全面解读OSGi规范,深刻揭示OSGi原理,详细讲解OSGi服务,系统介绍Equinox框架的用法,并通过源代码分析其工作机制,包含大量可操作性极强的解决方案和最佳实践

深入理解OSGi
Equinox原理、应用与最佳实践
Understanding the OSGi
Principles, Using and Best Practices
周志明 谢小明 著

封底:
计算机硬件的工业化生产已经非常成熟,无论是哪个公司生产的硬件产品,都能遵循统一规范的接口,有无数可替换的标准件可以使用,但是整个软件行业还在经常为解决各种软件系统、硬件设备中相同的业务需求而从零开始制造一个又一个相似的“轮子”。硬件行业的工业化生产方式让软件行业的程序员们羡慕不已。
软件工业化必定是一股不可逆转的潮流,要实现这个目标:第一步就是要订立不同功能模块的标准,Java业界已经有了很多的这类技术规范,例如EJB、JTA、JDBC、JMS等;第二步是为这些技术规范提供一致的管理和交互方式,Java所欠缺的正是这样一个扮演组织者或黏合剂的角色,直到出现了OSGi。
本书一共分为四个部分,秉承理论与实践相结合的原则,对OSGi进行了深入且全面的讲解,既详细讲解了OSGi的规范、原理和核心服务,又深入分析了Equinox框架的源代码,最重要的是,本书还总结了大量关于OSGi的最佳实践。各个部分之间基本上是互相独立的,没有必然的前后依赖,读者可以从任何一个感兴趣的专题开始阅读,但是每个部分中的各个章节间则会有先后顺序。

前:
自1999年OSGi联盟成立以来,OSGi技术随着Java一起飞速发展,它已经成为一种被广泛认可的软件架构技术和方法。OSGi联盟的成员数量也已经从最开始的几个增长到目前的超过100个,许多世界著名的IT企业都加入到OSGi的阵营之中。
不过,虽然目前OSGi背后有庞大的厂商支持,实现框架、中间件和类库的支撑也足够完善,但是在国内基于OSGi架构的系统还不是很多。很多软件企业都在跃跃欲试,尝试迈出使用OSGi的第一步,但往往被其复杂性阻挡于门外——如果要用OSGi开发一个入门程序,并不需要多高深的知识,但如果要把OSGi运用于生产系统,则要求该软件系统的架构师和部分中高级开发人员必须对OSGi有比较深入的了解。业界对深入掌握OSGi技术的人才的需求一直非常之大。通过本书,读者可以通过一种相对较轻松的方式学习到OSGi的运作原理,对自身能力的成长有较大的帮助。
作者简介
周志明 资深Java技术专家,对JavaEE企业级应用开发、OSGi、Java虚拟机和工作流等都有深入的研究,并在大量的实践中积累了丰富的经验。尤其精通Java虚拟机,撰写了大量与JVM相关的经典文章,被各大技术社区争相转载,是ITeye等技术社区公认的Java虚拟机方面的领袖人物之一。著有经典著作《深入理解Java虚拟机:JVM高级特性与最佳实践》(2年内重印十数次,获得业界多个图书奖项),广获读者好评。现任远光软件股份有限公司平台开发部经理兼平台架构师,先后参与过国家电网、南方电网等多个国家级大型ERP项目的平台架构工作,对软件系统架构也有深刻的认识和体会。
谢小明 资深Java技术专家,具有丰富的JavaEE企业级应用开发开发经验,对OSGi、Spring、Hibernate等技术和框架有比较深入的研究和认识。喜欢钻研运行在JVM之上的其他语言,如Scala和Clojure等。现任远光软件股份有限公司平台开发部平台架构师,先后参加与过国家电网、南方电网等多个国家级大型ERP项目的平台架构工作。

图书前言

为什么写这本书
  随着软件规模的日益增大,程序按模块拆分、按模块开发和按模块部署等需求变得越来越迫切,“模块化”成为了Java社区中最热门的话题之一。而OSGi技术—Java业界事实上的模块化标准,也被越来越多的中间件、第三方类库和各类应用程序所认可和采用。与此相对的是,有关OSGi技术的资料,尤其是中文的资料却显得异常的贫乏。
  笔者自2007年接触OSGi以来,曾在数个大型系统中使用过OSGi作为软件的基础架构,这一方面使笔者深刻感受到了OSGi带来的诸多好处以及OSGi设计思想的魅力;另一方面也使笔者注意到OSGi的入门门槛相对较高,如果没有足够的指导材料,开发人员从零开始学习并探索出OSGi的最佳实践需要很高的成本。因此,笔者就萌生了写一本关于OSGi原理、应用与最佳实践的中文书籍的想法。
  自从1999年OSGi联盟成立以来,OSGi技术随着Java一起飞速发展,现已经成为一种被广泛认可的软件架构技术和方法。OSGi联盟的成员数量也已经从最开始的几个增长到目前的100多个,许多世界著名的IT企业都加入到OSGi的阵营之中,如Adobe、IBM、Oracle、SAP、RedHat和Siemens等。这些软件厂商推出的许多产品都支持OSGi技术,甚至产品本身就使用了OSGi技术构建,例如IBM的WebSphere、Lotus和JAZZ,Oracle的GlassFish和Weblogic,RedHat的JBoss,Eclipse基金会的Eclipse IDE、Equinox及之下的众多子项目,Apache基金会的Karaf、Aries、Geronimo、Felix及之下的众多子项目等。这些业界巨头的踊跃参与,从侧面证明了OSGi技术有着非常广阔的市场前景。
  OSGi能获得如此广泛的认可,一方面是它的诞生迎合了软件模块化的需求;另一方面是因为它足够全面和开放,OSGi所具有的动态性、伸缩性正好是许多生产系统所需的。基于OSGi的程序更新升级或者缺陷修复,能够像电脑更换USB接口的鼠标键盘或者插拔其他USB设备那样可以即插即用,无须重启,甚至无须停顿,这是许多基于Java的、需要7×24小时运转的生产系统长期以来迫切希望而又无法实现的需求。把软件开发中公用的、通用的功能抽象成标准件,令各个软件可以使用同样的模块来完成特定需求,把软件开发变为搭建模块,这更是软件工业化的最终理想,而OSGi为这个目标带来了实现的曙光。
  目前,虽然OSGi背后有庞大的厂商支持,对实现框架、中间件和类库的支撑也足够完善,但是在国内基于OSGi架构的系统还不是很多。很多软件企业都跃跃欲试,尝试迈出使用OSGi的第一步,但往往被其复杂性阻挡于大门之外—如果要用OSGi开发一个入门程序,并不需要多高深的知识,但如果要把OSGi运用于生产系统,则要求该软件系统的架构师和至少一部分中高级开发人员必须对OSGi有比较深入的了解,业界对这一部分人才的需求也一直非常大。通过本书,读者可以通过一个相对轻松的方式学习到OSGi的运作原理,这对自身能力的提高有较大的帮助。
本书面向的读者
  1.系统架构师
  OSGi目前已经成为互联网、桌面程序、移动设备和企业级应用等领域中最流行的系统架构方法之一,OSGi本身的设计思想也非常值得系统架构师借鉴。
  2.使用Java技术体系的中、高级开发人员
  鉴于OSGi技术本身的复杂性和相对陡峭的学习曲线,开发人员入门和深入理解OSGi时要付出较多的努力,本书的理论讲解和案例实践将帮助对OSGi感兴趣的开发人员跨过初学OSGi的那道门槛。
  3.系统运维工程师
  保障系统的性能,更新和维护程序版本是系统运维工程师的主要职责。目前Java业界主流的中间件均开始直接支持甚至基于OSGi架构实现。伴随OSGi的发展,越来越多使用OSGi技术的程序被部署到生产系统之中,OSGi已经成为一个优秀的运维工程师必须了解的专业知识。本书中的大量案例、代码、调优实战将会对系统运维工程师日常的工作起到直接的参考作用。
如何阅读本书
  本书一共分为4个部分:走近OSGi、OSGi规范与原理、基于Equinox的OSGi应用与实践、最佳实践。各个部分之间基本上是互相独立的,没有必然的前后依赖关系,读者可以从任何一个感兴趣的专题开始阅读,但是每个部分中的各个章节间会有先后顺序。
  本书并不要求读者在Java领域具备很高的技术水平,而且在讲解各个知识点时会在保证逻辑准确的前提下、尽量用通俗的语言和案例去讲述OSGi中与开发关系最为密切的内容;但是由于探讨OSGi过程中涉及的许多问题不可避免地需要读者有一定技术基础,因此本书的定位依然是面向中、高级的程序员群体,对于一些常用的开发框架、Java API、Java语法等基础知识点,将认为读者已有所了解。
  下面简要介绍一下本书各部分的内容。
  第一部分 走近OSGi
  本书第一部分为后文的研究和讲解打下了基础,让读者了解OSGi的来龙去脉以及它出现的意义,这是走近Java技术和Java虚拟机的第一步。第一部分包括第1章:
  第1章 在这本书中,笔者尝试阐述与OSGi相关的三个问题:什么是OSGi?为什么要使用OSGi?如何使用OSGi?在第1章中,笔者将针对前面两个问题进行分析介绍并给出答案。
  第二部分 OSGi规范与原理
  最新的OSGi R5规范文档包含了数十个子规范、数百页的文档和近2000个API。一般的开发人员很难、也没有必要完全了解OSGi规范的所有细节。但是,要学习OSGi技术,阅读OSGi核心规范(OSGi Core)是必需的过程。在第二部分中,笔者将介绍OSGi核心规范中的内容。第二部分包括第2至4章:
  第2章 介绍了OSGi中模块这个最基础的概念,并讲解了OSGi如何建立模块、如何描述模块、模块间的依赖关系如何处理等内容。
  第3章 介绍了Bundle是如何启动的,Bundle自安装到卸载所经历的生命周期状态和这些状态的转换条件过程,还介绍了OSGi框架是如何使用启动级别对系统中的Bundle进行管理调度的。
  第4章 介绍了本地及远程服务定义、注册、查找和使用方法,这个过程涉及服务事件监听,以及使用服务钩子干涉服务与OSGi框架的交互过程等知识。
  第三部分 基于Equinox的OSGi应用与实践
  如果说OSGi核心规范是OSGi技术的灵魂,OSGi的服务纲要规范(OSGi Service Compendium)和OSGi企业级规范(OSGi Service Enterpress)就是其躯体。在第三部分中,笔者会详细介绍其中最常用的几个子规范的内容。在这一部分中,将会把OSGi技术从理论落地到实践之中,结合目前使用范围最广的OSGi实现Equinox和一个穿插整个部分的完整案例来讲解OSGi技术的使用。第三部分包括第5至11章:
  第5章 介绍了Equinox和OSGi的关系、Equinox的组成,以及如何获取、安装、使用和调试Equinox的代码。本章奠定了整个第三部分的技术基础。
  第6章 尝试实现了一个名为“Neonat”的基于Equinox框架的Telnet BBS,这个项目将迭代贯穿于第三部分。另外,还从浩瀚庞大的Equinox源码中挑选出4个关键功能点进行源码解析。读者在理解了Equinox这几个关键功能点是如何实现的之后,与前面第一部分介绍的OSGi规范的理论相互对照和印证,可以更好地理解OSGi的技术原理,知道为何要这样设计和实现。
  第7章 介绍了服务端OSGi的应用,分析了OSGi的HTTP Service规范的使用和原理,及如何为Neonat添加Web访问模块。
  第8章 介绍了OSGi的User Admin服务的基本使用,以及如何为Neonat添加用户管理模块,如何实现用户权限控制。
  第9章 介绍了OSGi的Preferences服务,重新实现了Neonat的数据访问模块,展示了如何使用Preferences服务来持久化非事务性数据。
  第10章 介绍了声明式服务的使用。声明式服务规范的制定,推动了OSGi服务从程序化的服务模型向声明式的服务模型发展,这对整个OSGi来说也是一项非常有意义的进化,令OSGi的服务真正成为一项可统一分配、使用和管理的资源。
  第11章 介绍了OSGi R5中最新出现的Subsystem规范,这是OSGi R5相对R4.3最重要的改进。在制定了Subsystem规范(及其相关的Respository和Resolver等规范)后,表明OSGi对企业级开发的支持已经达到相当完善的程度了。Subsystem让各个软件厂商的OSGi企业级容器有了通用的程序发布格式,让OSGi支持者能向同一个方向努力,推动企业级OSGi的发展,这点将是有深远影响的。
  第四部分 最佳实践
  学习过OSGi的原理、规范和各种服务的使用后,第四部分笔者将针对开发实践中遇到的具体问题进行分析、讲解,介绍OSGi的各种最佳实践。第四部分包括12至14章:
  第12章 介绍了OSGi的最佳实践,包括Bundle命名方法、模块划分、依赖关系处理、保持OSGi动态性、管理程序启动顺序、使用API基线管理模块版本等各方面的实践技巧。
  第13章 介绍了Spring DM的原理、使用,以及如何把基于Spring的程序引入到OSGi环境之中。
  第14章 讲解了单元测试和集成测试在OSGi程序中的意义,展示了在OSGi环境中如何进行程序测试,以及相关测试工具的使用。
勘误和支持
  在本书交稿的时候,笔者并没有想象中那样兴奋或轻松,写作之时那种“战战兢兢、如履薄冰”的感觉依然萦绕在心头。在写作过程中,在每一章、每一节落笔之时,笔者都在考虑如何写才能把这个知识点有条理地讲述出来,都在担心会不会由于自己理解有偏差而误导了大家。囿于作者水平和写作时间,书中存在不妥之处在所难免,所以特别开辟了一个读者邮箱(understandingosgi@gmail.com),读者有任何意见、建议都欢迎与笔者联系。另外,读者可以从机工新阅读网站(www.cmpreading.com)本书的相应页面下载书中所涉及的源码。写书与写程序一样,作品一定都有不完美之处,因为不完美,我们才有不断追求完美的动力。

上架指导

计算机\程序设计

封底文字

计算机硬件的工业化生产已经非常成熟,无论是哪个公司生产的硬件产品,都能遵循统一规范的接口,有无数可替换的标准件可以使用,但是整个软件行业还在经常为解决各种软件系统、硬件设备中相同的业务需求而从零开始制造一个又一个相似的“轮子”,硬件行业的工业化生产方式让软件行业的程序员们羡慕不已。
软件工业化必定是一股不可逆转的潮流,要实现这个目标:第一步就是要订立不同功能模块的标准,Java业界已经有了很多的这类技术规范,例如EJB、JTA、JDBC、JMS等;第二步是为这些技术规范提供一致的管理和交互方式,Java所欠缺的正是这样一个扮演组织者或黏合剂的角色,直到出现了OSGi。
本书一共四个部分,秉承理论与实践相结合的原则,对OSGi进行了深入且全面的讲解,既详细讲解了OSGi的规范、原理和核心服务,又深入分析了Equinox框架的源代码,最重要的是,本书还总结了大量关于OSGi的最佳实践。各个部分之间基本上是互相独立的,没有必然的前后依赖,读者可以从任何一个感兴趣的专题开始阅读,但是每个部分中的各个章节间则会有先后顺序。
注明:放上51CTO的logo

作者简介

周志明 谢小明 著:暂无简介

图书目录

前言
第一部分 走近OSGi
第1章 Java模块化之路 / 2
1.1 什么是OSGi / 2
1.1.1 OSGi规范的演进 / 4
1.1.2 Java模块化规范之争 / 7
1.2 为什么使用OSGi / 11
1.2.1 OSGi能让软件开发变得更容易吗 / 12
1.2.2 OSGi能让系统变得更稳定吗 / 13
1.2.3 OSGi能让系统运行得更快吗 / 14
1.2.4 OSGi能支撑企业级开发吗 / 15
1.3 本章小结 / 16
第二部分 OSGi规范与原理
第2章 模块层规范与原理 / 18
2.1 OSGi规范概要 / 18
2.2 Bundle / 20
2.3 描述元数据 / 21
2.3.1 预定义标记 / 21
2.3.2 使用可视化工具 / 27
2.4 Bundle的组织与依赖 / 31
2.4.1 导出和导入Package / 31
2.4.2 约束规则与示例 / 38
2.4.3 校验Bundle有效性 / 44
2.5 OSGi的类加载架构 / 45
2.5.1 父类加载器 / 46
2.5.2 Bundle类加载器 / 47
2.5.3 其他类加载器 / 49
2.5.4 类加载顺序 / 50
2.6 定义执行环境 / 51
2.7 本地化 / 54
2.8 本章小结 / 55
第3章 生命周期层规范与原理 / 56
3.1 Bundle标识 / 56
3.2 Bundle状态及转换 / 57
3.2.1 安装过程 / 59
3.2.2  解析过程 / 61
3.2.3 启动过程 / 62
3.2.4 更新过程 / 63
3.2.5 停止过程 / 64
3.2.6 卸载过程 / 65
3.3 启动级别 / 65
3.3.1 设置启动级别 / 66
3.3.2 调整活动启动级别 / 67
3.4 事件监听 / 68
3.4.1 事件类型 / 69
3.4.2 事件分派 / 70
3.5 系统Bundle / 71
3.6 Bundle上下文 / 72
3.7 本章小结 / 73
第4章 服务层规范与原理 / 74
4.1 服务 / 74
4.2 OSGi服务示例 / 75
4.3 服务属性 / 80
4.3.1 属性过滤器 / 82
4.3.2 预定义属性 / 83
4.3.3 修改属性 / 84
4.4 服务工厂 / 85
4.5 服务跟踪器 / 86
4.6 引用服务 / 89
4.7 释放和注销服务 / 91
4.8 服务层事件 / 91
4.8.1 事件类型 / 92
4.8.2 事件分派 / 92
4.8.3 ServiceRegistration对象的提前请求 / 93
4.9 远程服务 / 94
4.9.1 准备远程服务环境 / 94
4.9.2 远程服务示例 / 96
4.9.3 远程服务属性 / 99
4.9.4 实现分析 / 100
4.10 服务钩子 / 101
4.10.1 EventListenerHook / 101
4.10.2 FindHook / 101
4.10.3 ListenerHook / 102
4.10.4 服务钩子示例 / 102
4.11 本章小结 / 105
第三部分 基于Equinox的OSGi应用与实践
第5章 Equinox启航 / 108
5.1 建立Equinox开发环境 / 109
5.1.1 建立运行环境 / 109
5.1.2 建立编译及调试环境 / 110
5.1.3 建立开发环境 / 112
5.2 Equinox常用组件简介 / 117
5.3 Equinox启动器 / 119
5.4 使用代码启动Equinox / 124
5.5 本章小结 / 125
第6章 Equinox基础应用与源码解析 / 126
6.1 实践项目—Neonat论坛 / 126
6.1.1 背景与需求 / 126
6.1.2 模块划分 / 127
6.1.3 基础资料模块 / 129
6.1.4 持久化模块 / 133
6.1.5 用户交互模块 / 135
6.1.6 运行效果 / 140
6.2 Equinox源码解析 / 142
6.2.1 OSGi容器启动 / 142
6.2.2 Bundle状态恢复 / 147
6.2.3 解析Bundle依赖关系 / 153
6.2.4 OSGi类加载器实现 / 157
6.3 本章小结 / 162
第7章 服务器端OSGi / 163
7.1 OSGi与Web服务器 / 163
7.2 HTTP Service规范简介 / 166
7.2.1 服务目标 / 166
7.2.2 服务接口 / 168
7.2.3 资源映射规则 / 169
7.2.4 请求处理过程 / 171
7.3 实践项目—Neonat论坛的Web模块 / 171
7.3.1 准备依赖项 / 172
7.3.2 使用HTTP Service / 174
7.3.3 实现Web交互功能 / 176
7.3.4 运行效果 / 178
7.4 HTTP Service源码解析 / 180
7.4.1 BridgeServlet与OSGi容器启动 / 180
7.4.2 BridgeServlet与HTTP请求委派 / 186
7.4.3 DelegateServlet实现原理 / 188
7.5 本章小结 / 192
第8章 用户管理服务 / 193
8.1 User Admin服务规范简介 / 193
8.1.1 服务目标与基础概念 / 193
8.1.2 验证用户身份 / 195
8.1.3 验证用户权限 / 196
8.1.4 User Admin事件 / 197
8.2 实践项目—Neonat论坛用户管理模块 / 198
8.2.1 需求与依赖项分析 / 198
8.2.2 用户与用户组的实现 / 200
8.2.3 页面权限 / 201
8.2.4 用户登录与身份验证 / 202
8.3 User Admin源码解析 / 206
8.3.1 用户管理实现 / 206
8.3.2 外部服务使用实践 / 208
8.4 本章小结 / 211
第9章 Preferences服务 / 212
9.1 Preferences服务规范简介 / 212
9.1.1 服务目标 / 212
9.1.2 数据结构 / 214
9.1.3 属性 / 215
9.1.4 并发处理 / 216
9.1.5 清理遗留数据 / 217
9.2 实践项目—Neonat论坛持久化模块 / 217
9.2.1 编码实现 / 217
9.2.2 模块热切换 / 220
9.3 Preferences源码解析 / 222
9.3.1 数据结构实现 / 224
9.3.2 属性存取 / 228
9.3.3 后端存储系统 / 229
9.4 本章小结 / 234
第10章 声明式服务 / 235
10.1 声明式服务规范简介 / 236
10.1.1 服务目标 / 236
10.1.2 定义Component / 236
10.1.3 Component类型 / 237
10.1.4 Component生命周期 / 240
10.1.5 Component属性 / 245
10.1.6 绑定与发布服务 / 245
10.1.7 激活与钝化方法 / 252
10.1.8 Component配置总结 / 254
10.2 实践项目—使用声明式服务改造Neonat论坛 / 259
10.2.1 可视化编辑工具 / 259
10.2.2 DS容器管理 / 263
10.3 DS容器源码解析 / 264
10.3.1 容器启动 / 264
10.3.2 加载Bundle中的Component / 267
10.3.3 动态依赖解析 / 272
10.4 本章小结 / 274
第11章 Subsystems服务 / 276
11.1 服务目标 / 276
11.2 Subsystem格式 / 277
11.3 Subsystem元数据 / 278
11.3.1 SUBSYSTEM.MF标识 / 278
11.3.2 DEPLOYMENT.MF标识 / 281
11.4 Subsystem类型与共享策略 / 283
11.5 组织管理Subsystem / 285
11.6 Subsystem部署与依赖策略 / 289
11.7 Subsystem生命周期 / 291
11.7.1 安装 / 292
11.7.2 解析 / 293
11.7.3 启动 / 294
11.7.4 停止 / 294
11.7.5 卸载 / 295
11.8 本章小结 / 295
第四部分 最佳实践
第12章 OSGi最佳实践 / 298
12.1 Bundle相关名称命名 / 298
12.2 Bundle划分原则 / 300
12.2.1 恰如其分地分配Bundle粒度 / 300
12.2.2 分离OSGi代码 / 300
12.2.3 分离接口和实现 / 300
12.3 依赖关系实践 / 301
12.3.1 依赖分析工具 / 301
12.3.2 避免Require-Bundle / 303
12.3.3 最小化依赖 / 304
12.3.4 避免循环依赖 / 304
12.3.5 Equinox x-*依赖 / 305
12.4 Equinox专有类加载机制 / 306
12.4.1 Buddy Loading类加载机制 / 306
12.4.2 ClassLoaderDelegateHook类加载机制 / 307
12.5 Bundle生命周期实践 / 309
12.5.1 启动 / 309
12.5.2 停止 / 309
12.6 服务工厂的特殊性 / 309
12.7 处理非OSGi的JAR包 / 311
12.8 启动顺序实践 / 313
12.8.1 避免启动顺序依赖 / 313
12.8.2 Start Level的使用 / 313
12.9 Fragment Bundle实践 / 314
12.10 保持OSGi动态性 / 315
12.11 API Tools实践 / 317
12.11.1 API Baselines / 317
12.11.2 API Tools 注解 / 319
12.11.3 API Version版本管理 / 322
12.11.4 二进制文件不兼容 / 322
12.12 本章小结 / 322
第13章 Spring Dynamic Modules实践 / 324
13.1 Spring DM入门 / 324
13.1.1 Spring DM项目简介 / 324
13.1.2 安装Spring DM / 325
13.1.3 简单的Spring DM示例 / 326
13.1.4 Bundle和Spring上下文 / 331
13.1.5 命名空间 / 333
13.2 Spring DM进阶 / 337
13.2.1 Spring DM扩展配置 / 337
13.2.2 Web Extender / 344
13.2.3 Spring DM服务约束 / 345
13.2.4 在Spring上下文中使用BundleContext / 346
13.3 Spring DM企业应用 / 346
13.3.1 规划OSGi组件 / 347
13.3.2 在Spring DM中使用JPA / 348
13.3.3 事务管理 / 353
13.3.4 OSGi企业规范中的JPA / 358
13.4 Spring DM和Blueprint / 359
13.5 本章小结 / 360
第14章 构建可测试的OSGi系统 / 361
14.1 单元测试的必要性 / 362
14.2 单元测试的重要性 / 363
14.3 可测试代码的特征 / 364
14.4 OSGi单元测试 / 365
14.4.1 如何组织测试代码 / 366
14.4.2 如何进行OSGi单元测试 / 367
14.5 OSGi集成测试 / 373
14.5.1 Eclipse JUnit Plug-in Test / 374
14.5.2 Spring DM Test / 379
14.5.3 Pax Exam / 383
14.6 本章小结 / 384
附录A Java类加载器简介 / 385
附录B Equinox控制台命令 / 392
附录C OSGi子规范目录 / 397
附录D OSGi相关项目 / 399
附录E Equinox启动配置参数 / 401

教学资源推荐
作者: [美]艾伦 A. A. 多诺万(Alan A. A. Donovan)布莱恩 W. 柯尼汉(Brian W. Kernighan)著
作者: (美)Richard Johnsonbaugh;Martin Kalin 著
作者: 刘艺
作者: John Lewis Peter J. DePasquale;Joseph Chase;
参考读物推荐
作者: Mike Keith; Merrick Schincariol
作者: [加]约瑟夫·豪斯(Joseph Howse),[爱]乔·米尼奇诺(Joe Minichino) 著
作者: 张昆 戴艳 编著