2.1 OSGi规范概要

目前最新的OSGi规范是2012年7月发布的Release 5,Version5.0(后文简称为R5.0)版本,该规范定义了Java模块化系统所涉及的各种场景(开发、打包、部署、更新和交互等),以及其中用到的标准接口和参考模型。它是一份内容很全面、涉及范围很广泛的技术规范,从嵌入式系统到大型服务器系统,从模块的编码开发到部署使用,从OSGi核心框架到外围扩展服务都有专门的定义。
OSGi规范并不是单一的规范文档,而是由一系列子规范构成,这些子规范主要可分为两大部分,其中一部分用于描述OSGi的核心框架(OSGi Framework)。OSGi核心框架是一个可运行OSGi系统的最小集合,它由以下内容组成:
执行环境(Execution Environment)。由于OSGi所适用的目标范围非常广泛,为了更好地处理不同硬件、软件环境对OSGi造成的兼容性问题,在建立其他约定之前,必须先定义好系统的执行环境。
安全层(Security Layer)。描述了基于Java 2安全架构实现的代码验证、JAR文件数字签名、数字证书服务,安全层贯穿了OSGi框架的其他各个层次。
模块层(Module Layer)。模块层从“静态”的角度描述了一个模块的元数据信息、执行环境定义、模块约束和解析过程、类加载顺序等内容。模块层是整个OSGi中最基础、最底层的层次。
生命周期层(Life Cycle Layer)。生命周期层从“动态”的角度描述了一个模块从安装到被解析、启动、停止、更新、卸载的过程,以及在这些过程中的事件监听和上下文支持环境。
服务层(Service Layer)。描述了如何定义、注册、导出、查找、监听和使用OSGi中的服务。服务层是所有OSGi标准服务的基础。
框架API(Framework API)。由一系列通过Java语言实现的接口和常量类构成,为上面各层提供面向Java语言的编程接口。
构成OSGi规范的另外一部分内容是OSGi标准服务,这些标准服务试图以OSGi为基础,在软件开发的各种场景中(如配置管理、设备访问、处理网络请求等),建立一套标准服务和编程接口。软件开发所遇到的场景是多种多样、极其复杂的,因此OSGi对应定义的标准服务也非常庞大和复杂,OSGi所包含的数十个子规范大部分都用于定义这些标准服务。以下列举了一小部分较为常用的OSGi标准服务。
事件服务(Event Admin Service)
包管理服务(Package Admin Service)
日志服务(Log Service)
配置管理服务(Configuration Admin Service)
HTTP服务(HTTP Service)
用户管理服务(User Admin Service)
设备访问服务(Device Access Service)
IO连接器服务(IO Connector Service)
声明式服务(Declarative Services)
其他OSGi标准服务
大部分OSGi标准服务都没有写入OSGi核心(Core)规范之中,而是定义在OSGi服务纲要(Service Compendium)规范和企业级(Service Enterprise)规范之中。从上面对OSGi规范简要介绍我们可以总结出来,平时所说的“OSGi”大致包含了如图2-1所示的内容。
虽然伴随着OSGi规范文档还发布了一些代码性质的内容,例如XML Schema定义和少量的JAR包,但是这些JAR包仅仅包含OSGi框架API及一些标准服务的接口。换句话说,仅仅靠这些随规范发布的代码是无法建立一个可运行的OSGi系统的。要让OSGi运行起来,还需要具体实现OSGi规范的程序才行,我们把这些程序称为“实现框架”或“OSGi实现”,如Eclipse的Equinox、Apache的Felix和Makewave的Knopflerfish等都是常见的OSGi实现。

《深入理解OSGi:Equinox原理、应用与最佳实践》一2.1 OSGi规范概要相关推荐

  1. 深入理解OSGI Equinox原理应用与最佳实践 知识整理篇

    1.OSGI框架是什么? OSGI为实现Java模块化开发,实现热插拔功能化的框架实现.可以实现类似不重启系统也可以实现添加,删除其部分功能而不会导致系统崩溃的框架实现.一个功能相当一个模块,针对模块 ...

  2. 【软件工程】软件工程中的最佳实践:在创造力和规范纪律间找到平衡——在软件工程中,创造力和规范纪律,通常是矛盾的两个方面,怎样在工程中进行最佳实践?

    在软件工程中,创造力和规范纪律,通常是矛盾的两个方面,怎样在工程中进行最佳实践?写一篇5000字左右的博客. 文章目录 软件工程中的最佳实践:在创造力和规范纪律间找到平衡 1. 理解创造力与规范纪律的 ...

  3. OSGi原理与最佳实践:第一章 OSGi框架简介(1)Equinox

    参考文章:http://osgi.com.cn/article/tagged/4002946 Equinox 首先来看 Equinox.Equinox 是 Eclipse 中的项目,并作为 OSGi ...

  4. Guava Cache 原理分析与最佳实践

    前言 在大部分互联网架构中 Cache 已经成为了必可不少的一环.常用的方案有大家熟知的 NoSQL 数据库(Redis.Memcached),也有大量的进程内缓存比如 EhCache .Guava ...

  5. 《深入理解Android:Telephony原理剖析与最佳实践》一1.3 Android Telephony框架结构...

    1.3 Android Telephony框架结构 前面对Android手机操作系统整体框架结构及每一层进行了简单的分析和说明,相信大家对Android智能手机操作系统有了一些基本的了解和认识.结合前 ...

  6. 《深入理解Android:Telephony原理剖析与最佳实践》一1.1 智能手机的系统结构

    1.1 智能手机的系统结构 Android手机的基本硬件结构是符合智能手机的基本硬件结构,我们要学习Android移动开发,首先需要了解智能手机的硬件系统基本结构. 随着通信领域的快速发展,移动终端发 ...

  7. 系统封装工具_去工具化/脚本化理解,自动化运维落地最佳实践之业务/架构/模型/方法...

    本文转载自:互联网运维杂谈 近年来后端IT也呈现更复杂的形态,底层IT架构逐渐开放平台化.云化,上层应用微服务化等等,虚拟化.云平台.容器PaaS和云原生框架都进入到IT运行环境中,而传统业务依然运行 ...

  8. 【送书福利-第七期】《分布式中间件核心原理与RocketMQ最佳实践》

    大家好,我是洲洲,欢迎关注,一个爱听周杰伦的程序员.关注公众号[程序员洲洲]即可获得10G学习资料.面试笔记.大厂独家学习体系路线等-还可以加入技术交流群欢迎大家在CSDN后台私信我! 本文目录 一. ...

  9. Squirrel状态机-从原理探究到最佳实践

    作者:京东物流 郑朋辉 1 简介 Squirrel状态机是一种用来进行对象行为建模的工具,主要描述对象在它的生命周期内所经历的状态,以及如何响应来自外界的各种事件.比如订单的创建.已支付.发货.收获. ...

  10. 深入理解 JavaScript 函数的特性与最佳实践

    函数用于指定对象的行为.所谓的编程,就是将一组需求分解为一组函数和数据结构的技能. 1 函数对象 JavaScript 函数就是对象.对象是名值对的集合,它还拥有一个连接到原型对象的链接.对象字面量产 ...

最新文章

  1. 开源播放器 ijkplayer (四) :Ijkplayer切换网络时停止播放的问题处理
  2. Servlet中乱码问题
  3. 如何使用区块链技术进行项目开发
  4. 1006 换个格式输出整数 (15 分)(c语言)
  5. xListView的使用步骤
  6. WebBrowser 控件 内存溢出 补丁 From Microsoft
  7. ASP.NET 泛型类型 Dictionary操作
  8. boost_1_48_0 在VS2008下的安装 Boost.Asio安装
  9. Linux下命令行压缩照片或图片的脚本 (ImageMagick使用心得,convert,import,display实例)...
  10. sftp服务器存放机密文件,cetos 6.6搭建sftp服务
  11. 比特币交易平台软件开发:比特币和以太坊有什么区别?
  12. 星河经纬加入会员可靠吗_珍爱网免费相亲可靠吗?女会员处境艰难红娘为她重拾勇气...
  13. python类型转换方法_整理了最全的Python3数据类型转换方法,可以收藏当手册用...
  14. hrbust 1041(并查集)
  15. 第二季-专题5-核心初始化
  16. Java 判断输入的是否为元音字母
  17. winmerge多个文件夹生成html,在Git中使用Winmerge来文件di
  18. 到底什么是QPS、TPS、RT、PV、UV、IV、VV、IP、系统吞吐量?
  19. Router+Redux学习总结
  20. Android初级基础知识复习(十八) —— 自定义通知栏

热门文章

  1. MDP马尔可夫决策过程
  2. 二叉树的层序遍历 二叉树
  3. ModuleNotFoundError: No module named 'exceptions'
  4. wafer map格式转换_如何将谷歌地球KML图层转换为Mapinfo TAB图层?
  5. python3.x编程模板总结
  6. 《A Tutorial on Automated Text Categorisation》NOTE
  7. 算法中的最优化方法_学习目录
  8. 拟凸函数一阶条件的证明
  9. linux crontab怎么启动,【linux之crontab,启动】(示例代码)
  10. 根据不同条件查询_好用的大数据即席查询工具——秒级响应