ODL开发背景知识简介-------OSGi、Bundle、karaf、Feature

OSGi(Open Service Gateway Initiative)

OSGi(Open Service Gateway Initiative,直译为“开放服务网关”)实际上是一个由OSGi联盟发起的Java为技术平台的动态模块化规范,OSGi不是一个应用层面的框架,而是设计层面的规范。软件设计就不外乎复用、内聚、耦合三个主题,OSGi作为Java的模块化规范,也是为了更好地解决Java在这三个主题的问题。OSGi规定了如何定义一个Module以及这些模块之间如何交互。在OSGi规范中,Java模块被称为BundleOSGi规范就是指导怎么令这些Bundle能更好的有高内聚性、有松耦性,能更好地被复用。基于OSGi的应用,就是由一个一个Bundle组成的,通过OSGi把这些Bunde组织在一起,就形成了系统。

OSGI框架

在这里插入图片描述

Bundle

Bundle是OSGi中最基本的单位,通俗地讲,如果说OSGi是基于Java平台的“模块化开发体系”,那么Bundle便是其中的“模块
一个符合OSGi规范的Bundle首先必须是一个符合JAR文件格式规范的JAR包,JAR文件格式规范里定义的/META-INF/MANIFEST.MF文件用于描述JAR包的元数据信息,如JAR包的版本、数字签名信息等,Bundle在MANIFEST.MF文件中添加了大量扩展定义,如描述该Bundle可以提供哪些资源、依赖哪些其他Bundle、启动或卸载时要执行哪些动作等。

Bundle生命周期

在这里插入图片描述

INSTALLED 初始安装的
ACTIVE 激活未使用
RESOLVED 依赖都被满足的

Bundle间的依赖

OSGi对Java平台的类加载机制的一个重要改进就是支持包级别的类导入和导出。在OSGi中,每个Bundle都有自己的类加载器,该加载器能够看到BundleJar文件内部的类和资源。Bundle通过配置jar包中的MANIFEST.MF,可以控制从Bundle导出的包,而没有导出的包,则在Bundle外部是不能够访问的。这样就很好地完成了内部类和外部类的隔离。

Bundle 的内加载器配置清单目录MANIFEST.MF来格力外部和内部的jar包,通过以下命令来到导入导出
  • Import-Package

  • Export-Package

karaf

Karaf, 一个基于OSGi的运行环境, 提供了一个轻量级的OSGi容器,可以用于部署各种组件和应用程序
在这里插入图片描述

Feature

feature:一组bundle,其具备特定的功能,比如odl-mdsal-all就算是一个feature,其由若干个bundle,配置文件或其他feature组成。
在这里插入图片描述

详细还要看书,这里只是简单介绍
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值