《OSGi与Equinox 创建高度模块化的Java系统》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:(美)麦克艾弗,(美)万德雷,(美)阿彻著;郭庆,李楠,池建强译
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2014
  • ISBN:9787115337443
  • 页数:360 页
图书介绍:本书主要介绍如何使用OSGi与Equinox创建高度模块化的动态系统。首先介绍Eclipse绑定工具,然后介绍创建高度模块化系统的最佳策略,介绍OSGi声明式服务以及如何用它们解决各种实际问题,最后通过一个完整的案例介绍系统开发全过程。

第一部分 简介 2

第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示例 24

第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 Ai rbag和IAi rbagLi stener 40

4.1.4 EmergencyMoni tor 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

第三部分 进阶篇 194

第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 <init-param>参数说明 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

第四部分 参考篇 294

第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扩展者模式和Bundl eTracker 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.orName() 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 <component>元素 345

24.1.3 <implementation>元素 347

24.1.4 <property>元素 347

24.1.5 <properties>元素 348

24.1.6 <service>元素 349

24.1.7 <provice>元素 349

24.1.8 <reference>元素 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