什么是OSGI
OSGI联盟给出的最新定义是The Dynamic Module Sysytem For Java,也就是面向java的动态模块化系统。支持模块在线升级,热插拔。
为什么使用OSGI
使用其一个很重要的目的就是弥补java资源精细划分的缺陷,加强架构的子约束能力(架构的子约束能力就是指定不同的开发人员在实现功能的时候,实现方式都是一致的,最好只有唯一一条遵循设计意愿的路可走,别的方法无法达到目的。)
1:OSGI会引导陈旭元开发出可积累可重用的软件
2:基于OSGI比较容易实现强鲁棒性的系统(所谓“鲁棒性”,是指控制系统在一定(结构,大小)的参数摄动下,维持其它某些性能的特性。也就是说如果某一个模块出现问题,能够不波及其他功能的运作)
3:OSGI环境下可以走和做到动态的修复缺陷
OSGI规范概要
OSGI的核心框架是一个可以运行OSGI系统的最小集合,由以下几个内容组成:
1:执行环境(Execution Environment) 由于 OSGi 所适用的目标范围非常广泛, 为了更好地处理不同硬件、 软件环境对 OSGi 造成的兼容性问题, 在建立其他约定之前,必须先定义好系统的执行环境。
2:安全层(Security Layer) 描述了基于 Java 2 安全架构实现的代码验证、 JAR 文件数字签名、数字证书服务,安全层贯穿了 OSGi 框架的其他各个层次
3:模块层(Module Layer) 模块层从“ 静态 ” 的角度描述了一个模块的元数据信息、执行环境定义、 模块约束和解析过程、 类加载顺序等内容。 模块层是整个 OSGi 中最基础、最底层的层次。
4: 生命周期层(Life Cycle Layer) 生命周期层从“ 动态 ” 的角度描述了一个模块从安装到被解析、 启动、 停止、 更新、 卸载的过程, 以及在这些过程中的事件监听和上下文支持环境。
5:服务层(Service Layer) 描述了如何定义、 注册、 导出、 查找、 监听和使用 OSGi中的服务。服务层是所有 OSGi 标准服务的基础。
6: 框架 API(Framework API) 由一系列通过 Java 语言实现的接口和常量类构成, 为上面各层提供面向 Java 语言的编程接口