OSGi与Equinox:创建高度模块化的Java系统.pdf

OSGi与Equinox:创建高度模块化的Java系统.pdf
 

书籍描述

编辑推荐
特色如下:

结合了详尽的实践教程、每一步骤的在线示例代码,以及深入的技术要领;
涵盖了OSGi编程模型、组件开发、OSGi服务、Eclipse bundle工具、服务器端Equinox和更多内容;
针对模块化系统构建的复杂性提供了理论、向导和最佳实践;
解决了从整合第三方代码库到服务器端编程的各种现实问题;
包含了一个综合的案例,从原型开始,通过不断重构最终交付了一个完全精炼的产品级系统。

无论你的应用、行业或问题属于何种范畴,只要你希望基于OSGi和Equinox技术构建顶级的软件系统,你就会发现本书是必备的精华资源

作者简介
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 2
1.1 简史 2
1.2 合作 3
1.3 实战的模块性和自由性 4
1.4 平台 4
1.5 生态系统 5
1.6 OSGi的来龙去脉 5
1.6.1 Java的谎言 5
1.6.2 现状核实 6
1.6.3 OSGi的寿命 6
1.7 实践中的OSGi和Equinox 7
1.8 总结 8

第2章 OSGi基本概念 9
2.1 bundle环境 9
2.2 为何选择OSGi 10
2.3 bundle剖析 13
2.4 模块化 14
2.4.1 导出包 14
2.4.2 导入包 14
2.4.3 需要的bundle 15
2.4.4 强化模块化特性 16
2.5 模块化设计概念 16
2.6 生命周期 17
2.7 协作 18
2.7.1 服务 18
2.7.2 扩展和扩展点 19
2.8 OSGi框架 20
2.9 安全性 20
2.10 OSGi框架实现 21
2.11 总结 21

第二部分 OSGi示例

第3章 教程介绍 24
3.1 何为Toast 24
3.2 Toast的演变 26
3.3 开发环境安装 27
3.4 示例代码 28
3.4.1 在章与章之间切换 28
3.4.2 比较 29
3.5 目标平台设置 30
3.5.1 预定义的目标 31
3.5.2 定义目标平台 32
3.6 通过示例进行学习 35
3.7 总结 36

第4章 你好,Toast 37
4.1 简单的场景 37
4.1.1 创建工程 37
4.1.2 Gps 38
4.1.3 Airbag和IAirbagListener 40
4.1.4 EmergencyMonitor 41
4.1.5 Main 43
4.1.6 运行 43
4.1.7 检查点 43
4.2 将Toast划分为Bundle 43
4.2.1 GPS bundle 45
4.2.2 安全气囊bundle 47
4.2.3 紧急情况监视器bundle 47
4.2.4 启动 49
4.3 总结 50

第5章 服务 52
5.1 转移到服务 52
5.2 注册GPS服务 54
5.3 注册安全气囊服务 58
5.4 获取服务示例代码 61
5.5 启动 64
5.6 故障排解 64
5.7 总结 65

第6章 动态服务 66
6.1 动态服务简介 66
6.2 使用服务追踪器 67
6.2.1 修改bundle激活器 67
6.2.2 启动 70
6.2.3 服务追踪器小结 72
6.3 使用服务激活器工具包 73
6.3.1 在目标平台上安装SAT 73
6.3.2 修改GPS bundle激活器 73
6.3.3 修改安全气囊bundle激活器 74
6.3.4 修改紧急情况监视器bundle激活器 74
6.3.5 启动 75
6.3.6 SAT小结 76
6.4 使用声明式服务 76
6.4.1 修改GPS bundle 77
6.4.2 修改安全气囊bundle 79
6.4.3 修改紧急情况监视器bundle 80
6.4.4 运行 82
6.4.5 声明式服务总结 83
6.5 总结 83

第7章 客户端/服务器端交互 84
7.1 后台 84
7.1.1 核心bundle 84
7.1.2 后台应急bundle 85
7.2 客户端 88
7.2.1 信道bundle 88
7.2.2 紧急情况监视器bundle 92
7.3 工具类 94
7.3.1 常量 94
7.3.2 属性 94
7.3.3 日志 95
7.4 运行Toast 95
7.4.1 运行后台 96
7.4.2 运行客户端 97
7.5 总结 97

第8章 测试 99
8.1 使Toast具备可测试性 99
8.2 对Toast进行单元测试 100
8.2.1 测试方案 100
8.2.2 编写测试用例 101
8.2.3 运行单元测试 103
8.3 系统测试Toast 104
8.3.1 测试规划 104
8.3.2 创建测试工具 105
8.3.3 编写测试用例 107
8.3.4 运行系统测试 110
8.4 总结 111

第9章 打包 112
9.1 定义Toast产品 112
9.1.1 创建产品配置 112
9.1.2 概述页 114
9.1.3 依赖页 115
9.1.4 配置页 116
9.1.5 启动页 116
9.1.6 运行产品 118
9.1.7 产品化客户端 118
9.2 导出Toast 118
9.3 为其他平台打包 121
9.4 认真考虑组件定义 123
9.4.1 版本和版本范围 123
9.4.2 导出包和友元 124
9.5 总结 126

第10章 插件化服务 127
10.1 分离接口与接口的实现 127
10.1.1 将Fake Airbag与其接口相互分离 128
10.1.2 将模拟GPS与其接口相分离 129
10.1.3 回归测试 129
10.2 设备模拟 130
10.2.1 概念 130
10.2.2 设备模拟器框架 131
10.3 作为插件式服务的模拟设备 131
10.3.1 模拟安全气囊 131
10.3.2 模拟GPS 133
10.4 运行模拟设备 134
10.5 总结 135

第11章 可扩展的用户界面 136
11.1 Crust 136
11.1.1 Crust shell 136
11.1.2 Crust工具 137
11.2 紧急情况处理 138
11.2.1 创建可插拔的用户界面 138
11.2.2 重构紧急情况处理业务逻辑 139
11.2.3 紧急情况处理用户界面 140
11.2.4 运行用户界面 141
11.3 车载气候系统和音响系统 142
11.3.1 车载气候系统与音响设备 142
11.3.2 空调和音响屏幕 144
11.3.3 运行用户界面 144
11.4 OSGi应用模型 145
11.5 导航和地图 148
11.5.1 谷歌地球集成 148
11.5.2 地图支持 151
11.5.3 应用可扩展性和导航支持 152
11.5.4 运行用户界面 152
11.6 总结 154

第12章 动态配置 155
12.1 跟踪场景 155
12.2 安装跟踪代码 156
12.2.1 Core Tracking Bundle 156
12.2.2 后台跟踪bundle 157
12.2.3 客户端跟踪bundle 157
12.3 运行基本的跟踪场景 158
12.4 配置 159
12.4.1 OSGi的管理控制 159
12.4.2 客户端跟踪bundle 159
12.4.3 运行可配置的Toast 161
12.4.4 具备持久化配置的运行 162
12.5 总结 162

第13章 Web门户 163
13.1 门户 163
13.2 PortalServlet 164
13.3 使用服务进行操作查询 165
13.4 声明门户操作 168
13.5 白板模式的利与弊 170
13.6 总结 170

第14章 使用p2进行系统开发 171
14.1 Equinox p2简介 171
14.1.1 架构 172
14.1.2 p2元数据——可安装的单元 172
14.1.3 组件 173
14.1.4 仓库 173
14.1.5 模式 174
14.1.6 指挥者 174
14.1.7 引擎 174
14.2 细化Toast结构 174
14.2.1 使用特性定义产品 175
14.2.2 后台特性 175
14.2.3 客户端特性 177
14.2.4 重构小结 180
14.3 编写一个配置器 180
14.3.1 配置器 181
14.3.2 配置后台 184
14.3.3 后台小结 184
14.4 增加一个Web部署页面 184
14.4.1 创建动作 185
14.4.2 管理动作 185
14.4.3 安装卸载动作 186
14.4.4 安装配置UI 186
14.5 导出、运行以及配置 186
14.5.1 引入一个p2仓库 186
14.5.2 运行Toast后台 189
14.5.3 创建并配置汽车 190
14.6 客户端动态部署 191
14.7 总结 192

第三部分 进阶篇

第15章 声明式服务 194
15.1 声明式服务模型 194
15.2 常见场景 195
15.2.1 最简单的组件 195
15.2.2 引用服务 197
15.2.3 提供服务 198
15.2.4 引用和提供服务 199
15.2.5 立刻激活组件 201
15.2.6 白板模式 202
15.2.7 工厂组件 207
15.3 启动和调试DS应用 213
15.4 PDE工具 214
15.5 总结 216

第16章 扩展 217
16.1 扩展注册 217
16.2 扩展点 219
16.3 扩展 221
16.4 高级扩展主题 222
16.4.1 扩展ID 222
16.4.2 命名扩展和匿名扩展 222
16.4.3 扩展工厂 223
16.5 扩展注册机制的生命周期 223
16.6 动态扩展的应用场景 224
16.6.1 场景一:没有缓存 225
16.6.2 场景二:缓存扩展 225
16.6.3 场景三:缓存对象 227
16.7 服务与扩展 229
16.8 扩展注册的神话 231
16.9 总结 231

第17章 日志 232
17.1 日志服务规范 232
17.1.1 日志级别 232
17.1.2 记录日志 233
17.1.3 读取日志 233
17.1.4 监听日志 234
17.2 在Toast中使用LogService 234
17.3 使用LogReaderService 237
17.4 Toast的LogUtility类 239
17.5 Equinox的LogService实现 240
17.6 总结 242

第18章 HTTP支持 243
18.1 HttpService 243
18.2 注册和注销Servlet 245
18.3 声明式HTTP内容注册 248
18.4 使用Jetty 248
18.5 HTTP上下文和JAAS集成 249
18.5.1 基于HTTP的认证和登录 249
18.5.2 运行具备安全机制的客户端 252
18.6 疑难解答 253
18.6.1 BindException 253
18.6.2 HttpService在监听哪个端口 253
18.7 总结 254

第19章 服务器端 255
19.1 服务器端和OSGi 255
19.2 在Web应用中嵌入Toast后台系统 257
19.2.1 更新产品 257
19.2.2 Web应用的Root文件 259
19.2.3 构建Web应用 261
19.2.4 运行Web应用 262
19.2.5 疑难解答 264
19.2.6  参数说明 265
19.3 OSGi中的远程服务 265
19.3.1 Eclipse通信框架 266
19.3.2 远程服务 266
19.3.3 分布式Toast 266
19.3.4 远程服务主机 267
19.3.5 远程服务客户端 268
19.3.6 服务发现 269
19.3.7 运行分布式系统 270
19.4 总结 271

第20章 发布工程 272
20.1 什么是PDE构建 272
20.2 build.properties bundle 273
20.2.1 控制属性 274
20.2.2 使用自定义构建脚本 275
20.3 创建构建器 275
20.3.1 调整PDE构建的目标 276
20.3.2 build.properties 276
20.4 运行构建器 279
20.5 调整构建 282
20.5.1 自定义构建脚本 282
20.5.2 仓库和附加依赖项 283
20.5.3 从SCM(软件配置管理)系统中提取内容 283
20.5.4 获取map文件 285
20.5.5 自动替换版本号 286
20.5.6 设定版本号 286
20.5.7 定位和放置根目录文件 287
20.6 构建附加特征 288
20.6.1 创建特征构建器 288
20.6.2 build.properties 288
20.6.3 运行特征构建 290
20.7 构建WAR包 291
20.8 总结 291

第四部分 参考篇

第21章 动态性的最佳实践 294
21.1 动态性与你 294
21.2 Toast的动态性 295
21.3 动态性的挑战 296
21.4 动态性意识 297
21.4.1 对象处理 298
21.4.2 bundle监听器 299
21.5 扩展者模式和BundleTracker 300
21.6 动态性启用 300
21.7 启动和停止的动态性 302
21.7.1 启动级别 303
21.7.2 正确使用服务 304
21.7.3 关闭也不总是易事 304
21.8 总结 305

第22章 整合代码库 306
22.1 bundle形式的JAR 306
22.2 采用注入的方式进行bundle化 307
22.3 通过包装的方式进行bundle化 309
22.4 通过引用的方式进行bundle化 310
22.5 使用bnd进行bundle化 312
22.6 解决类加载问题 312
22.6.1 Class.forName() 312
22.6.2 与上下文类加载器有关的问题 316
22.6.3 管理JRE类 317
22.6.4 序列化 318
22.7 总结 318

第23章 高级主题 319
23.1 Equinox控制台 319
23.2 OSGi中的角色 322
23.3 bundle的形态 323
23.4 片段 325
23.5 单例 327
23.6 bundle生命周期 328
23.6.1 生命周期状态 328
23.6.2 BundleActivator 329
23.6.3 激活器的弊端 330
23.6.4 激活器的使用 330
23.7 bundle激活策略 331
23.8 控制bundle启动 332
23.8.1 持久化启动 332
23.8.2 启用激活策略 333
23.8.3 osgi.bundles 333
23.9 类加载 334
23.9.1 类查找算法 334
23.9.2 声明导入和导出 335
23.9.3 导入包与需要的bundle 335
23.9.4 可选性 336
23.9.5 use指令 336
23.9.6 再导出 337
23.9.7 x-internal和x-friends 337
23.9.8 引导代理 337
23.10 配置和运行Equinox 338
23.10.1 config.ini 338
23.10.2 可执行程序 339
23.11 数据区 341
23.12 总结 343

第24章 声明式服务引用 344
24.1 组件XML模式v1.0.0 344
24.1.1 声明XML的命名空间和模式 344
24.1.2  元素 345
24.1.3  元素 347
24.1.4  元素 347
24.1.5  元素 348
24.1.6  元素 349
24.1.7  元素 349
24.1.8  元素 349
24.2 组件的生命周期 351
24.2.1 满足组件的配置 351
24.2.2 组件的激活、注销与修改 353
24.2.3 访问引用服务 355
24.2.4 组件的即时性 357
24.2.5 组件属性 357
24.3 总结 359

内容简介
  《OSGi与Equinox:创建高度模块化的Java系统》分为四个部分。第一部分主要介绍了OSGi和Equinox,以及OSGi标准的Eclipse实现;第二部分采用非正式教程的方式教给读者如何从零开始构建真实的Toast应用,针对每一个步骤都提供了完整的在线示例代码;第三部分由原型构建转向实际的产品开发,主要介绍了OSGi和Equinox中用来构建成熟的OSGi应用必不可少的API——服务器端、声明式服务和发布工程,以及如何用它们来解决实践中的一些问题;第四部分呈现了动态性的最佳实践、整合代码库等主题以及一些OSGi和Equinox难题,帮助读者全面理解如何创建高度模块化系统。
  《OSGi与Equinox:创建高度模块化的Java系统》适合有Java编程基础以及对OSGi技术有兴趣的开发人员阅读。

购买书籍

当当网购书 京东购书 卓越购书

PDF电子书下载地址

相关书籍

搜索更多