具体描述
国内第一本OSGi图书
OSGi国内推广者林昊多年经验的结晶
涵盖OSGi从入门到深入的知识体系
引领OSGi国内研究和普及
本书基于作者多年使用OSGi的经验而编写,涵盖了OSGi从入门到深入的知识体系,从OSGi的简介开题,介绍OSGi的作用及基本概念;其后进入OSGi实战,结合实例讲解如何基于OSGi框架编写模块化、动态化的各种Java应用;最后对OSGi知识进行深入讲解,通过对OSGi规范和实现框架(Equinox、Felix、Spring-DM和Apache CXF)的分析,以及最佳实践的介绍,帮助读者更好地掌握如何使用OSGi。
本书适合希望了解、深入掌握OSGi,以及编写模块化、动态化Java应用的Java架构师和开发人员阅读。
作者简介
林昊,China OSGi User Group Director,淘宝网平台架构部架构师。自2006年开始在实际的商业产品中使用OSGi,并根据自己的经验先后编写了《OSGi实战》及《OSGi进阶》两篇Opendoc,这两篇Opendoc是到目前为止仅有的完整介绍OSGi的中文资料,为OSGi在中国的推广起到了很大的作用。个人的研究方向主要为Java模块化、动态化系统的构建,以及高性能的大型分布式Java系统的构建。
曾宪杰,2002年毕业于浙江大学计算机系。先后在中科院下属企业、先锋电子(中国)就职。积累了丰富的Windows平台、企业级系统设计经验。现任淘宝网平台架构部架构师,主要研究方向为大规模集群环境下的消息中间件设计、分布式数据层和分布式系统。
目录信息
1.1 梦想中“即插即用”的系统 1
1.2 OSGi,拯救Java模块化的规范 1
1.3 厚积薄发的OSGi 2
1.4 OSGi基本概念 3
1.4.1 Bundle 3
1.4.2 Service 4
1.4.3 Service-Oriented Component Model(SOCM) 4
1.4.4 Declarative Service 6
1.4.5 部署 6
第2章 OSGi框架简介 7
2.1 Equinox 7
2.1.1 简介 7
2.1.2 环境搭建 7
2.1.3 HelloWorld 10
2.1.4 开发传统类型的应用 17
2.1.5 从外部启动Equinox 35
2.2 Felix 38
2.2.1 简介 38
2.2.2 环境搭建 38
2.2.3 应用的部署 38
2.2.4 在Eclipse中调试Felix 39
2.3 Spring-DM 43
2.3.1 简介 43
2.3.2 环境搭建 44
2.3.3 HelloWorld 48
2.3.4 Web版HelloWorld 51
第3章 基于Spring-DM实现Petstore 57
3.1 “即插即用”的Petstore 57
3.1.1 Petstore的功能需求 57
3.1.2 OSGi框架的功能和设计思想 58
3.1.3 Petstore的设计 60
3.2 新一代Petstore的实现 70
3.2.1 环境准备 70
3.2.2 Utils模块 72
3.2.3 Bootstrap模块 74
3.2.4 ProductDal模块 79
3.2.5 ShoppingCartDal模块 80
3.2.6 ProductList模块 81
3.2.7 ShoppingCart模块 85
3.2.8 ProductManagement模块 85
3.3 部署 85
3.4 Petstore的扩展 85
第4章 基于Apache CXF实现分布式Petstore 87
4.1 分布式OSGi 87
4.2 分布式Petstore的设计 87
4.3 Apache CXF简介 90
4.3.1 CXF-DOSGi HelloWorld 90
4.3.2 集成Spring-DM的CXF-DOSGi HelloWorld 95
4.4 分布式Petstore的实现 101
4.5 部署 105
第5章 构建OSGi Bundle Repository 107
5.1 OSGi Bundle Repository的使用 107
5.2 Apache Felix OBR的使用 110
5.2.1 命令行方式的用法 110
5.2.2 代码方式使用OBR 113
5.3 构建OSGi Bundle Repository 117
第6章 OSGi规范解读 119
6.1 OSGi规范发展历程 119
6.2 Core规范解读.. 120
6.2.1 Module Layer 120
6.2.2 LifeCycle Layer 129
6.2.3 Service Layer 132
6.3 OSGi SERVICE规范解读 133
6.3.1 Log Service 134
6.3.2 Http Service 137
6.3.3 Configuration Admin Service 139
6.3.4 Declarative Services 142
6.3.5 Event Admin Service 145
第7章 Equinox实现分析 149
7.1 模块化 149
7.1.1 加载并解析jar为Bundle 149
7.1.2 Bundle类共享及类加载机制 152
7.2 动态化 159
第8章 Felix实现分析 173
8.1 模块化 173
8.1.1 加载并解析jar为Bundle 173
8.1.2 Bundle类共享及类加载机制 174
8.2 动态化 177
第9章 Spring-DM实现分析 189
9.1 Spring Dynamic Module概述 189
9.2 Bean发布为OSGi服务实现分析 190
9.2.1 Extender Bundle启动 190
9.2.2 Bundle中的NamespaceHandler处理 192
9.2.3 ExtenderConfiguration处理 194
9.2.4 ApplicationContext处理 200
9.3 将OSGi Service引入为Bean 209
9.3.1 OSGi:service的处理 209
9.3.2 OSGi:set和OSGi:list的处理 211
9.4 将Bundle部署到Web服务器 214
9.4.1 WebExtender的启动 214
9.4.2 部署Bundle到Web服务器 215
第10章 CXF实现分析 217
10.1 Apache CXF-DOSGi实现分析 217
10.2 SingleBundle发行包 217
10.2.1 SingleBundle发行包的启动 218
10.3 把Bundle暴露为远程服务 221
10.3.1 DSW Bundle启动 221
10.3.2 RegisterDistributionProviderService 222
10.3.3 创建Hook对象及注册Listener 224
10.3.4 处理当前框架中的Bundle 225
10.3.5 发布远程服务 225
10.4 使用远程服务 231
10.4.1 Discovery Bundle启动 231
10.4.2 处理当前框架中的Bundle 232
10.4.3 注册远程服务的本地存根 234
第11章 先睹为快:OSGi R 4.2草稿版 237
11.1 Core 238
11.1.1 Module Layer 238
11.1.2 Lifecycle Layer 238
11.1.3 Service Layer 242
11.1.4 Framework API 243
11.2 Compendium 243
11.2.1 Declarative Services Specification 243
11.2.2 Deployment Admin Specification 244
11.2.3 Monitor Admin Service Specification 247
第12章 OSGi展望 251
12.1 Java企业应用领域 251
12.2 Java标准领域 252
12.3 OSGi R5 253
索引 255
· · · · · · (收起)
读后感
面向组件开发是软件开发商长久以来的一个梦想。1998年EJB刚刚出现时,Sun曾经预言EJB会促进面向组件开发,未来将出现一个庞大繁荣的软件组件市场,开发软件会像用积木搭建房子一样方便快速。然而,10年时间过去了,这个理想遥遥无期,甚至早已有人宣判了它的死刑。他们说:面向...
读过之后的评价是还行。OSGi入门的一本很好的书,可是缺乏高度和深度。尽管介绍了Equinox, Spring-DM和Felix这三个常用的OSGi容器的使用、开发、以及WebApplication的开发部署;尽管介绍了OSGi的规范和Core Framework和Layer。 但是都只做到了浅尝辄止,甚至还没有浅尝就嘎然...
读过之后的评价是还行。OSGi入门的一本很好的书,可是缺乏高度和深度。尽管介绍了Equinox, Spring-DM和Felix这三个常用的OSGi容器的使用、开发、以及WebApplication的开发部署;尽管介绍了OSGi的规范和Core Framework和Layer。 但是都只做到了浅尝辄止,甚至还没有浅尝就嘎然...
看玩这本书,我明白了个道理:事情没有难的,就怕认真。 国内的IT出版果然进步了很多,从装帧到序言,搞的都很专业。第一本OSGI的书,果然噱头。 其实只有第一章可以翻翻,后面你会被淹没在无数的截图中。一个hello world反复在各种不同的OSGI实现间变换,这种腾挪功夫我好像...
看玩这本书,我明白了个道理:事情没有难的,就怕认真。 国内的IT出版果然进步了很多,从装帧到序言,搞的都很专业。第一本OSGI的书,果然噱头。 其实只有第一章可以翻翻,后面你会被淹没在无数的截图中。一个hello world反复在各种不同的OSGI实现间变换,这种腾挪功夫我好像...
用户评价
这本书在架构思想的传导上达到了一个非常高的水准。它不仅仅停留在对技术规范的复述,而是深入挖掘了这些规范背后的哲学根源——为什么这些约束是必要的,以及它们如何服务于更宏大的目标,例如系统的可塑性和韧性。作者对“边界”的定义和维护的重视程度,贯穿了全书始终,这让我对未来所有软件设计都多了一层敬畏之心。它强调的不仅仅是功能的实现,更是系统“非功能性需求”的实现。阅读过程中,我多次停下来,反思自己当前工作中的架构决策,并迅速识别出其中潜藏的风险点。这种能够即时产生反思和行动的阅读体验,才是真正优秀技术书籍的价值所在。它无疑是为那些追求卓越工程实践的专业人士量身打造的深度读物,是案头常备的参考宝典。
这本书的深度和广度简直让我惊叹不已!作者在剖析复杂概念时展现出的清晰思路和严谨态度,完全不像是在讲解枯燥的技术文档,更像是在进行一场精心设计的思想漫游。比如,书中对模块化设计哲学层面的探讨,远超出了单纯的代码实现,它触及了软件架构的本质困境,并巧妙地将历史演进中的教训融入其中。我尤其欣赏它对依赖管理和生命周期控制的精妙描述,那种庖丁解牛般的分解能力,让原本模糊不清的边界变得锐利起来。读完对这些核心机制的理解,我感觉自己对构建大型、可维护系统的信心倍增。它不仅仅是告诉你“怎么做”,更深层次地告诉你“为什么必须这样做”,这种对底层逻辑的透彻挖掘,是市面上许多浮于表面的教程望尘莫及的。那种抽丝剥茧、层层递进的叙事节奏感,让整个阅读过程充满了智力上的愉悦和挑战。对于任何一个渴望从“能用”跃升到“精通”的开发者而言,这绝对是一本能帮你打通任督二脉的指南。
这本书的叙事风格非常具有个人特色,充满了对技术美学的追求。它避免了那种冷冰冰的流水账式的技术罗列,而是用一种近乎散文的笔触,勾勒出软件工程领域中那些优雅的设计模式。阅读起来,与其说是学习,不如说是一种与一位深思熟虑的智者进行对话的过程。作者在讲解复杂架构决策时,总能找到恰到好处的比喻,将晦涩难懂的组件间交互关系描绘得生动形象。这种文学性和技术性的完美结合,极大地降低了学习曲线的陡峭感,让即便是初次接触此领域的人也能逐步领悟其精髓。尤其是对服务间通信契约的讨论部分,其措辞的精准和观点的独到,让人拍案叫绝。它让我开始重新审视自己过去在设计系统接口时过于草率的态度,意识到代码的清晰度与长期维护成本之间存在着多么紧密的联系。
坦白讲,这本书的篇幅和信息密度令人生畏,但一旦你沉浸其中,就会发现时间过得飞快。它几乎涵盖了从基础概念建立到高级故障排查的全光谱知识体系。我特别赞赏作者在处理兼容性和演进策略上的详尽说明,这通常是其他书籍轻描淡写一带而过的部分。书中对于版本冲突管理和模块间依赖升级的策略分析,简直是教科书级别的范例。它并没有给出“唯一的正确答案”,而是清晰地展示了不同策略的优劣势,引导读者根据自己的业务背景做出最明智的选择。这种开放式的引导而非强制性的灌输,极大地提升了读者的自主思考能力。对于那些需要在遗留系统上进行现代化改造的工程师来说,这本书提供的路线图无疑是无价之宝,它教会我们如何在保持系统稳定性的前提下,逐步实现技术上的迭代飞跃。
我不得不说,这本书的实战指导性简直强悍到让人想立刻投入代码世界中去检验一番。它没有停留在理论的象牙塔里高谈阔论,而是迅速将抽象的概念落地到具体的场景应用之中。书中每一个示例代码块,都像是经过千锤百炼的结晶,每一个参数的设定、每一个配置文件的编写,背后都有着深刻的权衡和考量。最让我印象深刻的是它对性能调优部分的论述,那种对运行时环境细微差异的捕捉和处理,体现了作者对该领域深厚的实战经验积累。这不像是一本新近出版的书籍,它更像是一部沉淀了多年项目血泪教训的“武功秘籍”。很多我过去在实际项目中遇到但始终找不到完美解决方案的棘手问题,在这本书里都能找到优雅且经过验证的解决路径。它教会我的不仅仅是API的调用,更是面对复杂分布式系统时应有的审慎态度和结构化思维。读完后,我感觉自己的“工具箱”里瞬间多了许多趁手的利器。
就知道肯定会有人吐槽这本书又是一堆eclipse截图,那是因为osgi和eclipse的plugin动态绑定机制一脉相承,事实上,osgi的开发过程本来就是一个分层抽象的简化过程,java在package上捅的篓子,就仿佛javascript的匿名函数一样,既是优点也是隐患。模块化虽然离不开这些自动化工具和行业规约,但最终还是考验架构设计能力……
他的几本书其实都挺糊弄人的.不如直接看文档和开源实现了.
绝对垃圾书籍,很无语
他的几本书其实都挺糊弄人的.不如直接看文档和开源实现了.
写的有点混论...