osgi 入门 二之关于osgi

本文介绍了OSGi框架的基本概念,包括其提供的高级模块管理和封装性增强等特性,以及支持热部署和扩展性的优势。同时概述了OSGi的层级结构,重点讲述了模块层的作用和bundle的基本构成。

前面通过一个例子简单的介绍了如何快速的开发一个osgi应用。下面来具体说明一下什么是osgi,以及osgi 能做什么,为什么使用osgi,以及到底osgi能带来什么益处。
首先osgi是什么,osgi是由osgi alliance 制定的一个规范。由此规范,形成了osgi框架。基本上,osgi 也就是类似于servlet规范一样,提供相应的接口。而具体的实现,由相应的平台实现,如equinox平台。
说了那么多,具体osgi能做什么呢?个人归纳了一下,包括以下几点:
1.提供更高层次的模块管理,相对于java的包来说,osgi更加倾向于模块管理。
2.提供更好的封装性,使用更加严格的类装载机制,让模块内的封装性变得更强。
3.真正的面向接口,面向服务编程,使模块之间的耦合度大大降低。
4.支持热部署,只要osgi内核运行着,其他模块可以随时更新,增加。
5.易扩展,便于使用插件的模式进行扩展。具体看看eclipse的插件体系就知道了。
简单介绍了一下osgi,下面说说osgi的几个层次:
安全层:基于java2 安全机制,增加了相应的限制和使用标准的java 许可。
模块层;定义标准的java 模型
生命周期层:提供完整的bundles生命周期管理
服务层:提供动态,简洁和持久化编程模型。
相应的实际服务接口。
主要来说说模块层,看过前面的例子应该知道,那个例子一共包括10个模块(包括系统模块)osgi 以bundle作为一个基本的模块单元。bundle主要包括需要的基础资源,包括类和其他资源文件;一个manifest文件,用于描述bundle信息,以及可选的osgi-opt目录。
manifest文件是最重要的描述文件,如果缺失,则bundle也就无法装载。
简单解释一下前面定义过的bundle manifest;bundle 文件包括几个必须的元素:
Bundle-ManifestVersion: 2//定义了bundle遵循规范的规则,1表示r3规范 2表示r4和以后的版本
Manifest-Version: 1.0 //主要的版本号
//唯一的bundle名称,相当于在系统中的id。singleton表示是否使用单启动方式
Bundle-SymbolicName: org.demo.helloworld;singleton:=true
//以下是可选的
Bundle-Name: Helloworld Plug-in//bundel 名称
Bundle-Vendor: zsoft//发布商
Bundle-RequiredExecutionEnvironment: J2SE-1.5//需要的执行环境
//下面是一些引用包的信息,包括包名称和版本号,只有引用了这些包,才能让classloader装载。
Import-Package: javax.servlet;version="2.4.0",
javax.servlet.http;version="2.4.0",
org.apache.commons.logging;version="1.0.4",
org.osgi.framework;version="1.4.0"
//这是直接引用整个bundle,一般不提倡整个引用,这里是用来定义扩展
Require-Bundle:

org.eclipse.equinox.http.registry;bundle-version="1.0.100"

这里简单的描述了一下主要的几个bundle头信息,如果需要详细了解,具体参考相应的规范。本篇的内容就这些,下篇详细讲解一下osgi的类装载机制,这也是初学者最头疼的。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值