当前位置:主页 > 书籍配套资源 > OSGi配套资源
《深入理解OSGi:Equinox原理、应用与最佳实践》源代码

《深入理解OSGi:Equinox原理、应用与最佳实践》源代码

  • 更新:2022-05-10
  • 大小:13.2 MB
  • 类别:OSGi
  • 作者:周志明、谢小明
  • 出版:机械工业出版社
  • 格式:PDF

  • 资源介绍
  • 相关推荐

本书是原创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
  • 第1章Java模块化之路 / 2
  • 1.1什么是OSGi / 2
  • 1.1.1OSGi规范的演进 / 4
  • 1.1.2Java模块化规范之争 / 7
  • 1.2为什么使用OSGi / 11
  • 1.2.1OSGi能让软件开发变得更容易吗 / 12
  • 1.2.2OSGi能让系统变得更稳定吗 / 13
  • 1.2.3OSGi能让系统运行得更快吗 / 14
  • 1.2.4OSGi能支撑企业级开发吗 / 15
  • 1.3本章小结 / 16
  • 第二部分OSGi规范与原理
  • 第2章模块层规范与原理 / 18
  • 2.1OSGi规范概要 / 18
  • 2.2Bundle / 20
  • 2.3描述元数据 / 21
  • 2.3.1预定义标记 / 21
  • 2.3.2使用可视化工具 / 27
  • 2.4Bundle的组织与依赖 / 31
  • 2.4.1导出和导入Package / 31
  • 2.4.2约束规则与示例 / 38
  • 2.4.3校验Bundle有效性 / 44
  • 2.5OSGi的类加载架构 / 45
  • 2.5.1父类加载器 / 46
  • 2.5.2Bundle类加载器 / 47
  • 2.5.3其他类加载器 / 49
  • 2.5.4类加载顺序 / 50
  • 2.6定义执行环境 / 51
  • 2.7本地化 / 54
  • 2.8本章小结 / 55
  • 第3章生命周期层规范与原理 / 56
  • 3.1Bundle标识 / 56
  • 3.2Bundle状态及转换 / 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.6Bundle上下文 / 72
  • 3.7本章小结 / 73
  • 第4章服务层规范与原理 / 74
  • 4.1服务 / 74
  • 4.2OSGi服务示例 / 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.3ServiceRegistration对象的提前请求 / 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.1EventListenerHook / 101
  • 4.10.2FindHook / 101
  • 4.10.3ListenerHook / 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.2Equinox常用组件简介 / 117
  • 5.3Equinox启动器 / 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.2Equinox源码解析 / 142
  • 6.2.1OSGi容器启动 / 142
  • 6.2.2Bundle状态恢复 / 147
  • 6.2.3解析Bundle依赖关系 / 153
  • 6.2.4OSGi类加载器实现 / 157
  • 6.3本章小结 / 162
  • 第7章服务器端OSGi / 163
  • 7.1OSGi与Web服务器 / 163
  • 7.2HTTP 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.4HTTP Service源码解析 / 180
  • 7.4.1BridgeServlet与OSGi容器启动 / 180
  • 7.4.2BridgeServlet与HTTP请求委派 / 186
  • 7.4.3DelegateServlet实现原理 / 188
  • 7.5本章小结 / 192
  • 第8章用户管理服务 / 193
  • 8.1User Admin服务规范简介 / 193
  • 8.1.1服务目标与基础概念 / 193
  • 8.1.2验证用户身份 / 195
  • 8.1.3验证用户权限 / 196
  • 8.1.4User Admin事件 / 197
  • 8.2实践项目—Neonat论坛用户管理模块 / 198
  • 8.2.1需求与依赖项分析 / 198
  • 8.2.2用户与用户组的实现 / 200
  • 8.2.3页面权限 / 201
  • 8.2.4用户登录与身份验证 / 202
  • 8.3User Admin源码解析 / 206
  • 8.3.1用户管理实现 / 206
  • 8.3.2外部服务使用实践 / 208
  • 8.4本章小结 / 211
  • 第9章Preferences服务 / 212
  • 9.1Preferences服务规范简介 / 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.3Preferences源码解析 / 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.3Component类型 / 237
  • 10.1.4Component生命周期 / 240
  • 10.1.5Component属性 / 245
  • 10.1.6绑定与发布服务 / 245
  • 10.1.7激活与钝化方法 / 252
  • 10.1.8Component配置总结 / 254
  • 10.2实践项目—使用声明式服务改造Neonat论坛 / 259
  • 10.2.1可视化编辑工具 / 259
  • 10.2.2DS容器管理 / 263
  • 10.3DS容器源码解析 / 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.2Subsystem格式 / 277
  • 11.3Subsystem元数据 / 278
  • 11.3.1SUBSYSTEM.MF标识 / 278
  • 11.3.2DEPLOYMENT.MF标识 / 281
  • 11.4Subsystem类型与共享策略 / 283
  • 11.5组织管理Subsystem / 285
  • 11.6Subsystem部署与依赖策略 / 289
  • 11.7Subsystem生命周期 / 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.1Bundle相关名称命名 / 298
  • 12.2Bundle划分原则 / 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.5Equinox x-*依赖 / 305
  • 12.4Equinox专有类加载机制 / 306
  • 12.4.1Buddy Loading类加载机制 / 306
  • 12.4.2ClassLoaderDelegateHook类加载机制 / 307
  • 12.5Bundle生命周期实践 / 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.2Start Level的使用 / 313
  • 12.9Fragment Bundle实践 / 314
  • 12.10保持OSGi动态性 / 315
  • 12.11API Tools实践 / 317
  • 12.11.1API Baselines / 317
  • 12.11.2API Tools 注解 / 319
  • 12.11.3API Version版本管理 / 322
  • 12.11.4二进制文件不兼容 / 322
  • 12.12本章小结 / 322
  • 第13章Spring Dynamic Modules实践 / 324
  • 13.1Spring DM入门 / 324
  • 13.1.1Spring DM项目简介 / 324
  • 13.1.2安装Spring DM / 325
  • 13.1.3简单的Spring DM示例 / 326
  • 13.1.4Bundle和Spring上下文 / 331
  • 13.1.5命名空间 / 333
  • 13.2Spring DM进阶 / 337
  • 13.2.1Spring DM扩展配置 / 337
  • 13.2.2Web Extender / 344
  • 13.2.3Spring DM服务约束 / 345
  • 13.2.4在Spring上下文中使用BundleContext / 346
  • 13.3Spring DM企业应用 / 346
  • 13.3.1规划OSGi组件 / 347
  • 13.3.2在Spring DM中使用JPA / 348
  • 13.3.3事务管理 / 353
  • 13.3.4OSGi企业规范中的JPA / 358
  • 13.4Spring DM和Blueprint / 359
  • 13.5本章小结 / 360
  • 第14章构建可测试的OSGi系统 / 361
  • 14.1单元测试的必要性 / 362
  • 14.2单元测试的重要性 / 363
  • 14.3可测试代码的特征 / 364
  • 14.4OSGi单元测试 / 365
  • 14.4.1如何组织测试代码 / 366
  • 14.4.2如何进行OSGi单元测试 / 367
  • 14.5OSGi集成测试 / 373
  • 14.5.1Eclipse JUnit Plug-in Test / 374
  • 14.5.2Spring DM Test / 379
  • 14.5.3Pax Exam / 383
  • 14.6本章小结 / 384
  • 附录AJava类加载器简介 / 385
  • 附录BEquinox控制台命令 / 392
  • 附录COSGi子规范目录 / 397
  • 附录DOSGi相关项目 / 399
  • 附录EEquinox启动配置参数 / 401

资源下载

资源下载地址1:https://pan.baidu.com/s/1b8Cw_GBUDLhrdxb0SFvz0Q

网友留言