科技
类型
7.1
豆瓣评分
可以朗读
语音朗读
526千字
字数
2013-01-01
发行日期
展开全部
主编推荐语
OSGi规范制定者亲自撰写,汇集Apache项目技术实战经验。
内容简介
为了弥补OSGi规范在应用指导方面的不足,四位活跃在OSGi开发第一线的技术专家联手打造了本书。本书面向OSGi规范的使用者,系统、全面、深入地阐述OSGi的重要性及其使用方法。
本书还介绍了某些技术的低层实现细节,引领读者畅游OSGi的世界。
全书可分为三大部分:解读OSGi核心规范;阐述如何在实践中使用规范;介绍一些与OSGi相关的高级主题。
本书通过精彩的讲解和贴近实战的丰富示例,帮助读者完成“入门→进阶→提高”三级跳。
目录
- 版权信息
- 序
- 致谢
- 前言
- 关于本书
- 路线图
- 代码及排版规范
- 作者在线
- 关于实战系列
- 关于封面插图
- 第一部分 OSGi:模块化、生命周期和服务
- 第1章 揭开OSGi的面纱
- 1.1 OSGi的定义和目标
- 1.1.1 Java模块化的不足
- 1.1.2 OSGi能帮助你吗
- 1.2 OSGi架构概览
- 1.2.1 OSGi框架
- 1.2.2 将它们结合起来
- 1.3 Hello, world!
- 1.3.1 模块层示例
- 1.3.2 生命周期层示例
- 1.3.3 服务层示例
- 1.3.4 场景设置
- 1.4 OSGi的相关技术
- 1.4.1 Java EE
- 1.4.2 Jini
- 1.4.3 NetBeans
- 1.4.4 JMX
- 1.4.5 轻量级容器
- 1.4.6 Java业务集成
- 1.4.7 JSR 277
- 1.4.8 JSR 294
- 1.4.9 SCA
- 1.4.10 .NET
- 1.5 小结
- 第2章 精通模块化
- 2.1 什么是模块化
- 模块化与面向对象
- 2.2 为什么使用模块化
- 2.3 模块化绘图程序
- 2.4 bundle
- 2.4.1 bundle在物理模块化中扮演的角色
- 2.4.2 bundle在逻辑模块化中扮演的角色
- 2.5 使用元数据定义bundle
- 2.5.1 可读信息
- 2.5.2 bundle标识
- 2.5.3 代码可见性
- 2.5.4 类搜索顺序
- 2.6 完成绘图程序设计
- 2.6.1 提高绘图程序的模块化
- 2.6.2 启动新的绘图程序
- 2.7 OSGi依赖解析
- 2.7.1 自动解析依赖
- 2.7.2 使用约束保证一致性
- 2.8 回顾模块化绘图程序的好处
- 2.9 小结
- 第3章 生命周期
- 3.1 生命周期管理
- 3.1.1 什么是生命周期管理
- 3.1.2 为什么需要生命周期管理
- 3.2 OSGi bundle的生命周期
- 3.2.1 将生命周期引入绘图程序
- 3.2.2 OSGi框架在生命周期中的作用
- 3.2.3 bundle激活器的清单文件条目
- 3.2.4 生命周期API
- 3.2.5 生命周期状态图
- 3.2.6 bundle缓存和框架重启
- 3.3 在bundle中使用生命周期API
- 3.3.1 配置bundle
- 3.3.2 部署bundle
- 3.3.3 检查框架状态
- 3.3.4 持久化bundle状态
- 3.3.5 事件监听
- 3.3.6 bundle自我销毁
- 3.4 动态扩展绘图程序
- 3.5 生命周期与模块化
- 3.5.1 解析bundle
- 3.5.2 刷新bundle
- 3.5.3 更新操作没有完成更新
- 3.6 小结
- 第4章 学习服务
- 4.1 什么是服务、为什么使用服务、什么时候用服务
- 4.1.1 什么是服务
- 4.1.2 为什么使用服务
- 4.1.3 什么时候应该使用服务
- 4.1.4 什么时候不应该使用服务
- 4.1.5 仍然不确定
- 4.2 OSGi服务实战
- 4.2.1 发布服务
- 4.2.2 查找并绑定服务
- 4.3 处理动态性
- 4.3.1 避免常见的陷阱
- 4.3.2 监听服务
- 4.3.3 服务追踪
- 4.4 在绘图示例中使用服务
- 4.4.1 定义图形服务
- 4.4.2 发布图形服务
- 4.4.3 追踪图形服务
- 4.5 将服务关联到模块层和生命周期层
- 4.5.1 为什么不能看到我的服务
- 4.5.2 能否提供一个bundle特有的服务
- 4.5.3 应该在何时释放服务
- 4.5.4 何时注销服务
- 4.5.5 应该将接口分开打包吗
- 4.6 标准服务
- 4.6.1 核心服务
- 4.6.2 compendium服务
- 4.7 小结
- 第5章 深入分析模块化特性
- 5.1 管理导出
- 5.1.1 导入导出包
- 5.1.2 隐式导出属性
- 5.1.3 强制导出属性
- 5.1.4 导出过滤
- 5.1.5 复制导出
- 5.2 导入解耦
- 5.2.1 可选导入
- 5.2.2 动态导入
- 5.2.3 可选导入与动态导入的比较
- 5.2.4 日志示例
- 5.3 需要的bundle
- 5.3.1 声明bundle依赖关系
- 5.3.2 聚合分割包
- 5.3.3 bundle依赖的相关问题
- 5.4 将bundle划分为片段
- 5.4.1 片段
- 5.4.2 本地化中使用片段
- 5.5 处理与环境相关的问题
- 5.5.1 依赖执行环境
- 5.5.2 构建本地库
- 5.6 小结
- 第二部分 OSGi实践
- 第6章 走近bundle
- 6.1 将JAR转换成bundle
- 6.1.1 选取bundle标识
- 6.1.2 导出包
- 6.1.3 发现需要导入的包
- 6.1.4 嵌入与导入
- 6.1.5 增加对生命周期的支持
- 6.1.6 JAR文件转换为bundle的简要说明
- 6.2 分割一个应用到多个bundle
- 6.2.1 创建一个大型bundle
- 6.2.2 将代码拆分到多个bundle中
- 6.2.3 降低模块耦合
- 6.2.4 是否要转换成bundle
- 6.3 小结
- 第7章 测试应用程序
- 7.1 迁移测试到OSGi
- 7.1.1 容器内测试
- 7.1.2 创建测试bundle
- 7.1.3 覆盖所有基础
- 7.2 模拟OSGi
- 7.2.1 测试期望的行为
- 7.2.2 模拟实战
- 7.2.3 模拟意外情景
- 7.2.4 处理多线程测试
- 7.2.5 暴露竞态条件
- 7.3 OSGi高级测试
- 7.3.1 OSGi测试工具
- 7.3.2 在多个框架中运行测试
- 7.3.3 单元测试
- 7.3.4 集成测试
- 7.3.5 管理测试
- 7.4 小结
- 第8章 调试应用
- 8.1 调试bundle
- 8.1.1 调试实战
- 8.1.2 使用HotSwap解决问题
- 8.2 解决类加载相关问题
- 8.2.1 ClassNotFoundException与NoClassDefFoundError
- 8.2.2 类型转换问题
- 8.2.3 使用uses约束
- 8.2.4 同Class.forName()划清界限
- 8.2.5 线程上下文类加载器
- 8.3 追踪内存泄漏
- 分析OSGi堆转储
- 8.4 悬挂服务
- 8.4.1 查找悬挂服务
- 8.4.2 防止悬挂服务
- 8.5 小结
- 第9章 管理bundle
- 9.1 包和bundle的版本控制
- 9.1.1 有效的版本控制
- 9.1.2 包的版本控制
- 9.1.3 bundle的版本控制
- 9.2 配置bundle
- 9.2.1 配置管理服务
- 9.2.2 元类型服务
- 9.2.3 首选项服务
- 9.3 延迟启动bundle
- 9.3.1 激活策略
- 9.3.2 使用激活策略
- 9.4 小结
- 第10章 管理应用
- 10.1 部署bundle
- 10.1.1 管理代理
- 10.1.2 OSGi bundle仓库
- 10.1.3 部署管理服务
- 10.2 指定bundle激活顺序
- 10.2.1 介绍启动级别服务
- 10.2.2 使用启动级别服务
- 10.3 小结
- 第三部分 高级主题
- 第11章 组件模型和框架
- 11.1 面向组件
- 11.1.1 什么是组件
- 11.1.2 为什么需要组件
- 11.2 OSGi与组件
- 11.2.1 OSGi面向服务的组件模型
- 11.2.2 改进OSGi组件模型
- 11.2.3 使用组件的绘图示例
- 11.3 声明式服务
- 11.3.1 构建声明式服务组件
- 11.3.2 使用声明式服务提供服务
- 11.3.3 利用声明式服务使用服务
- 11.3.4 声明式服务组件生命周期
- 11.4 小结
- 第12章 高级组件框架
- 12.1 Blueprint容器
- 12.1.1 Blueprint架构
- 12.1.2 用Blueprint提供服务
- 12.1.3 通过Blueprint使用服务
- 12.1.4 Blueprint组件生命周期
- 12.1.5 Blueprint高级特性
- 12.2 Apache Felix iPOJO
- 12.2.1 构建iPOJO组件
- 12.2.2 通过iPOJO提供服务
- 12.2.3 通过iPOJO使用服务
- 12.2.4 iPOJO组件生命周期
- 12.2.5 使用iPOJO实例化组件
- 12.3 混合和匹配
- 12.4 小结
- 第13章 启动和嵌入OSGi框架
- 13.1 标准启动和嵌入
- 13.1.1 框架API概览
- 13.1.2 创建框架实例
- 13.1.3 配置框架
- 13.1.4 启动框架实例
- 13.1.5 停止框架实例
- 13.2 启动框架
- 13.2.1 确定安装哪些bundle
- 13.2.2 干净地关闭
- 13.2.3 配置、创建和启动框架
- 13.2.4 安装bundle
- 13.2.5 启动bundle
- 13.2.6 启动主bundle
- 13.2.7 等待关闭
- 13.3 嵌入框架
- 13.3.1 内部还是外部
- 13.3.2 谁在控制
- 13.3.3 嵌入式框架示例
- 13.4 小结
- 第14章 确保应用程序的安全
- 14.1 使用安全或者不使用安全
- 14.2 安全:努力尝试使用
- Java以及OSGi中的安全性
- 14.3 OSGi特定的权限
- 14.3.1 PackagePermission
- 14.3.2 BundlePermission
- 14.3.3 AdminPermission
- 14.3.4 ServicePermission
- 14.3.5 相对文件权限
- 14.4 使用条件权限管理服务管理权限
- 14.4.1 条件权限
- 14.4.2 条件权限管理服务
- 14.4.3 bundle位置条件
- 14.4.4 使用ConditionalPermissionAdmin
- 14.4.5 实现一个策略文件读取器
- 14.5 数字签名的bundle
- 14.5.1 学习术语
- 14.5.2 创建证书和签名bundle
- 14.5.3 BundleSignerCondition
- 14.6 本地权限
- 14.7 高级权限管理
- 14.7.1 自定义条件概览
- 14.7.2 基于日期的条件
- 14.7.3 用户输入条件
- 14.8 汇总
- 14.9 小结
- 第15章 Web应用和Web服务
- 15.1 创建Web应用
- 15.1.1 使用HTTP服务规范
- 15.1.2 使用Web应用规范
- 15.1.3 标准WAR:Web URL处理程序
- 15.2 提供和使用Web服务
- 15.2.1 提供一个Web服务
- 15.2.2 使用Web服务
- 15.2.3 发布服务
- 15.3 小结
- 附录A 构建bundle
- A.1 使用Ant构建
- A.1.1 介绍bnd工具
- A.1.2 头标识
- A.1.3 指令
- A.1.4 变量和宏
- A.1.5 选择版本策略
- A.1.6 修复拆分包
- A.2 使用Maven构建
- A.2.1 maven-build-plugin
- A.2.2 刨根问底
- A.2.3 嵌入依赖
- A.2.4 部署构件到OBR
- A.2.5 构建非JAR工程
- A.3 供你参考的构建工具
- A.3.1 Eclipse PDE
- A.3.2 Apache Flex Sigil
- A.3.3 Eclipse bndtools
- A.3.4 IDEA Osmorc
- A.3.5 NetBeans Netisgo
- A.3.6 Maven Tycho
- A.3.7 Spring Bundlor
- 附录B OSGi标准服
- B.1 核心OSGi服务
- B.2 Compendium OSGi服务
- B.3 企业OSGi服务
展开全部
出版方
人民邮电出版社·图灵出品
图灵社区成立于2005年6月,由人民邮电出版社投资控股,以策划出版高质量的科技书籍为核心业务,主要出版领域包括计算机、电子电气、数学统计、科普等,通过引进国际高水平的教材、专著,以及发掘国内优秀原创作品等途径,为目标读者提供一流的内容。