OSGi的魅力

从2006年开始使用Eclipse平台,却只知道如何添加自定义的插件,完全只是把它当成一个IDE,却从来没有想过其基层实现的原理,只会说Eclisep提供了插件机制。但是这个机制是什么服务规范或者标准。却不曾了解。

最近无意中接触到OSGi才回头去看看Eclipse,看了些文章,才知道Eclipse3.1后的插件机制发生了变化。从原来Eclipse自己的插件机制换上了新主人OSGi.。怎么有这么大的魔力让Eclipse放弃自家技术,而使用OSGi呢。虽然不管是从技术,还有一些商业原因,但是从这点,也可以体现出OSGi的优秀。

大家都知道使用Eclipse开发插件,但是插件不会自己运行,以前只知道还存在一个Eclipse的核心平台,它提供环境让插件启动和操作。现在Eclipse就是使用OSGi标准实现了这个核心平台。

知道了OSGi对我们有什么好处呢?我觉得对我自己来说,最大的好处,就是不用,再像以前都是骑重型机车,现在好爽,都是轻骑出动。不再由Eclipse给我们打包,而是我们选择必所需要的包。还有就是把系统可以更模块化,编写模块更加轻松自如。还有我觉得企业很重要一点,就是模块可以很好的累积。当然其实这只是对我来说,自己感觉到的好处。其实OSGi的优点,还有很多。

从OSGi R4标准了解到,OSGi的宗旨是为网络设备提供开放式服务规范。确切地说是为可以通过网络访问的设备提供一个通用的软件运行平台,屏蔽不同设备之间的硬件和操作系统差异,使软件可以动态地部署和更新。用我们常话说,就是“热插拔”。实现小设备很协调地进行大规模部署。

看到上面这句,是不是对开发插件的同学们很有诱惑呢。我觉得OSGi对每个已经知道插件开发者,都会想去了解它,和它进行亲密的接触,让自己可以学习到其思想,用新思想指导开发。

如果想了解OSGi的同学可以继续看下去,只想了解OSGi是什么东西?应该上面就已经给出了。

要了解OSGi,我觉得必要要了解插件的概念,帮助中给出了其定义:插件是为系统提供功能的代码和/或数据的结构化包。可以以代码库(带有公共 [应用程序接口] API 的 Java 类)、平台扩展甚至文档的形式来提供功能。插件可以定义扩展点、定义良好的位置,其他插件可以在这些位置添加功能。

而OSGi规范好像完全是为插件而生的,但是它不只只满足插件要求,它还填补了插件平台一些空白。

OSGi服务平台标准提供了其的核心框架,我们要了解就是该核心框架,从中可以了解到OSGi规范的思想。OSGi服务平台标准的核心框架,指功能分为以下几层:
安全层。2、模块层。3、生命周期层。4、服务层。5、服务实现层

要想讲明白这几个层作用之前要,先了解Bundle,在 OSGi中,插件称为 Bundle。

1、安全层
OSGi 的安全管理是基于 Java2 安全体系的,贯穿在 OSGi 平台的所有层中,它能够对部署在 OSGi 运行环境中的 Bundle 应用进行详细的管理控制。安全管理层不只只封装了JAVA2安全体系,还实现可以很好与JAVA2安全交互作用。并且制定因素填补JAVA2安全开发的一些空白。
模块层
模块层定义了 Bundle 应用的加载策略。OSGi 框架是一个健壮并且严格定义的类加载模型。在大多数 Java 应用中,通常只有一个单独的 ClassPath,它包含了所有的 Java 类文件和资源文件,OSGi基于Java技术,对于每个实现了 BundleActivator 接口的 Bundle 应用,为它生成一个单独的 ClassLoader,使得 Bundle 应用的组织更加模块化。模块层独立于生命周期层和服务层。生命周期层通过API来管理模块层的Bundle,而服务层是提供了一个沟通模块。
生命周期层
生命周期层可以动态地对 Bundle 进行安装、启动、停止、升级和卸载等操作。该层基于模块层,提供了一组 API 来控制 Bundle 应用的运行时操作。
服务层
OSGi 服务层定义了一个集成在生命周期层中的动态协作模型,是一个发布、动态寻找、绑定的服务模型。一个服务通常是一个 Java 对象实现了特定的服务接口,并且通过服务注册,被绑定到 OSGi 的运行环境中。Bundle 应用可以注册发布服务,动态绑定服务,并且在服务注册状态改变时,可以接受到事件消息等。
服务实现层
就是我们提供的各种服务实现,就是一些应用。我们要实现的功能,就是在该层去完成了。

在上面的5个层,生命周期层,是OSGi核心层,管理在一个动态扩展的 OSGi 环境中,OSGi 框架管理 Bundle 的安装和更新,同时也管理 Bundle 和服务之间的依赖关系。

OSGi核心框架,各层已经讲完,应该让大家有了一些大概了解。下面再补点OSGi提供的标准服务。
在 OSGi 平台之上,OSGi 联盟定义了很多服务。服务是由一个 Java Interface 来定义的,Bundle 可以实现这个接口并且把服务注册到服务注册表中去,用户可以从注册表中找到需要的服务来使用,并且可以响应特定服务的状态改变,如服务注册和服务取消。下面简单介绍一下 OSGi Release 4 的一些主要服务。OSGi 框架提供了权限管理服务,包管理服务和最初加载系统服务。这些服务是 OSGi 框架的一部分并且管理着 OSGi 框架的运作。
Permission Admin Service:权限管理是指 Bundle 是否许可其他的 Bundle 的代码。当前的或者其他的 Bundle 的权限可以通过这个服务来操作,一旦被设定权限,马上就生效。 Package Admin Service:Bundle 之间可以共享包内的 Java 类和资源,bundle 的更新可能需要 OSGi 框架重新解析 Bundle 之间的依赖关系,这个服务提供了 OSGi 服务平台中包的共享状态信息。
Start Level Service:Start Level是指一些在特定Bundle起动之前必须运行或者初始化的一系列 bundle。Start Lever Service 可以设置当前OSGi服务框架初始的Start Level,并且可以指定和查询特定Bundle的Start Level。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值