欢迎来到天天文库
浏览记录
ID:37455066
大小:1.07 MB
页数:30页
时间:2019-05-24
《OSGi入门与实战》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、初探Java企业级开源框架OSGi(1)http://developer.51cto.com 2009-03-0209:22 51CTO.com 我要评论()OSGi框架在国外关注率是很高,但在国内的推广和使用却不够广泛,可能是因为OSGi字面上的意思太过于抽象。本文作者通过对OSGi产生背景与特性的描述像大家详细介绍了OSGi,并通过一个HelloWorld的实力带您详细了解OSGi的运行机制。第一次接触OSGi是2006年看见的一则网上新闻,该新闻中提到BMW汽车的通信-娱乐(infotainment)系统采用了OSGi架构,这套系统主要用来控制汽车上的音箱
2、、灯光、导航和通讯等设备,整个系统由1000多个模块组成,启动时间却只需要3.5秒钟,这对于一个基于Java的框架来讲,具有两个重大意义:一、说明了Java执行效率并不差;二、OSGi框架的性能尤其优秀。因此笔者对OSGi框架产生了极大的兴趣,后来终于在一个项目中负责研究和开发基于OSGi框架的应用程序,从此对它便情有独钟。令人欣慰的是,OSGi在2007年取得了诸多战果:BEA公司、Eclipse基金会和Interface21公司相继加入OSGi联盟;在EclipseCon2007大会上引起了业界的广泛关注,其中以Spring-OSGi、WebService与O
3、SGi等技术最为引人注目,这也标志着OSGi将在未来与企业应用紧密结合;OSGiR4标准发布,相关内容被成功的写入JSR291规范中;Spring2.5框架的发布,宣称其所有jar包都兼容OSGi标准;虽然OSGi没能成功进入JavaEE6草拟计划中,但是Sun公司宣称会在下一代JavaEE标准中重点考虑OSGi。因此笔者个人认为,在不久的将来OSGi势必会在企业应用中发挥出强大的作用,基于OSGi框架的产品也将层出不穷。本文从OSGi的历史背景、OSGi的特点、OSGi开源框架介绍、OSGi开发环境部署、OSGi版的HelloWorld五个部分对OSGi框架进行
4、概要的介绍,希望读者能从中有所收获。51CTO编辑推荐:OSGi入门与实践全攻略OSGi的历史背景什么是OSGi呢?OSGi——OpenServiceGatewayInitiative字面上的意思是一个公共的服务平台。1999年OSGi联盟成立,它是一个非盈利的国际组织,旨在建立一个开放的服务规范,为通过网络向设备提供服务建立开放的标准,是开放业务网关的发起者。OSGi联盟的初始目标是构建一个在广域网和局域网或设备上展开业务的基础平台。历史总是具有惊人的相似性,正如Java诞生于一个嵌入式开发的项目中,却被应用于网络平台的开发,对OSGi的最早设计也是针对嵌入式应
5、用的,诸如机顶盒、服务网关、手机、汽车等都是其应用的主要环境。后来,由于OSGi的诸多优秀特性(可动态改变系统行为,热插拔的插件体系结构,高可复用性,高效性等等),它被应用于许多PC上的应用开发,因此逐步为开发者所知和钟爱。现在人们对OSGi的理解已经远远不是它字面和初衷所能解释的了,笔者认为称其为一个轻巧的、松耦合的、面向服务的应用程序开发框架更为确切一些。OSGi真正被大家所知还是和Eclipse有密切关系的。Eclipse很多年都是Java开发者的首选IDE,相信只要是一个Java开发者,应该没有人不知道Eclipse的。在Eclipse3.0以前的版本中,
6、它本身有一套自身的插件体系,而该插件体系的设计非常精巧细致,受到许多开发者的推崇,但是Eclipse基金在Eclipse3.0发布的时候,做出了一个大胆的行为,就是将Eclipse逐步迁移到OSGi框架中,并自己实现了一个OSGi开源框架,取名为Equinox,该框架随着每次Eclipse的发布也会相应的更新。Eclipse之所以这么做,其一是因为Eclipse的插件体系与OSGi的设计思想不谋而合,其二也是因为OSGi更为规范,其对插件体系的定义也更为完整一些。事实证明Eclipse在采用OSGi架构后,无论从性能、可扩展性这两个方面来讲还是从二次开发的角度来定
7、义,都取得巨大的成功。下图展示了Eclipse与OSGi框架的关系。OSGi的特点在介绍OSGi框架的特点之前,先简单的介绍一下OSGi框架的各个部分,如下图所示。解释一下上图中每一层的含义,其中OS层和JVM层可以不用详细介绍了,重点需要关注的是应用程序Bundles层。框架本身提供的类加载,生命周期管理,服务注册和规范服务也都是针对Bundles的。每一个在OSGi框架中运行的逻辑单元称为一个Bundle,Bundle实际是一个符合特定形式的jar文件。每一个Bundle的功能可以是抽象的也可以是具体的。所谓抽象,就是它不是一个具体的应用,没有完成一些业务功能
8、,而只暴露
此文档下载收益归作者所有