- 浏览: 1658688 次
- 性别:
文章分类
- 全部博客 (2929)
- 非技术 (18)
- Eclipse (11)
- JAVA (31)
- 正则表达式 (0)
- J2EE (4)
- DOS命令 (2)
- WEB前端 (52)
- JavaScript (69)
- 数据库 (8)
- 设计模式 (0)
- JFreechart (1)
- 操作系统 (1)
- 互联网 (10)
- EasyMock (1)
- jQuery (5)
- Struts2 (12)
- Spring (24)
- 浏览器 (16)
- OGNL (1)
- WebService (12)
- OSGi (14)
- 软件 (10)
- Tomcat (2)
- Ext (3)
- SiteMesh (2)
- 开源软件 (2)
- Hibernate (2)
- Quartz (6)
- iBatis (2)
最新评论
之前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 Bundle之Hello World
2010-05-31 14:20 697本文是《你 好,OSGi 》系列的第二部分。之前曾介绍过O ... -
OSGi依赖性管理:Bundle访问域
2010-05-31 16:12 689本文是《你 好,OSGi 》系列的第三部分。之前介绍过OS ... -
OSGi服务:非常适合SOA的架构
2010-05-31 16:35 765本文是《你 好,OSGi 》系列的第四部分。下面讲述OSG ... -
OSGi和Spring入门:什么是Spring动态模型(Spring DM)?
2010-05-31 17:46 1036【51CTO精选译文】本文 ... -
OSGi与Spring:设置Spring DM开发环境
2010-06-01 09:46 633【51CTO精选译文】本文 ... -
使用Spring DM创建Hello World,以及OSGi服务
2010-06-01 13:24 772【51CTO精选译文】本文是《你好,OSGi 》系列的第 ... -
使用OSGi构建面向服务的联络管理应用程序
2010-06-01 14:44 724【51CTO精选译文】本文是《你好,OSGi 》系列的第 ... -
OSGi与Spring DM:使用Spring DataSource
2010-06-07 12:53 650【51CTO精选译文】本文是《你好,OSGi 》系列的第 ... -
初探OSGi Web应用开发利器Equinox:环境设置
2010-06-07 12:55 814【51CTO精选译文】在之前的《你好,OSGi》系列 中, ... -
打造一个Hello World OSGi Web应用程序
2010-06-07 12:59 567【51CTO精选译文】在《你好,OSGi 》的之前一篇文章 ... -
部署并运行你的OSGi Web应用程序
2010-06-07 13:02 440【51CTO精选译文】本文 ... -
打造一个基于OSGi的Web Application
2010-06-12 09:51 1195动机和目标 OSGi技术 ... -
OSGi中获取Service的几种方式
2010-06-12 10:01 755在OSGi中,Service是动态管理的,OSGi容器提供 ...
相关推荐
OSGi(Open Services Gateway Initiative)是一个基于Java语言的服务平台,提供了一种动态化、模块化的应用程序架构。在OSGi架构中,整个生命周期管理是十分重要的组成部分,它保证了应用能够动态地进行安装、启动、...
OSGI(Open Services Gateway Initiative)是一种模块化系统和Java服务框架,它允许在单个Java虚拟机(JVM)上动态地发现、加载、卸载和管理软件组件。Eclipse是一个开源的集成开发环境(IDE),它广泛支持各种语言...
1. **OSGi框架**:OSGi是一种服务导向的架构,它的核心功能是动态模块系统,允许在运行时安装、卸载、启动和停止模块,提供了灵活的依赖管理机制。 2. **C#版OSGi**:OSGi通常与Java关联,但这里我们讨论的是.NET...
OSGi(Open Services Gateway initiative)是一个基于Java语言的服务平台,它允许运行时动态地安装、更新和卸载软件模块。这些模块被称为bundle。OSGi提供了一个在单一Java虚拟机(JVM)内实现模块化、服务化、动态...
3. **Java字节码操作**:ASM库的出现,使得开发者能够深入到Java字节码层面进行操作,这对于构建动态、自适应的系统非常有用,特别是在OSGi环境中,模块的加载和更新可能需要在运行时动态生成或修改字节码。...
OSGI(Open Services Gateway Initiative)是一种模块化系统和Java服务框架,它允许应用程序由一系列可独立更新和替换的模块组成,这些模块称为“bundle”。在本实例中,我们将探讨如何利用OSGI技术来开发Eclipse...
在Java开发领域,OSGi(Open Service Gateway Initiative)是一种模块化系统和Java服务框架,它允许在单个Java虚拟机(JVM)内动态地发现、组合和管理软件模块。R-OSGi是OSGi的一个实现,专门用于构建分布式应用程序...
通过其核心概念,如模块化、动态性和服务注册,以及在Eclipse等项目中的成功应用,OSGi已经成为Java领域中不可或缺的一部分。对于希望构建大型、复杂应用程序的企业和个人开发者而言,理解和掌握OSGi框架是非常有益...
**标签解析:** "Java" 标签表明该项目是用Java语言编写的,同时利用了Java生态系统中的OSGi技术。 **文件名称列表解析:** "blueprint-osgi-bundle-master" 可能是项目源代码的主分支,通常包括项目的所有源码、...
Apache Celix是一个开源项目,专为使用C和C++编程语言实现OSGi(Open Services Gateway Initiative)规范而设计。OSGi是一种服务导向架构,它允许在Java平台上创建和管理可热插拔的软件组件,而Apache Celix则将这一...
OSGi(Open Services Gateway Initiative)是一种Java模块化系统,它允许开发者将大型应用分解为可独立更新和管理的小型服务单元。Spring框架是Java开发中最常用的应用框架,它提供了一整套服务,包括依赖注入、AOP...
OSGi(Open Service Gateway Initiative)是一种用于创建动态模块系统的技术,尤其在Java平台上广泛应用。它最初是为了构建家庭网关的嵌入式平台而设计的,但随着时间的发展,其用途已经远远超出了这个范围。OSGi的...
OSGI(Open Services Gateway Initiative)是一种开放标准,用于创建模块化和可扩展的Java应用程序。它提供了一种灵活的框架,允许开发人员将应用程序分解为独立的模块,这些模块称为服务。OSGI的核心是它的模块系统...
4. **Java模块系统(JSR 294 & JPMS)**:Java 9引入的模块系统(Project Jigsaw)增强了程序的模块化,使得模块间的依赖关系更加清晰,有利于程序的动态加载和更新。 5. **OSGi服务**:OSGi是一种模块化运行时环境...
OSGI(Open Services Gateway Initiative)是一种基于Java语言的动态模块化系统规范,它为Java应用提供了模块化构建和服务生命周期管理的能力。OSGI技术的核心是Bundle,即模块化组件,它可以实现应用的动态热部署、...
在Java开发中,OSGi(Open Services Gateway Initiative)是一个模块化系统和Java服务框架,它允许开发者创建可热部署、独立的模块化应用程序。这个压缩包中的源码是关于R-OSGi(Remoting OSGi)的实现,它是一种在...
OSGI是一种动态的模块化系统,主要用于Java应用程序。它允许模块(称为bundles)独立地加载、启动、更新和卸载,使得开发者能够构建更灵活、可扩展的应用程序。OSGI的核心特性包括服务导向架构、细粒度的依赖管理和...
OSGI是Java平台上的一个模块系统和动态服务框架,它允许开发者将应用程序分解为独立的、可重用的模块,这些模块可以在运行时被动态地安装、卸载和更新,无需重启应用。OSGI的核心特性包括模块化、类加载器隔离以及...