对于我这个文字水平不佳的人来说,能坐下来写博而不是下棋,应该算是一种不容易的选择。权当平时学习的笔记。
前不久学习
JPF(Java Plugin Framework)时,发现其功能实现不是太理想而且在和Spring整合时有不少问题要解决,无意中搜索到
OSGi( Open Services Gateway Initiative),简单了解之后发现OSGi的强大与美妙之处。于是决定抛弃JPF,改用OSGi。
Spring就不多费口舌了,这里简单介绍一下JPF和OSGi。谈起这二者,不得不提及大名鼎鼎的Eclipse,因为它们都与Eclipse有些渊源。
Eclipse作为一个功能强大、操作方便的IDE,估计大家都不陌生。早期版本的Eclipse被设计为插件集合,采用自己的插件系统来启动和管理插件 间交互。但是,随着其IDE功能的加强,原有框架渐渐有些力不从心,采用一个更强壮的解决方案迫在眉睫。此时OSGi框架已经逐步发展起来,经过大量研究 之后,Eclipse创建者决定通过实现OSGi框架规范来替换原有的插件框架。现在的3.x版本的Eclipse就采用了OSGi框架。另外 Eclipse实现并扩展了OSGi的R4规范,作为一个单独的项目供我辈中人使用,它就是
Equinox。
说完了Eclipse,该表一表JPF了。JPF借鉴了Eclipse早期的插件框架思想。它提供一个运行时引擎,可以动态发现并运行插件,从而为项目提 供一个标准的插件基础设施。JPF通过一个注册表来注册插件并管理其功能,插件之间可以通过继承来扩展原有插件功能,这一点和Eclipse是一致的。但 总体感觉JPF框架提供的功能有些简单。
下面亮相的就是我们的主角 —— OSGi,这是一位命运多桀的英雄。OSGi是一个1999年成立的有关Java和机顶盒的标准化协议组织。它最初定位于嵌入式系统开发,但由于当时嵌入 式JVM还不成熟,所以它并没有被广泛应用。在这几年的漫长岁月中它从默默无闻到逐渐涉足移动和汽车应用,乃至现在的中间件领域。随着Java技术的成 熟,OSGi也得到了越来越广阔的发展。是不是从OSGi看到了当年Java的影子?!
OSGi是一种服务运行平台,通过部署和扩展符合其规范的插件来提供所需功能,从而搭建起一个高效、稳定、安全、灵活的应用系统。插件在OSGi中称为 Bundle,它是一个独立的jar包,包含了其所需要的所有资源,包括但不限于所需的类、API文档、图片和国际化消息资源。由于可以动态的安装、卸 载、运行和停止组件,OSGi实现了可拔插的软件系统,并为系统在运行期提供了足够的灵活性、扩展性和高效性。另外基于OSGi的系统由于采用的是微内核 机制,所以保证了系统的稳定性。
Bundle使用元数据文件描述(MANIFEST.MF)来声明其导入、导出的类包以及和其他Bundle之间的依赖关系。每一个Bundle都有自己 独立的类加载器(Fragment Bundle除外),从而保证了其安全性和独立性。这也是OSGi之所以成功的很重要的因素。
关于这几种技术先聊这么多,更多的资料可以到OSGi的官方网站获取。目前OSGi的最新规范是R4版本,参考实现有Equinox、
Knopflerfish,另外还有基于R3的实现
Oscar。
分享到:
相关推荐
spring-osgi-1.2.1-with-dependencies.zip spring-osgi-1.2.1-with-dependencies.zip spring-osgi-1.2.1-with-dependencies.zip
- **Spring Bundle Context**:它是Spring与OSGi之间的桥梁,允许Spring应用访问OSGi服务并参与OSGi事件处理。 5. **使用场景** Spring OSGi适用于大型企业级应用,尤其是那些需要高可扩展性和动态部署能力的系统...
总结来说,“spring-osgi-1.2.1-with-dependencies”是一个集成了Spring与OSGi的完整包,它提供了在OSGi环境中运行Spring应用所需的所有组件和服务。通过理解和掌握这个包,开发者可以更好地利用OSGi的模块化优势,...
spring-osgi-1.2.0-with-dependencies.zip spring-osgi-1.2.0-with-dependencies.zip spring-osgi-1.2.0-with-dependencies.zip
赠送jar包:osgi-resource-locator-1.0.1.jar; 赠送原API文档:osgi-resource-locator-1.0.1-javadoc.jar; 赠送源代码:osgi-resource-locator-1.0.1-sources.jar; 赠送Maven依赖信息文件:osgi-resource-locator...
2. Spring DM库:如`spring-osgi-core`, `spring-osgi-io`, `spring-osgi-extender`等,提供了与OSGi环境交互的接口和工具。 3. OSGi框架库:如`org.eclipse.osgi`,这是实现OSGi规范的实现,例如Equinox或Felix。 4...
建议下载包含所有依赖项的压缩包,例如`spring-osgi-1.0.2-with-dependencies.zip`或最新版本的zip文件。 **2. 解压缩文件** 将下载的压缩包解压缩到一个方便访问的位置,例如`C:\software`目录下。 **3. 启动...
spring-osgi-core-1.2.1.jar spring-osgi-core-1.2.1-sources.jar spring-osgi-extender-1.2.1.jar spring-osgi-extender-1.2.1-sources.jar spring-osgi-io-1.2.1.jar spring-osgi-io-1.2.1-sources.jar spring-...
Spring OSGi是Spring框架与OSGi(Open Service Gateway Initiative)规范相结合的产物,它允许在OSGi容器中使用和管理Spring应用。OSGi是一种Java模块化系统,它提供了动态部署、版本控制和依赖管理等功能,极大地...
Spring-DM指的是 Spring ...Spring-DM 的主要目的是能够方便地将 Spring 框架和OSGi框架结合在一起,使得使用Spring的应用程序可以方便简单地部署在OSGi环境中,利用OSGi框架提供的服务,将应用变得 更加模块化。
标题"spring-osgi-1.2.0.zip"表明这是一个包含Spring OSGi 1.2.0版本的压缩包。这个版本可能包含了Spring框架与OSGi集成的相关库、文档、示例代码等资源,便于开发者在OSGi环境中使用Spring。 描述中提到"spring1.2...
Spring与Mybatis的整合可以让我们方便地进行数据库操作,并通过Spring的事务管理确保数据一致性。 Spring MVC是Spring框架的一部分,用于构建Web应用程序。它处理HTTP请求,将请求映射到控制器,然后通过模型和视图...
赠送jar包:osgi-resource-locator-1.0.1.jar; 赠送原API文档:osgi-resource-locator-1.0.1-javadoc.jar; 赠送源代码:osgi-resource-locator-1.0.1-sources.jar; 赠送Maven依赖信息文件:osgi-resource-locator...
标题中的“Spring与OSGI整合 计算器例子(转) +附整合代码和spring-osgi核心jar”表明我们将探讨如何将Spring框架与OSGi(Open Services Gateway Initiative)模块化系统进行集成,并通过一个计算器的例子来说明这个...
"基于OSGi和Spring开发Web应用" OSGi(Open Service Gateway Initiative)是一种面向服务的框架,能够提供动态模块部署和管理的能力。Spring 是一个轻量级的J2EE开发框架,特点是面向接口编程和非侵入式的依赖注入...
3. **RAP 和 OSGi**:理解 RAP 如何与 OSGi 容器交互,以及如何配置 RAP 应用来利用 OSGi 的服务发现和动态性。这涉及到 RAP 的服务器端和客户端组件如何在 OSGi 环境下工作。 4. **集成步骤**:整合 RAP 和 Spring...
自制CHM版的API文档,带索引。 注:如果各位下载后打开或无法显示页面,请在CHM文件右键—属性—解除锁定即可。
整合OSGI和Spring的主要目的是实现服务的动态发现和管理,以及在运行时动态装配和更新组件。 整合过程通常包括以下步骤: 1. **配置Spring Bundle**:将Spring的应用上下文配置文件打包到一个OSGI bundle中。这个...
Spring-DM(现在称为Spring OSGi)是Spring框架的一个扩展,旨在将Spring的功能与OSGi的模块化特性相结合,使开发者能够在OSGi环境中利用Spring的优势。 在本文中,作者通过一个简单的Web应用实例来展示如何利用...
3. **生命周期管理集成**:Spring容器可以与OSGi Bundle的生命周期进行协调,如在启动Bundle时初始化Spring Bean。 **源码和工具** 标签中的“源码”可能是指分析或理解OSGi和Spring如何在底层实现其功能,这通常...