`

OSGi的魅力

    博客分类:
  • 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。
2
1
分享到:
评论

相关推荐

    osgi介绍osgi介绍

    osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍

    OSGI原理与最佳实践

    资源名称:OSGI原理与最佳实践内容简介:国内第一本OSGi图书OSGi国内推广者林昊多年经验的结晶涵盖OSGi从入门到深入的知识体系引领OSGi国内研究和普及本书基于作者多年使用OSGi的经验而编写,涵盖了OSGi从入门到深入...

    利用R-OSGi实现分布式OSGi应用

    利用R-OSGi实现分布式OSGi应用 本文通过介绍传统 OSGi 应用程序及 R-OSGi 的实现方式入手,阐述了 R-OSGi 对于 OSGi 规范的实现方式。然后通过一个简单的功能实现由浅入深地讲述传统 OSGi 和 R-OSGi 上的两种不同...

    OSGI合集 OSGi原理与最佳实践

    网上收集的OSGI资料. 包括: OSGi原理与最佳实践(精选版).pdf OSGI实战和源码.rar osgi进阶.pdf Introduce.OSGi.ppt OSGi.in.action.ppt r4.cmpn.pdf r4.core.pdf r4.enterprise.pdf

    《OSGi实战》完整中文版

    《 OSGi实战》是学习OSGi的全面指导,利用与架构和开发人员相关的示例清楚地讲解OSGi概念,同时探讨了很多实践场景和技术,阐述了开发人员有多需要OSGi,怎么将OSGi嵌入其他容器中,将遗留系统移入OSGi的最佳实践,...

    OSGI 实例eclipse插件开发

    OSGI 实例 eclipse 插件开发

    OSGI进阶.pdf

    讲OSGI应用的讲OSGI应用的讲OSGI应用的讲OSGI应用的讲OSGI应用的

    OSGi入门教程(OSGi Introduce)

    OSGi的入门教程,帮助初学者快速了解OSGi的定义、用途及组成。

    OSGI 入门资料PDF

    OSGI 入门资料PDF,包括OSGI实战、OSGI进阶、OSGI 入门和整合Spring、OSGI原理与最佳实践

    osgi,林昊写的osgi实战和进阶

    osgi,林昊写的osgi实战和进阶,学习osgi的好东西,入门的首选。

    OSGI进阶--OSGi开发指南

    OSGi开发文档和实践指南,描述了OSGI的开发流程

    OSGI进阶实战教程

    OSGi学习不错的材料 OSGi学习不错的材料 OSGi学习不错的材料 OSGi学习不错的材料

    OSGi入门资料-初探OSGi 的全文

    OSGi的入门资料,网上找的,初探OSGi 的全文

    OSGi原理与最佳实践

    本书基于作者多年使用OSGi的经验而编写,涵盖了OSGi从入门到深入的知识体系,从OSGi的简介开题,介绍OSGi的作用及基本概念;其后进入OSGi实战,结合实例讲解如何基于OSGi框架编写模块化、动态化的各种Java应用;最后...

    OSGI组件编程(osgi.component.programming)

    介绍OSGI组件编程,详细介绍用eclipse和Equinox开发OSGI程序

    OSGi规范(r4)中文版

    OSGi 中文版 中文 OSGi中文OSGi 中文版 中文 OSGi中文OSGi 中文版 中文 OSGi中文OSGi 中文版 中文 OSGi中文OSGi 中文版 中文 OSGi中文OSGi 中文版 中文 OSGi中文OSGi 中文版 中文 OSGi中文OSGi 中文版 中文 OSGi中文

    OSGi.NET框架 Documentation

    本文档主要针对OSGi.NET模块化框架使用进行了描述 OSGi.NET框架是一个参照了OSGi规范的模块化管理框架。框架为应用程序(组件(bundle))提供了一个标准环境。整个框架可以划分为一些层次: 1.运行环境 2.模块...

    osgi资料

    osgi资料

    OSGi in Action

    HIGHLIGHT OSGi in Action is the definitive guide to OSGi, the hottest technology available for creating modular enterprise Java applications. DESCRIPTION What is OSGi? Simply put, OSGi is a ...

    Equinox OSGI ServletBridge 原理与实践.rar

    OSGI 在 J2EE 环境下的应用越来越广泛,目前在 Servlet 应用中使用 OSGI 有两种方式:Servlet Container in OSGI 和 OSGI in Servlet Container. 前一种:和普通的 OSGI bundle 开发差不多,而后一种:Equinox 提供...

Global site tag (gtag.js) - Google Analytics