OSGi实战

当前位置:首页 > 网络编程 > 编程语言与程序设计 > OSGi实战

出版社:人民邮电出版社
出版日期:2013-1
ISBN:9787115300676
作者:Richard S. Hall,Karl Pauls,Stuart McCulloch,David Savage
页数:484页

前言

  早在2000年,我刚开始从事OSGi相关技术工作时,无法预料自己会在10年后继续从事该领域的工作。那时,OSGi瞄准了嵌入式市场,但那不是我感兴趣的领域。我想创建高动态性、模块化的应用,恰巧OSGi给了我实现上述目标的可能。当时,还没有免费的OSGi框架的实现,所以2000年12月我在柏林自由大学工作时,开始着手开发自己的OSGi开源框架实现Oscar。后来Oscar随我一起搬到格勒诺布尔,因为我去了约瑟夫·傅里叶大学工作。也就是在这里Oscar开始蓬勃发展。  随着OSGi技术的发展,Oscar于2004年加入了ObjectWeb开源联盟,后来又于2005年发展成为Apache 软件基金会的Felix项目。我很幸运地受到了OSGi联盟的邀请,直接参与制定OSGi第4版规范,OSGi R4规范于2004年发布。自那时起,我参与了OSGi规范制定的相关工作。起初我是一名学术研究者,2008年我加入Sun公司(已被Oracle收购)的Glass Fish团队,最近一直从事行业相关问题的研究。在最近10年间很多东西都发生了改变。  OSGi技术已不再局限于嵌入式市场,而是发展成为一个面向Java的成熟模块化系统。这种转变在2004年Eclipse IDE采用OSGi重构其插件系统时,帮了很大的忙。由于Spring和其他主要的应用服务器在企业应用领域对OSGi技术的采纳,进一步促成了OSGi技术的持续发展。尽管Java模块化仍在不断发展,但在未来很长一段时间里OSGi技术会扮演重要角色。现在说说本书。  几年以来我一直想写一本介绍OSGi的书,但是考虑到任务的艰巨以及没有时间,我并未将这一念头付诸实践。在2008年的夏天,我觉得是时候行动起来了,于是开始写作但很快又停滞不前了。直到Karl和Stuart以及后来David的加入,我才最终得偿所愿。我们各自有着不同的OSGi经验,将我们各自擅长的方面组合在一起,就包括了OSGi的全部内容。尽管如此,本书的写作仍旧历时两年多,期间经历过工作的变动以及几个孩子的降生。希望我们的努力能够对你有所帮助。  Richard S. Hall

内容概要

Richard S. Hall是Apache Felix框架开发组重要成员。2000年以后Richard参与了OSGi的开源工作并于2004年加入OSGi联盟。Richard还是Apache软件组织成员,目前在Oracle的GlassFish项目组工作,帮助解决OSGi的相关问题。
Karl Pauls是Apache Felix Framework Security Provider项目的实现者,Apache Felix框架开发组的核心成员。Karl还是Apache软件组织成员,参与开发过多个Apache项目以及其他的开源项目。目前Karl是Luminis的一位研究员。

书籍目录

目    录
第一部分  OSGi:模块化、生命周期和服务
第1章  揭开OSGi的面纱  2
1.1  OSGi的定义和目标  3
1.1.1  Java模块化的不足  3
1.1.2  OSGi能帮助你吗  6
1.2  OSGi架构概览  6
1.2.1  OSGi框架  7
1.2.2  将它们结合起来  10
1.3  Hello, world!  10
1.3.1  模块层示例  10
1.3.2  生命周期层示例  12
1.3.3  服务层示例  13
1.3.4  场景设置  15
1.4  OSGi的相关技术  16
1.4.1  Java EE  16
1.4.2  Jini  17
1.4.3  NetBeans  17
1.4.4  JMX  17
1.4.5  轻量级容器  18
1.4.6  Java 业务集成  18
1.4.7  JSR 277  19
1.4.8  JSR 294  19
1.4.9  SCA  19
1.4.10  .NET  20
1.5  小结  20
第2章  精通模块化  21
2.1  什么是模块化  21
2.2  为什么使用模块化  24
2.3  模块化绘图程序  24
2.4  bundle  27
2.4.1  bundle在物理模块化中扮演的角色  28
2.4.2  bundle在逻辑模块化中扮演的角色  29
2.5  使用元数据定义bundle  30
2.5.1  可读信息  31
2.5.2  bundle标识  32
2.5.3  代码可见性  34
2.5.4  类搜索顺序  42
2.6  完成绘图程序设计  43
2.6.1  提高绘图程序的模块化  44
2.6.2  启动新的绘图程序  46
2.7  OSGi依赖解析  46
2.7.1  自动解析依赖  47
2.7.2  使用约束保证一致性  51
2.8  回顾模块化绘图程序的好处  56
2.9  小结  59
第3章  生命周期  60
3.1  生命周期管理  60
3.1.1  什么是生命周期管理  61
3.1.2  为什么需要生命周期管理  62
3.2  OSGi bundle的生命周期  63
3.2.1  将生命周期引入绘图程序  63
3.2.2  OSGi框架在生命周期中的作用  65
3.2.3  bundles激活器的清单文件条目  66
3.2.4  生命周期API  67
3.2.5  生命周期状态图  72
3.2.6  bundle缓存和框架重启  73
3.3  在bundle中使用生命周期API  74
3.3.1  配置bundle  75
3.3.2  部署bundle  76
3.3.3  检查框架状态  81
3.3.4  持久化bundle状态  82
3.3.5  事件监听  85
3.3.6  bundle自我销毁  87
3.4  动态扩展绘图程序  89
3.5  生命周期与模块化  96
3.5.1  解析bundle  96
3.5.2  刷新bundle  98
3.5.3  当更新操作没有完成更新  101
3.6  小结  103
第4章  学习服务  104
4.1  什么是服务、为什么使用服务、什么时候用服务  104
4.1.1  什么是服务  104
4.1.2  为什么使用服务  106
4.1.3  什么时候应该使用服务  109
4.1.4  什么时候不应该使用服务  110
4.1.5  仍然不确定  110
4.2  OSGi服务实战  111
4.2.1  发布服务  112
4.2.2  查找并绑定服务  114
4.3  处理动态性  117
4.3.1  避免常见的陷阱  118
4.3.2  监听服务  121
4.3.3  服务跟踪  126
4.4  在绘图示例中使用服务  129
4.4.1  定义图形服务  129
4.4.2  发布图形服务  129
4.4.3  跟踪图形服务  130
4.5  将服务关联到模块层和生命周期层  131
4.5.1  为什么不能看到我的服务  131
4.5.2  能否提供一个bundle特有的服务  132
4.5.3  应该在何时释放服务  133
4.5.4  何时注销服务  133
4.5.5  应该将接口分开打包吗  133
4.6  标准服务  134
4.6.1  核心服务  134
4.6.2  compendium服务  135
4.7  小结  136
第5章  深入分析模块化特性  138
5.1  管理导出  138
5.1.1  导入导出包  139
5.1.2  隐式导出属性  142
5.1.3  强制导出属性  143
5.1.4  导出过滤  145
5.1.5  复制导出  146
5.2  导入解耦  147
5.2.1  可选导入  147
5.2.2  动态导入  148
5.2.3  可选导入与动态导入的比较  149
5.2.4  日志示例  150
5.3  需要的bundle  153
5.3.1  声明bundle依赖关系  154
5.3.2  聚合分割包  155
5.3.3  bundle依赖的相关问题  158
5.4  将bundle划分为片段  158
5.4.1  片段  159
5.4.2  本地化中使用片段  161
5.5  处理与环境相关的问题  164
5.5.1  依赖执行环境  165
5.5.2  构建本地库  166
5.6  小结  168
第二部分  OSGi实践
第6章  走近bundle  170
6.1  将JAR转换成bundle  170
6.1.1  选取bundle标识  171
6.1.2  导出包  173
6.1.3  发现需要导入的包  177
6.1.4  嵌入与导入  181
6.1.5  增加对生命周期的支持  181
6.1.6  JAR文件转换为bundle的简要说明  183
6.2  分割一个应用到多个bundle  184
6.2.1  创建一个大型bundle  184
6.2.2  将代码拆分到多个bundle中  193
6.2.3  降低模块耦合  197
6.2.4  是否要转换成bundle  201
6.3  小结  204
第7章  测试应用程序  206
7.1  迁移测试到OSGi  206
7.1.1  容器内测试  207
7.1.2  创建测试bundle  208
7.1.3  覆盖所有基础  210
7.2  模拟OSGi  212
7.2.1  测试期望的行为  213
7.2.2  模拟实战  214
7.2.3  模拟意外情景  215
7.2.4  处理多线程测试  216
7.2.5  暴露竞态条件  218
7.3  OSGi高级测试  219
7.3.1  OSGi测试工具  220
7.3.2  在多个框架中运行测试  221
7.3.3  单元测试  225
7.3.4  集成测试  226
7.3.5  管理测试  228
7.4  小结  230
第8章  调试应用  232
8.1  调试bundle  232
8.1.1  调试实战  234
8.1.2  使用HotSwap解决问题  239
8.2  解决类加载相关问题  243
8.2.1  ClassNotFoundException与NoClassDefFoundError  244
8.2.2  类型转换问题  246
8.2.3  使用uses约束  247
8.2.4  同Class.forName()划清界限  249
8.2.5  线程上下文类加载器  252
8.3  追踪内存泄漏  254
8.4  悬挂服务  258
8.4.1  查找悬挂服务  259
8.4.2  防止悬挂服务  259
8.5  小结  261
第9章  管理bundle  262
9.1  包和bundle的版本控制  262
9.1.1  有效的版本控制  263
9.1.2  包的版本控制  264
9.1.3  bundle的版本控制  266
9.2  配置bundle  267
9.2.1  配置管理服务  268
9.2.2  元类型服务  276
9.2.3  首选项服务  279
9.3  延迟启动bundle  281
9.3.1  激活策略  281
9.3.2  使用激活策略  283
9.4  小结  284
第10章  管理应用  285
10.1  部署bundle  285
10.1.1  管理代理  285
10.1.2  OSGi bundle仓库  287
10.1.3  部署管理服务  294
10.2  指定bundle激活顺序  301
10.2.1  介绍启动级别服务  302
10.2.2  使用启动级别服务  303
10.3  小结  306
第三部分  高级主题
第11章  组件模型和框架  308
11.1  面向组件  308
11.1.1  什么是组件  309
11.1.2  为什么需要组件  310
11.2  OSGi与组件  311
11.2.1  OSGi面向服务的组件模型  311
11.2.2  改进OSGi组件模型  312
11.2.3  使用组件的绘图示例  316
11.3  声明式服务  316
11.3.1  构建声明式服务组件  317
11.3.2  使用声明式服务提供服务  318
11.3.3  利用声明式服务使用服务  319
11.3.4  声明式服务组件生命周期  324
11.4  小结  330
第12章  高级组件框架  331
12.1  Blueprint容器  331
12.1.1  Blueprint架构  332
12.1.2  用Blueprint提供服务  332
12.1.3  通过Blueprint使用服务  335
12.1.4  Blueprint组件生命周期  339
12.1.5  Blueprint高级特性  343
12.2  Apache Felix iPOJO  347
12.2.1  构建iPOJO组件  348
12.2.2  通过iPOJO提供服务  349
12.2.3  通过iPOJO使用服务  350
12.2.4  iPOJO组件生命周期  355
12.2.5  使用iPOJO实例化组件  358
12.3  混合和匹配  362
12.4  小结  364
第13章  启动和嵌入OSGi框架  365
13.1  标准启动和嵌入  365
13.1.1  框架API概览  366
13.1.2  创建框架实例  367
13.1.3  配置框架  369
13.1.4  启动框架实例  370
13.1.5  停止框架实例  371
13.2  启动框架  372
13.2.1  确定安装哪些bundle  373
13.2.2  干净地关闭  373
13.2.3  配置、创建和启动框架  374
13.2.4  安装bundle  374
13.2.5  启动bundle  375
13.2.6  启动主bundle  375
13.2.7  等待关闭  376
13.3  嵌入框架  377
13.3.1  内部还是外部  378
13.3.2  谁在控制  380
13.3.3  嵌入式框架示例  381
13.4  小结  386
第14章  确保应用程序的安全  388
14.1  使用安全或者不使用安全  388
14.2  安全:努力尝试使用  390
14.3  OSGi特定的权限  393
14.3.1  PackagePermission  393
14.3.2  BundlePermission  394
14.3.3  AdminPermission  395
14.3.4  ServicePermission  396
14.3.5  相对文件权限  397
14.4  使用条件权限管理服务管理权限  397
14.4.1  条件权限  397
14.4.2  条件权限管理服务  398
14.4.3  bundle 位置条件  400
14.4.4  使用Conditional- Permission Admin  400
14.4.5  实现一个策略文件读取器  404
14.5  数字签名的bundle  405
14.5.1  学习术语  406
14.5.2  创建证书和签名bundle  406
14.5.3  BundleSignerCondition  408
14.6  本地权限  410
14.7  高级权限管理  411
14.7.1  自定义条件概览  411
14.7.2  基于日期的条件  412
14.7.3  用户输入条件  414
14.8  汇总  417
14.9  小结  421
第15章  Web应用和Web服务  422
15.1  创建Web应用  422
15.1.1  使用HTTP服务规范  424
15.1.2  使用Web应用规范  432
15.1.3  标准WAR:Web URL处理程序  436
15.2  提供和使用Web服务  437
15.2.1  提供一个Web服务  438
15.2.2  使用Web服务  441
15.2.3  发布服务  445
15.3  小结  452
附录A  构建 bundle  453
附录B  OSGi标准服务  466

编辑推荐

《OSGi实战》由Richard S. Hall、Karl Pauls、Stuart McCulloch、David Savage联手打造,系统、全面、深入地阐述OSGi的重要特性及其使用方法。理论与实践相结合,能指导实际开发。《OSGi实战》通过精彩的讲解和贴近实战的丰富示例,帮助读者完成“入门-进阶-提高”三级跳。

作者简介

《 OSGi实战》是学习OSGi的全面指导,利用与架构和开发人员相关的示例清楚地讲解OSGi概念,同时探讨了很多实践场景和技术,阐述了开发人员有多需要OSGi,怎么将OSGi嵌入其他容器中,将遗留系统移入OSGi的最佳实践,等等。 
《OSGi实战》面向OSGi规范的使用者,系统、全面、深入地阐述OSGi的重要特性及其使用方法,还介绍了某些技术的低层实现细节,引领读者畅游OSGi的世界。

图书封面


 OSGi实战下载



发布书评

 
 


精彩短评 (总计13条)

  •     内容不错,不过印刷质量实在对不起读者呀
  •     有点像盗版的有点像盗版的有点像盗版的
  •     学习一下OSGI
  •     osgi
  •     学习osgi必备书,质量不错。
  •     有助于加深对osgi思想的理解
  •     怎么这么脏啊!封面里面! 细节很重要哦! 对顾客要无上尊重!虽然说内容是本质! 亚马逊不精细!
  •     oracle资料
  •     一直在用,想系统看下
  •     感觉osgi有点太臃肿了,完成了太多本不应当完成的任务。
  •     看了180多页,看不下去了。加上OSGI本来就晦涩难懂,翻译水平实在是差,有些语句就不通顺,不建议作为入门书籍来读。
  •     代码是有很多,但是真的in action了吗?看到后面就很无聊了
  •     书的质量不错,有原版英文电子文档,再看看中文的加深理解和消化吧
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024