且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《深入理解OSGi:Equinox原理、应用与***实践》一导读

更新时间:2022-09-30 13:21:38

《深入理解OSGi:Equinox原理、应用与***实践》一导读

前  言

为什么写这本书

随着软件规模的日益增大,程序按模块拆分、按模块开发和按模块部署等需求变得越来越迫切,“模块化”成为了Java社区中最热门的话题之一。而OSGi技术—Java业界事实上的模块化标准,也被越来越多的中间件、第三方类库和各类应用程序所认可和采用。与此相对的是,有关OSGi技术的资料,尤其是中文的资料却显得异常的贫乏。
笔者自2007年接触OSGi以来,曾在数个大型系统中使用过OSGi作为软件的基础架构,这一方面使笔者深刻感受到了OSGi带来的诸多好处以及OSGi设计思想的魅力;另一方面也使笔者注意到OSGi的入门门槛相对较高,如果没有足够的指导材料,开发人员从零开始学习并探索出OSGi的***实践需要很高的成本。因此,笔者就萌生了写一本关于OSGi原理、应用与***实践的中文书籍的想法。
自从1999年OSGi联盟成立以来,OSGi技术随着Java一起飞速发展,现已经成为一种被广泛认可的软件架构技术和方法。OSGi联盟的成员数量也已经从最开始的几个增长到目前的100多个,许多世界著名的IT企业都加入到OSGi的阵营之中,如Adobe、IBM、Oracle、SAP、RedHat和Siemens等。这些软件厂商推出的许多产品都支持OSGi技术,甚至产品本身就使用了OSGi技术构建,例如IBM的WebSphere、Lotus和JAZZ,Oracle的GlassFish和Weblogic,RedHat的JBoss,Eclipse基金会的Eclipse IDE、Equinox及之下的众多子项目,Apache基金会的Karaf、Aries、Geronimo、Felix及之下的众多子项目等。这些业界巨头的踊跃参与,从侧面证明了OSGi技术有着非常广阔的市场前景。
OSGi能获得如此广泛的认可,一方面是它的诞生迎合了软件模块化的需求;另一方面是因为它足够全面和开放,OSGi所具有的动态性、伸缩性正好是许多生产系统所需的。基于OSGi的程序更新升级或者缺陷修复,能够像电脑更换USB接口的鼠标键盘或者插拔其他USB设备那样可以即插即用,无须重启,甚至无须停顿,这是许多基于Java的、需要7×24小时运转的生产系统长期以来迫切希望而又无法实现的需求。把软件开发中公用的、通用的功能抽象成标准件,令各个软件可以使用同样的模块来完成特定需求,把软件开发变为搭建模块,这更是软件工业化的最终理想,而OSGi为这个目标带来了实现的曙光。
目前,虽然OSGi背后有庞大的厂商支持,对实现框架、中间件和类库的支撑也足够完善,但是在国内基于OSGi架构的系统还不是很多。很多软件企业都跃跃欲试,尝试迈出使用OSGi的第一步,但往往被其复杂性阻挡于大门之外—如果要用OSGi开发一个入门程序,并不需要多高深的知识,但如果要把OSGi运用于生产系统,则要求该软件系统的架构师和至少一部分中高级开发人员必须对OSGi有比较深入的了解,业界对这一部分人才的需求也一直非常大。通过本书,读者可以通过一个相对轻松的方式学习到OSGi的运作原理,这对自身能力的提高有较大的帮助。

目  录

[第一部分 走近OSGi]()
[第1章 Java模块化之路 ]()
[1.1 什么是OSGi ]()
1.1.1 OSGi规范的演进
1.1.2 Java模块化规范之争
[1.2 为什么使用OSGi]()
1.2.1 OSGi能让软件开发变得更容易吗
1.2.2 OSGi能让系统变得更稳定吗
1.2.3 OSGi能让系统运行得更快吗
1.2.4 OSGi能支撑企业级开发吗
[1.3 本章小结 ]()

[第二部分 OSGi规范与原理]()
[第2章 模块层规范与原理]()
[2.1 OSGi规范概要]()
[2.2 Bundle ]()
[2.3 描述元数据]()
2.3.1 预定义标记
2.3.2 使用可视化工具
[2.4 Bundle的组织与依赖 ]()
2.4.1 导出和导入Package
2.4.2 约束规则与示例
2.4.3 校验Bundle有效性
[2.5 OSGi的类加载架构]()
2.5.1 父类加载器
2.5.2 Bundle类加载器
2.5.3 其他类加载器
2.5.4 类加载顺序
[2.6 定义执行环境]()
[2.7 本地化]()
[2.8 本章小结]()

[第3章 生命周期层规范与原理]()
[3.1 Bundle标识 ]()
[3.2 Bundle状态及转换 ]()
3.2.1 安装过程
3.2.2  解析过程
3.2.3 启动过程
3.2.4 更新过程
3.2.5 停止过程
3.2.6 卸载过程
[3.3 启动级别]()
3.3.1 设置启动级别
3.3.2 调整活动启动级别
[3.4 事件监听 ]()
3.4.1 事件类型
3.4.2 事件分派
[3.5 系统Bundle ]()
[3.6 Bundle上下文 ]()
[3.7 本章小结 ]()