书籍详情
OSGi与Equinox:创建高度模块化的Java系统
作者:(美)Jeff McAffer,(美)Paul VanderLei,(美)Simon Archer 著,郭庆,李楠,池建强 译
出版社:人民邮电出版社
出版时间:2014-01-01
ISBN:9787115337443
定价:¥89.00
购买这本书可以去
内容简介
《图灵程序设计丛书·OSGi与Equinox:创建高度模块化的Java系统》分为四个部分。第一部分主要介绍了OSGi和Equinox,以及OSGi标准的Eclipse实现;第二部分采用非正式教程的方式教给读者如何从零开始构建真实的Toast应用,针对每一个步骤都提供了完整的在线示例代码;第三部分由原型构建转向实际的产品开发,主要介绍了OSGi和Equinox中用来构建成熟的OSGi应用必不可少的API——服务器端、声明式服务和发布工程,以及如何用它们来解决实践中的一些问题;第四部分呈现了动态性的最佳实践、整合代码库等主题以及一些OSGi和Equinox难题,帮助读者全面理解如何创建高度模块化系统。《图灵程序设计丛书·OSGi与Equinox:创建高度模块化的Java系统》适合有Java编程基础以及对OSGi技术有兴趣的开发人员阅读。
作者简介
Jeff McAffer Eclipse平台架构师,Eclipse RCP与Equinox OSGI两个项目的联合领导人,EclipseSource.com的联合创始人。除此之外,他还领导着RT PMC,并且还是Eclipse Project PMC、Eclipse架构委员会,以及Eclipse基金会董事会的成员。Jeff对Eclipse组件方面的各种进展都十分关心。除本书外,他还和别人合著了The Eclipse Rich Client Platform一书。 Paul Vanderlei 具有超过25年的软件开发经验,着重于面向对象设计和敏捷实践。在IBM时,与他人共同创建了内嵌式Java技术支持团队,针对汽车行业与医疗行业,提供内嵌式Java应用与用户界面的解决方案。他在商业应用上运用OSGi技术已有10余年的历史。 Simon Archer 具有超过16年的软件工程经验,着重于面向对象设计、敏捷实践和软件质量。2000年在OTI时,Simon开始在远程通信和RFID等领域使用并教授OSGi技术。现在致力于IBM Rational软件的研发,使用OSGi为Jazz Foundation工程构建协同的开发工具。
目录
第一部分 简介
第1章 OSGi、Equinox和Eclipse
1.1 简史
1.2 合作
1.3 实战的模块性和自由性
1.4 平台
1.5 生态系统
1.6 OSGi的来龙去脉
1.6.1 Java的谎言
1.6.2 现状核实
1.6.3 OSGi的寿命
1.7 实践中的OSGi和Equinox
1.8 总结 第2章 OSGi基本概念
2.1 bundle环境
2.2 为何选择OSGi
2.3 bundle剖析
2.4 模块化
2.4.1 导出包
2.4.2 导入包
2.4.3 需要的bundle
2.4.4 强化模块化特性
2.5 模块化设计概念
2.6 生命周期
2.7 协作
2.7.1 服务
2.7.2 扩展和扩展点
2.8 OSGi框架
2.9 安全性
2.10 OSGi框架实现
2.11 总结 第二部分 OSGi示例 第3章 教程介绍
3.1 何为Toast
3.2 Toast的演变
3.3 开发环境安装
3.4 示例代码
3.4.1 在章与章之间切换
3.4.2 比较
3.5 目标平台设置
3.5.1 预定义的目标
3.5.2 定义目标平台
3.6 通过示例进行学习
3.7 总结 第4章 你好,Toast
4.1 简单的场景
4.1.1 创建工程
4.1.2 Gps
4.1.3 Airbag和IAirbagListener
4.1.4 EmergencyMonitor
4.1.5 Main
4.1.6 运行
4.1.7 检查点
4.2 将Toast划分为Bundle
4.2.1 GPS bundle
4.2.2 安全气囊bundle
4.2.3 紧急情况监视器bundle
4.2.4 启动
4.3 总结 第5章 服务
5.1 转移到服务
5.2 注册GPS服务
5.3 注册安全气囊服务
5.4 获取服务示例代码
5.5 启动
5.6 故障排解
5.7 总结 第6章 动态服务
6.1 动态服务简介
6.2 使用服务追踪器
6.2.1 修改bundle激活器
6.2.2 启动
6.2.3 服务追踪器小结
6.3 使用服务激活器工具包
6.3.1 在目标平台上安装SAT
6.3.2 修改GPS bundle激活器
6.3.3 修改安全气囊bundle激活器
6.3.4 修改紧急情况监视器bundle激活器
6.3.5 启动
6.3.6 SAT小结
6.4 使用声明式服务
6.4.1 修改GPS bundle
6.4.2 修改安全气囊bundle
6.4.3 修改紧急情况监视器bundle
6.4.4 运行
6.4.5 声明式服务总结
6.5 总结 第7章 客户端/服务器端交互
7.1 后台
7.1.1 核心bundle
7.1.2 后台应急bundle
7.2 客户端
7.2.1 信道bundle
7.2.2 紧急情况监视器bundle
7.3 工具类
7.3.1 常量
7.3.2 属性
7.3.3 日志
7.4 运行Toast
7.4.1 运行后台
7.4.2 运行客户端
7.5 总结 第8章 测试
8.1 使Toast具备可测试性
8.2 对Toast进行单元测试
8.2.1 测试方案
8.2.2 编写测试用例
8.2.3 运行单元测试
8.3 系统测试Toast
8.3.1 测试规划
8.3.2 创建测试工具
8.3.3 编写测试用例
8.3.4 运行系统测试
8.4 总结 第9章 打包
9.1 定义Toast产品
9.1.1 创建产品配置
9.1.2 概述页
9.1.3 依赖页
9.1.4 配置页
9.1.5 启动页
9.1.6 运行产品
9.1.7 产品化客户端
9.2 导出Toast
9.3 为其他平台打包
9.4 认真考虑组件定义
9.4.1 版本和版本范围
9.4.2 导出包和友元
9.5 总结 第10章 插件化服务
10.1 分离接口与接口的实现
10.1.1 将Fake Airbag与其接口相互分离
10.1.2 将模拟GPS与其接口相分离
10.1.3 回归测试
10.2 设备模拟
10.2.1 概念
10.2.2 设备模拟器框架
10.3 作为插件式服务的模拟设备
10.3.1 模拟安全气囊
10.3.2 模拟GPS
10.4 运行模拟设备
10.5 总结 第11章 可扩展的用户界面
11.1 Crust
11.1.1 Crust shell
11.1.2 Crust工具
11.2 紧急情况处理
11.2.1 创建可插拔的用户界面
11.2.2 重构紧急情况处理业务逻辑
11.2.3 紧急情况处理用户界面
11.2.4 运行用户界面
11.3 车载气候系统和音响系统
11.3.1 车载气候系统与音响设备
11.3.2 空调和音响屏幕
11.3.3 运行用户界面
11.4 OSGi应用模型
11.5 导航和地图
11.5.1 谷歌地球集成
11.5.2 地图支持
11.5.3 应用可扩展性和导航支持
11.5.4 运行用户界面
11.6 总结 第12章 动态配置
12.1 跟踪场景
12.2 安装跟踪代码
12.2.1 Core Tracking Bundle
12.2.2 后台跟踪bundle
12.2.3 客户端跟踪bundle
12.3 运行基本的跟踪场景
12.4 配置
12.4.1 OSGi的管理控制
12.4.2 客户端跟踪bundle
12.4.3 运行可配置的Toast
12.4.4 具备持久化配置的运行
12.5 总结 第13章 Web门户
13.1 门户
13.2 PortalServlet
13.3 使用服务进行操作查询
13.4 声明门户操作
13.5 白板模式的利与弊
13.6 总结 第14章 使用p2进行系统开发
14.1 Equinox p2简介
14.1.1 架构
14.1.2 p2元数据可安装的单元
14.1.3 组件
14.1.4 仓库
14.1.5 模式
14.1.6 指挥者
14.1.7 引擎
14.2 细化Toast结构
14.2.1 使用特性定义产品
14.2.2 后台特性
14.2.3 客户端特性
14.2.4 重构小结
14.3 编写一个配置器
14.3.1 配置器
14.3.2 配置后台
14.3.3 后台小结
14.4 增加一个Web部署页面
14.4.1 创建动作
14.4.2 管理动作
14.4.3 安装卸载动作
14.4.4 安装配置UI
14.5 导出、运行以及配置
14.5.1 引入一个p2仓库
14.5.2 运行Toast后台
14.5.3 创建并配置汽车
14.6 客户端动态部署
14.7 总结 第三部分 进阶篇 第15章 声明式服务
15.1 声明式服务模型
15.2 常见场景
15.2.1 最简单的组件
15.2.2 引用服务
15.2.3 提供服务
15.2.4 引用和提供服务
15.2.5 立刻激活组件
15.2.6 白板模式
15.2.7 工厂组件
15.3 启动和调试DS应用
15.4 PDE工具
15.5 总结 第16章 扩展
16.1 扩展注册
16.2 扩展点
16.3 扩展
16.4 高级扩展主题
16.4.1 扩展ID
16.4.2 命名扩展和匿名扩展
16.4.3 扩展工厂
16.5 扩展注册机制的生命周期
16.6 动态扩展的应用场景
16.6.1 场景一:没有缓存
16.6.2 场景二:缓存扩展
16.6.3 场景三:缓存对象
16.7 服务与扩展
16.8 扩展注册的神话
16.9 总结 第17章 日志
17.1 日志服务规范
17.1.1 日志级别
17.1.2 记录日志
17.1.3 读取日志
17.1.4 监听日志
17.2 在Toast中使用LogService
17.3 使用LogReaderService
17.4 Toast的LogUtility类
17.5 Equinox的LogService实现
17.6 总结 第18章 HTTP支持
18.1 HttpService
18.2 注册和注销Servlet
18.3 声明式HTTP内容注册
18.4 使用Jetty
18.5 HTTP上下文和JAAS集成
18.5.1 基于HTTP的认证和登录
18.5.2 运行具备安全机制的客户端
18.6 疑难解答
18.6.1 BindException
18.6.2 HttpService在监听哪个端口
18.7 总结 第19章 服务器端
19.1 服务器端和OSGi
19.2 在Web应用中嵌入Toast后台系统
19.2.1 更新产品
19.2.2 Web应用的Root文件
19.2.3 构建Web应用
19.2.4 运行Web应用
19.2.5 疑难解答
19.2.6 参数说明
19.3 OSGi中的远程服务
19.3.1 Eclipse通信框架
19.3.2 远程服务
19.3.3 分布式Toast
19.3.4 远程服务主机
19.3.5 远程服务客户端
19.3.6 服务发现
19.3.7 运行分布式系统
19.4 总结 第20章 发布工程
20.1 什么是PDE构建
20.2 build.properties bundle
20.2.1 控制属性
20.2.2 使用自定义构建脚本
20.3 创建构建器
20.3.1 调整PDE构建的目标
20.3.2 build.properties
20.4 运行构建器
20.5 调整构建
20.5.1 自定义构建脚本
20.5.2 仓库和附加依赖项
20.5.3 从SCM(软件配置管理)系统中提取内容
20.5.4 获取map文件
20.5.5 自动替换版本号
20.5.6 设定版本号
20.5.7 定位和放置根目录文件
20.6 构建附加特征
20.6.1 创建特征构建器
20.6.2 build.properties
20.6.3 运行特征构建
20.7 构建WAR包
20.8 总结 第四部分 参考篇 第21章 动态性的最佳实践
21.1 动态性与你
21.2 Toast的动态性
21.3 动态性的挑战
21.4 动态性意识
21.4.1 对象处理
21.4.2 bundle监听器
21.5 扩展者模式和BundleTracker
21.6 动态性启用
21.7 启动和停止的动态性
21.7.1 启动级别
21.7.2 正确使用服务
21.7.3 关闭也不总是易事
21.8 总结 第22章 整合代码库
22.1 bundle形式的JAR
22.2 采用注入的方式进行bundle化
22.3 通过包装的方式进行bundle化
22.4 通过引用的方式进行bundle化
22.5 使用bnd进行bundle化
22.6 解决类加载问题
22.6.1 Class.forName()
22.6.2 与上下文类加载器有关的问题
22.6.3 管理JRE类
22.6.4 序列化
22.7 总结 第23章 高级主题
23.1 Equinox控制台
23.2 OSGi中的角色
23.3 bundle的形态
23.4 片段
23.5 单例
23.6 bundle生命周期
23.6.1 生命周期状态
23.6.2 BundleActivator
23.6.3 激活器的弊端
23.6.4 激活器的使用
23.7 bundle激活策略
23.8 控制bundle启动
23.8.1 持久化启动
23.8.2 启用激活策略
23.8.3 osgi.bundles
23.9 类加载
23.9.1 类查找算法
23.9.2 声明导入和导出
23.9.3 导入包与需要的bundle
23.9.4 可选性
23.9.5 use指令
23.9.6 再导出
23.9.7 x-internal和x-friends
23.9.8 引导代理
23.10 配置和运行Equinox
23.10.1 config.ini
23.10.2 可执行程序
23.11 数据区
23.12 总结 第24章 声明式服务引用
24.1 组件XML模式v1.0.0
24.1.1 声明XML的命名空间和模式
24.1.2 元素
24.1.3 元素
24.1.4 元素
24.1.5 元素
24.1.6 元素
24.1.7 元素
24.1.8 元素
24.2 组件的生命周期
24.2.1 满足组件的配置
24.2.2 组件的激活、注销与修改
24.2.3 访问引用服务
24.2.4 组件的即时性
24.2.5 组件属性
24.3 总结
1.1 简史
1.2 合作
1.3 实战的模块性和自由性
1.4 平台
1.5 生态系统
1.6 OSGi的来龙去脉
1.6.1 Java的谎言
1.6.2 现状核实
1.6.3 OSGi的寿命
1.7 实践中的OSGi和Equinox
1.8 总结 第2章 OSGi基本概念
2.1 bundle环境
2.2 为何选择OSGi
2.3 bundle剖析
2.4 模块化
2.4.1 导出包
2.4.2 导入包
2.4.3 需要的bundle
2.4.4 强化模块化特性
2.5 模块化设计概念
2.6 生命周期
2.7 协作
2.7.1 服务
2.7.2 扩展和扩展点
2.8 OSGi框架
2.9 安全性
2.10 OSGi框架实现
2.11 总结 第二部分 OSGi示例 第3章 教程介绍
3.1 何为Toast
3.2 Toast的演变
3.3 开发环境安装
3.4 示例代码
3.4.1 在章与章之间切换
3.4.2 比较
3.5 目标平台设置
3.5.1 预定义的目标
3.5.2 定义目标平台
3.6 通过示例进行学习
3.7 总结 第4章 你好,Toast
4.1 简单的场景
4.1.1 创建工程
4.1.2 Gps
4.1.3 Airbag和IAirbagListener
4.1.4 EmergencyMonitor
4.1.5 Main
4.1.6 运行
4.1.7 检查点
4.2 将Toast划分为Bundle
4.2.1 GPS bundle
4.2.2 安全气囊bundle
4.2.3 紧急情况监视器bundle
4.2.4 启动
4.3 总结 第5章 服务
5.1 转移到服务
5.2 注册GPS服务
5.3 注册安全气囊服务
5.4 获取服务示例代码
5.5 启动
5.6 故障排解
5.7 总结 第6章 动态服务
6.1 动态服务简介
6.2 使用服务追踪器
6.2.1 修改bundle激活器
6.2.2 启动
6.2.3 服务追踪器小结
6.3 使用服务激活器工具包
6.3.1 在目标平台上安装SAT
6.3.2 修改GPS bundle激活器
6.3.3 修改安全气囊bundle激活器
6.3.4 修改紧急情况监视器bundle激活器
6.3.5 启动
6.3.6 SAT小结
6.4 使用声明式服务
6.4.1 修改GPS bundle
6.4.2 修改安全气囊bundle
6.4.3 修改紧急情况监视器bundle
6.4.4 运行
6.4.5 声明式服务总结
6.5 总结 第7章 客户端/服务器端交互
7.1 后台
7.1.1 核心bundle
7.1.2 后台应急bundle
7.2 客户端
7.2.1 信道bundle
7.2.2 紧急情况监视器bundle
7.3 工具类
7.3.1 常量
7.3.2 属性
7.3.3 日志
7.4 运行Toast
7.4.1 运行后台
7.4.2 运行客户端
7.5 总结 第8章 测试
8.1 使Toast具备可测试性
8.2 对Toast进行单元测试
8.2.1 测试方案
8.2.2 编写测试用例
8.2.3 运行单元测试
8.3 系统测试Toast
8.3.1 测试规划
8.3.2 创建测试工具
8.3.3 编写测试用例
8.3.4 运行系统测试
8.4 总结 第9章 打包
9.1 定义Toast产品
9.1.1 创建产品配置
9.1.2 概述页
9.1.3 依赖页
9.1.4 配置页
9.1.5 启动页
9.1.6 运行产品
9.1.7 产品化客户端
9.2 导出Toast
9.3 为其他平台打包
9.4 认真考虑组件定义
9.4.1 版本和版本范围
9.4.2 导出包和友元
9.5 总结 第10章 插件化服务
10.1 分离接口与接口的实现
10.1.1 将Fake Airbag与其接口相互分离
10.1.2 将模拟GPS与其接口相分离
10.1.3 回归测试
10.2 设备模拟
10.2.1 概念
10.2.2 设备模拟器框架
10.3 作为插件式服务的模拟设备
10.3.1 模拟安全气囊
10.3.2 模拟GPS
10.4 运行模拟设备
10.5 总结 第11章 可扩展的用户界面
11.1 Crust
11.1.1 Crust shell
11.1.2 Crust工具
11.2 紧急情况处理
11.2.1 创建可插拔的用户界面
11.2.2 重构紧急情况处理业务逻辑
11.2.3 紧急情况处理用户界面
11.2.4 运行用户界面
11.3 车载气候系统和音响系统
11.3.1 车载气候系统与音响设备
11.3.2 空调和音响屏幕
11.3.3 运行用户界面
11.4 OSGi应用模型
11.5 导航和地图
11.5.1 谷歌地球集成
11.5.2 地图支持
11.5.3 应用可扩展性和导航支持
11.5.4 运行用户界面
11.6 总结 第12章 动态配置
12.1 跟踪场景
12.2 安装跟踪代码
12.2.1 Core Tracking Bundle
12.2.2 后台跟踪bundle
12.2.3 客户端跟踪bundle
12.3 运行基本的跟踪场景
12.4 配置
12.4.1 OSGi的管理控制
12.4.2 客户端跟踪bundle
12.4.3 运行可配置的Toast
12.4.4 具备持久化配置的运行
12.5 总结 第13章 Web门户
13.1 门户
13.2 PortalServlet
13.3 使用服务进行操作查询
13.4 声明门户操作
13.5 白板模式的利与弊
13.6 总结 第14章 使用p2进行系统开发
14.1 Equinox p2简介
14.1.1 架构
14.1.2 p2元数据可安装的单元
14.1.3 组件
14.1.4 仓库
14.1.5 模式
14.1.6 指挥者
14.1.7 引擎
14.2 细化Toast结构
14.2.1 使用特性定义产品
14.2.2 后台特性
14.2.3 客户端特性
14.2.4 重构小结
14.3 编写一个配置器
14.3.1 配置器
14.3.2 配置后台
14.3.3 后台小结
14.4 增加一个Web部署页面
14.4.1 创建动作
14.4.2 管理动作
14.4.3 安装卸载动作
14.4.4 安装配置UI
14.5 导出、运行以及配置
14.5.1 引入一个p2仓库
14.5.2 运行Toast后台
14.5.3 创建并配置汽车
14.6 客户端动态部署
14.7 总结 第三部分 进阶篇 第15章 声明式服务
15.1 声明式服务模型
15.2 常见场景
15.2.1 最简单的组件
15.2.2 引用服务
15.2.3 提供服务
15.2.4 引用和提供服务
15.2.5 立刻激活组件
15.2.6 白板模式
15.2.7 工厂组件
15.3 启动和调试DS应用
15.4 PDE工具
15.5 总结 第16章 扩展
16.1 扩展注册
16.2 扩展点
16.3 扩展
16.4 高级扩展主题
16.4.1 扩展ID
16.4.2 命名扩展和匿名扩展
16.4.3 扩展工厂
16.5 扩展注册机制的生命周期
16.6 动态扩展的应用场景
16.6.1 场景一:没有缓存
16.6.2 场景二:缓存扩展
16.6.3 场景三:缓存对象
16.7 服务与扩展
16.8 扩展注册的神话
16.9 总结 第17章 日志
17.1 日志服务规范
17.1.1 日志级别
17.1.2 记录日志
17.1.3 读取日志
17.1.4 监听日志
17.2 在Toast中使用LogService
17.3 使用LogReaderService
17.4 Toast的LogUtility类
17.5 Equinox的LogService实现
17.6 总结 第18章 HTTP支持
18.1 HttpService
18.2 注册和注销Servlet
18.3 声明式HTTP内容注册
18.4 使用Jetty
18.5 HTTP上下文和JAAS集成
18.5.1 基于HTTP的认证和登录
18.5.2 运行具备安全机制的客户端
18.6 疑难解答
18.6.1 BindException
18.6.2 HttpService在监听哪个端口
18.7 总结 第19章 服务器端
19.1 服务器端和OSGi
19.2 在Web应用中嵌入Toast后台系统
19.2.1 更新产品
19.2.2 Web应用的Root文件
19.2.3 构建Web应用
19.2.4 运行Web应用
19.2.5 疑难解答
19.2.6 参数说明
19.3 OSGi中的远程服务
19.3.1 Eclipse通信框架
19.3.2 远程服务
19.3.3 分布式Toast
19.3.4 远程服务主机
19.3.5 远程服务客户端
19.3.6 服务发现
19.3.7 运行分布式系统
19.4 总结 第20章 发布工程
20.1 什么是PDE构建
20.2 build.properties bundle
20.2.1 控制属性
20.2.2 使用自定义构建脚本
20.3 创建构建器
20.3.1 调整PDE构建的目标
20.3.2 build.properties
20.4 运行构建器
20.5 调整构建
20.5.1 自定义构建脚本
20.5.2 仓库和附加依赖项
20.5.3 从SCM(软件配置管理)系统中提取内容
20.5.4 获取map文件
20.5.5 自动替换版本号
20.5.6 设定版本号
20.5.7 定位和放置根目录文件
20.6 构建附加特征
20.6.1 创建特征构建器
20.6.2 build.properties
20.6.3 运行特征构建
20.7 构建WAR包
20.8 总结 第四部分 参考篇 第21章 动态性的最佳实践
21.1 动态性与你
21.2 Toast的动态性
21.3 动态性的挑战
21.4 动态性意识
21.4.1 对象处理
21.4.2 bundle监听器
21.5 扩展者模式和BundleTracker
21.6 动态性启用
21.7 启动和停止的动态性
21.7.1 启动级别
21.7.2 正确使用服务
21.7.3 关闭也不总是易事
21.8 总结 第22章 整合代码库
22.1 bundle形式的JAR
22.2 采用注入的方式进行bundle化
22.3 通过包装的方式进行bundle化
22.4 通过引用的方式进行bundle化
22.5 使用bnd进行bundle化
22.6 解决类加载问题
22.6.1 Class.forName()
22.6.2 与上下文类加载器有关的问题
22.6.3 管理JRE类
22.6.4 序列化
22.7 总结 第23章 高级主题
23.1 Equinox控制台
23.2 OSGi中的角色
23.3 bundle的形态
23.4 片段
23.5 单例
23.6 bundle生命周期
23.6.1 生命周期状态
23.6.2 BundleActivator
23.6.3 激活器的弊端
23.6.4 激活器的使用
23.7 bundle激活策略
23.8 控制bundle启动
23.8.1 持久化启动
23.8.2 启用激活策略
23.8.3 osgi.bundles
23.9 类加载
23.9.1 类查找算法
23.9.2 声明导入和导出
23.9.3 导入包与需要的bundle
23.9.4 可选性
23.9.5 use指令
23.9.6 再导出
23.9.7 x-internal和x-friends
23.9.8 引导代理
23.10 配置和运行Equinox
23.10.1 config.ini
23.10.2 可执行程序
23.11 数据区
23.12 总结 第24章 声明式服务引用
24.1 组件XML模式v1.0.0
24.1.1 声明XML的命名空间和模式
24.1.2 元素
24.1.3 元素
24.1.4 元素
24.1.5 元素
24.1.6 元素
24.1.7 元素
24.1.8 元素
24.2 组件的生命周期
24.2.1 满足组件的配置
24.2.2 组件的激活、注销与修改
24.2.3 访问引用服务
24.2.4 组件的即时性
24.2.5 组件属性
24.3 总结
猜您喜欢