`

OSGi是什么:Java语言的动态模块系统

    博客分类:
  • OSGi
 
阅读更多

之前51CTO曾发过一篇文章叫做《OSGi为什么重要:向模块化转移的主攻手 》,里面对于OSGi的优势进行了分析。不过,对于 究竟什么是OSGi,很多人仍然只有一个模糊的概念。本系列(你好,OSGi )从基础开 始介绍了OSGi。本部分介绍OSGi是什么,以及OSGi容器的一些现状。(注:本文英文原文于08年3月发布在JavaWorld网站)

51CTO编辑推荐: OSGi入门与实践全攻略

OSGi是什么

OSGi亦称做Java语言的动态模块系统,它为模块化应用的开发定义了一个基础架构。OSGi容器已有多家开源实现,比如 Knoflerfish、Equinox和Apache的Felix。您可以通过这些容器,把您的应用程序劈分为多个模块单元,这样,您就可以更容易地管 理这些模块单元之间的交叉依赖关系。

OSGi规范和Servlet规范及EJB规范类似,该规范定义了两种对象,一是容器对外提供的服务对象,另一个是容器和您的应用程序之间必须遵守 的契约,其中,服务对象是容器要实现的。您如果想要在OSGi平台上进行开发,首先,您必须要使用OSGi API来创建您的应用,然后将之部署到OSGi容器中。从开发者的角度看,OSGi具有以下优点:

a) 您可以在不重启容器的情况下,动态地安装、卸载、启动和停止您的应用程序中的不同模块;

b) 对于您应用程序中的某一特定模块,容器可以同时运行该模块的多个版本;

c) OSGi为开发嵌入式应用、移动应用、富互联网应用(RIA)提供了非常优秀的基础架构

如果说您使用Servlet容器开发您的网络应用,使用EJB容器开发交易式应用,您可能会问,为什么我们还需要另外的容器呢?对这个问题的简短回 答是,OSIG容器是专门为开发复杂的Java应用准备的,在这些应用的开发过程中,您非常需要将这些应用分割为一个个的模块。在本系列以后的文章中,我 将针对这个问题进行展开并深入回答。

1. OSGi在企业开发中的应用

OSGi联盟(OSGiAlliance)于1999年3月开始着手制定OSGi规范,其主要目的就是要制定一套开放式标准,以便向局域网及其中的 设备提供可管理的服务;其基本思路是,一旦您在网络设备(如服务器和嵌入式设备)上使用了OSGi服务平台,您就可以在网络上的任何地方管理这些设备上运 行的软件组件的生命周期,可以在后台对这些组件进行安装、升级或卸载,但不需要打断该设备的正常运行。

近年来,OSGi技术在嵌入式系统及网络设备市场得到广泛应用。现在,由于Eclipse的成功,OSGi在企业开发中逐渐成为切实可行的、较有价 值的一种技术。

1.1. 业界对OSGi的支持逐渐上升

2003年,Eclipse开发团队开始想办法提高Eclipse工具集的模块化,以便让它成为更加动态的富客户端平台。Eclipse团队最终选 中OSGi框架作为其组件的运行时模型,2004年6月发布的Eclipse3.0就是第一个基于OSGi平台的版本。现在几乎所有的企业应用服务器都支 持OSGi,Spring也通过一个叫“OSGi服务平台上的Spring动态模型(亦称之为OSGiSpring)”的项目来支持OSGi。该项目提供 OSGi基础架构,以便我们在Spring的企业开发中更容易使用OSGi。

2. 开放源码的OSGi容器

从企业开发者的角度看,OSGi容器的要求很低,您可以很容易地把它嵌入到企业应用中,比如我们在开发Web应用时,我们可以把这个Web应用分为 多个模块,一个模块负责视图层,另一个模块负责DAO层,第三个模块负责数据访问层,如果我们使用OSGi容器来管理这些模块之间的交叉依赖,我们就可以 在不用重启该Web应用的前提下,将DAO层从速度较慢的升级到速度较快的DAO。

只要您的应用和OSGi规范兼容,您的应用就应该可以运行在任何OSGi容器中,现在比较流行的开放源码的OSGi容器有以下三种:

a) Equinox 容器 是参照OSGi规范第4版实现的,它构成了Eclipse IDE的核心—模块化的Java运行时;它实现了OSGi规范4中规定的必须强制实现的功能,同时,它也实现了OSGi规范中大部分的可选功能;

b) Knoflerfish是OSGi规范第3版和第4版的开源实现,它实现了OSGi规范规定的必须实现的功能及部分可选功能;

c) Apache的Felix是Apache软件基金会实现的OSGi开源容器,至本文截稿时为止,该容器还没有和OSGi规范完全兼容。在本文中,我们将使 用Equinox作为我们的OSGi容器。

对OSGi是什么的介绍就先到这里,下面的部分将继续介绍OSGi的基础知识。

分享到:
评论

相关推荐

    OSGi入门篇:生命周期层

    OSGi(Open Services Gateway Initiative)是一个基于Java语言的服务平台,提供了一种动态化、模块化的应用程序架构。在OSGi架构中,整个生命周期管理是十分重要的组成部分,它保证了应用能够动态地进行安装、启动、...

    OSGI.rar_OSGI eclipse_eclipse osgi_java OSGI_osgi

    OSGI(Open Services Gateway Initiative)是一种模块化系统和Java服务框架,它允许在单个Java虚拟机(JVM)上动态地发现、加载、卸载和管理软件组件。Eclipse是一个开源的集成开发环境(IDE),它广泛支持各种语言...

    OSGi.NET-master.zip_c#osgi_osgi_osgi.net github_模块化

    1. **OSGi框架**:OSGi是一种服务导向的架构,它的核心功能是动态模块系统,允许在运行时安装、卸载、启动和停止模块,提供了灵活的依赖管理机制。 2. **C#版OSGi**:OSGi通常与Java关联,但这里我们讨论的是.NET...

    OSGI最佳实践

    OSGi(Open Services Gateway initiative)是一个基于Java语言的服务平台,它允许运行时动态地安装、更新和卸载软件模块。这些模块被称为bundle。OSGi提供了一个在单一Java虚拟机(JVM)内实现模块化、服务化、动态...

    基于Java的实例源码-OSGi 分布式通讯组件 R-OSGi.zip

    3. **Java字节码操作**:ASM库的出现,使得开发者能够深入到Java字节码层面进行操作,这对于构建动态、自适应的系统非常有用,特别是在OSGi环境中,模块的加载和更新可能需要在运行时动态生成或修改字节码。...

    OSGI 实例eclipse插件开发

    OSGI(Open Services Gateway Initiative)是一种模块化系统和Java服务框架,它允许应用程序由一系列可独立更新和替换的模块组成,这些模块称为“bundle”。在本实例中,我们将探讨如何利用OSGI技术来开发Eclipse...

    基于java的OSGi 分布式通讯组件 R-OSGi.zip

    在Java开发领域,OSGi(Open Service Gateway Initiative)是一种模块化系统和Java服务框架,它允许在单个Java虚拟机(JVM)内动态地发现、组合和管理软件模块。R-OSGi是OSGi的一个实现,专门用于构建分布式应用程序...

    Osgi Service Platform

    通过其核心概念,如模块化、动态性和服务注册,以及在Eclipse等项目中的成功应用,OSGi已经成为Java领域中不可或缺的一部分。对于希望构建大型、复杂应用程序的企业和个人开发者而言,理解和掌握OSGi框架是非常有益...

    blueprint-osgi-bundle:OSGi 示例

    **标签解析:** "Java" 标签表明该项目是用Java语言编写的,同时利用了Java生态系统中的OSGi技术。 **文件名称列表解析:** "blueprint-osgi-bundle-master" 可能是项目源代码的主分支,通常包括项目的所有源码、...

    cpp-ApacheCelix是一个使用C和C实现的OSGi规范的项目

    Apache Celix是一个开源项目,专为使用C和C++编程语言实现OSGi(Open Services Gateway Initiative)规范而设计。OSGi是一种服务导向架构,它允许在Java平台上创建和管理可热插拔的软件组件,而Apache Celix则将这一...

    OSGi, Spring , Web

    OSGi(Open Services Gateway Initiative)是一种Java模块化系统,它允许开发者将大型应用分解为可独立更新和管理的小型服务单元。Spring框架是Java开发中最常用的应用框架,它提供了一整套服务,包括依赖注入、AOP...

    OSGi with CAR-Bundle

    OSGi(Open Service Gateway Initiative)是一种用于创建动态模块系统的技术,尤其在Java平台上广泛应用。它最初是为了构建家庭网关的嵌入式平台而设计的,但随着时间的发展,其用途已经远远超出了这个范围。OSGi的...

    OSGI + Webservice 例子

    OSGI(Open Services Gateway Initiative)是一种开放标准,用于创建模块化和可扩展的Java应用程序。它提供了一种灵活的框架,允许开发人员将应用程序分解为独立的模块,这些模块称为服务。OSGI的核心是它的模块系统...

    提高Java程序动态性的一个新途径.zip

    4. **Java模块系统(JSR 294 & JPMS)**:Java 9引入的模块系统(Project Jigsaw)增强了程序的模块化,使得模块间的依赖关系更加清晰,有利于程序的动态加载和更新。 5. **OSGi服务**:OSGi是一种模块化运行时环境...

    OSGI in Action

    OSGI(Open Services Gateway Initiative)是一种基于Java语言的动态模块化系统规范,它为Java应用提供了模块化构建和服务生命周期管理的能力。OSGI技术的核心是Bundle,即模块化组件,它可以实现应用的动态热部署、...

    基于Java的实例开发源码-OSGi 分布式通讯组件 R-OSGi.zip

    在Java开发中,OSGi(Open Services Gateway Initiative)是一个模块化系统和Java服务框架,它允许开发者创建可热部署、独立的模块化应用程序。这个压缩包中的源码是关于R-OSGi(Remoting OSGi)的实现,它是一种在...

    java技术文档.设计模式,maven,osgi

    OSGI是一种动态的模块化系统,主要用于Java应用程序。它允许模块(称为bundles)独立地加载、启动、更新和卸载,使得开发者能够构建更灵活、可扩展的应用程序。OSGI的核心特性包括服务导向架构、细粒度的依赖管理和...

    OSGI&spring;&hibernate;

    OSGI是Java平台上的一个模块系统和动态服务框架,它允许开发者将应用程序分解为独立的、可重用的模块,这些模块可以在运行时被动态地安装、卸载和更新,无需重启应用。OSGI的核心特性包括模块化、类加载器隔离以及...

Global site tag (gtag.js) - Google Analytics