初探Java企业级开源框架OSGi

发表于:2011-5-16 09:30

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:付江    来源:CSDN

  基于上述的介绍,读者想必应对OSGi 有个大致的概念了,那么接下来就让我们来看看OSGi 究竟能够给企业应用带来什么?它究竟有哪些功能值得我们把宝贵的时间投资在上面?

  第一点,也是笔者认为最重要的一点,基于OSGi 的应用程序可动态更改运行状态和行为。笔者曾经参与过开发J2EE 企业级项目,应用服务器用的是IBM 的Websphere,主要开发基于EJB 2.1 的一些应用程序。整个开发经历给笔者的最深印象是等待,排除编写EJB 规范中要求的一系列繁杂的接口,单单对应用程序进行部署和测试,反复启动服务器就浪费掉很多时间。而在OSGi 框架中,每一个Bundle 实际上都是可热插拔的,因此,对一个特定的Bundle 进行修改不会影响到容器中的所有应用,运行的大部分应用还是可以照常工作。当你将修改后的Bundle 再部署上去的时候,容器从来没有重新启过,在外界看来,这种过程似乎从未发生过。这种可动态更改状态的特性在一些及时性很强的系统中尤其重要,比如说一个及时销售系统,当你的服务器因为要更新某个组件从而花上数分钟时间重新启动的话,必然导致客户的流失和利益的损失,但是采用OSGi 架构的应用则完全可以将损失降到最低。众所周知,Spring 框架以其优秀的特性,占据了当前企业应用开发的半边天空,而刚刚发布的2.5 版本,宣布所有jar 包均支持OSGi 特性,其维护的子项目Spring-OSGi 也是专门针对Spring 与OSGi 的集成。Spring 早前版本有一点被人所诟病,就是其无法动态的改变其运行状态,被迫停止服务器,再修改配置文件,而与OSGi 的结合,必然导致这种状态的终结。最后,笔者认为这种特性也保证了系统有足够的灵活性和可扩展性,对开发人员也大大节省了需要等待的时间。

  第二点,它是一个稳定高效的系统。OSGi 是一个微核的系统,所谓微核是指其核心只有为数不多的几个jar 包。基于OSGi 框架的系统可分可合,其结构的优势性导致具体的Bundle 不至于影响到全局,不会因为局部的错误导致全局系统的崩溃。每个Bundle 也只有当服务被调用的时候才会启动,因此性能是较一般的框架高出许多。

  第三点,可复用性强。OSGi 框架本身可复用性极强,很容易构建真正面向接口的程序架构,每一个Bundle 都是一个独立可复用的单元。但是采用OSGi 框架进行企业开发是需要气魄和勇气的,因为当前的软件企业,大多已经积累了许多年,都会遗留下来一些可复用的工具箱程序,而采用OSGi 架构需要重新对这些遗留系统进行封装,更有可能的是需要把整个体系架构打散了,进行重新的架构和排列。这个开发成本不能说是不高,但笔者认为是值得的,因为从此以后企业可以利用OSGi 独特的特性,将重复的知识轻易的过滤掉。对于新的开发,可以从企业的Bundles 库中精简出可复用的模块,量身定做新的Bundles,最大限度的利用了以前的积累,这样的过程更能促使企业竞争力的增强。

  OSGi 开源框架介绍

  当前的OSGi 开源框架主要包含如下几个:

  Equinox

  最知名,也是更新最频繁的,由于Eclipse 基金的支持,其功能越来越完善,笔者后续的具体开发都是基于该框架来实现的。当前已发布版本是3.3.1 与Eclipse 版本相同,实现了OSGi R4 规范,并提供很多平台性质的服务,包括:常用功能模块、日志模块、Web服务器模块、Servlet 模块、JSP 解析模块等等。由于其与Eclipse 的天然联系,使得开发基于Equinox 的应用程序变得很简单,笔者推荐采用此框架进行二次开发。具体内容可以从http://www.eclipse.org/equinox/下载。

  Knopflerfish

  很早的,也很优秀的一个OSGi 框架,也实现了OSGi R4 标准,去年十一月发布了其2.0.2版本。该项目的宗旨在于创建一个易于开发的OSGi 平台,与Equinox 不同之处在于它本身提供一些小应用实例,包括一个可视化控制台等,也提供基于Eclipse 的插件。具体内容可以从http://www.knopflerfish.org/下载。

  Felix

  很新的一个OSGi 框架,社区很活跃,更新频率高,是Apache 的开源项目。该项目2007年8月才出1.0 版,也实现了OSGi R4 规范,也提供相关的基础服务和扩展服务功能。具体内容可以从http://felix.apache.org/site/index.html下载。

  OSGi 开发环境部署

  讲了那么多原理,如果不动手实践一下,总是难以令人信服的。那么现在我们就开始动手搭建开发环境吧。

  首先,你需要准备好Eclipse 笔者用的是Eclipse 3.3.1 ,还有从Equinox 网站上下载到的Equinox SDK。

  其次,将Equinox SDK 解压,解压后是一个Eclipse 目录,将该目录下的所有内容拷贝至你的Eclipse 安装目录下,就像平时手动安装Eclipse 插件一样。

  最后,测试下是否安装成功。启动你的Eclipse,选择Run>Open Run Dialog...在弹出的界面中,如果出现了OSGi Framework 的选项,那基本上就是成功了。点击新建一个OSGi Run方式,这时会列出一系列的加载组件,你可以检查一下,如果里面有org.eclipse.osgi ,org.eclipse.osgi.services 和一系列以org.eclipse.equinox 开头的组件,那么就真的安装成功了。选中org.eclipse.osgi 和org.eclipse.osgi.services,点击Run 按钮,控制台会出现“osgi>”的提示,输入“ss”,就会看到你运行的这两个Bundles 的ID和状态了。每次输入错误的时候,控制台会打印出完整的命令列表,读者可以在此参考。

42/4<1234>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • wmzsoft
    2015-6-02 10:15:35

    httop://osgi.jxtech.net 就是一个基于OSGi的企业级开发平台,从在线演示和免费插件来看,做得十分优秀。

  • wmzsoft
    2015-5-26 15:56:42

    http://osgi.jxtech.net 就是一个成功的OSGi企业级开发平台。

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号