为什么写这本书
随着软件规模的日益增大,程序按模块拆分、按模块开发和按模块部署等需求变得越来越迫切,“模块化”成为了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 导出和导入Package2.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 本章小结 ]()
相关资源:深入理解OSGi:Equinox原理、应用与最佳实践,书本源代码