4大 Java OSGi 框架比较 (Knopflerfish, Apache Felix, Equinox, Spring DM)

转载 2013年12月01日 23:45:37
    OSGi正在成为一种趋势,越来越多的项目采用了OSGi,越来越多的中间件都开始采取了OSGi的标准。身为一名Java开发人员,如果你还对OSGi结构一无所知,那你真的有点Out了。

      什么是OSGi

      OSGi的名称来源于其开源组织的名称Open Services Gateway initiative,OSGi是一个标准,它致力于提供给Java项目一个模块化的底层环境,以及一系列通用的服务(Service)。和普通的JVM程序相比,OSGi的程序天生拥有动态模块的特点,不同的模块(OSGi里称之为Bundle)有着独立的生命周期,可以独立进行安装、启动、停止、卸载的操作,模块间的依赖性管理也由OSGi提供。你可以看出,OSGi非常适合需要进行Plugin管理的项目,一个典型的成功案例就是Eclipse和它众多的Plugin。OSGi标准还规范了一系列我们常间的操作,日志、配置文件、事件队列、Web开发、JPA&JDBC等等,大部分部署OSGi标准的框架都提供了这些服务,这样一方面规范了我们代码的结构,一方面节约了我们开发的时间。

      目前基于OSGi的框架大概有4个:KnopflerfishApache FelixEquinoxSpring DM。因为都是基于OSGi标准的,他们的大致用法和核心功能是一致的。一般来说一个OSGi的组件(Bundle)可以轻易的从一个框架迁移到另一个框架。框架的不同主要是体现在他们本身的设计和额外的服务上。根据我的一些经验,对这4个框架进行了一下比较,希望对刚接触OSGi或是由于如何选择OSGi框架的人有所帮助。

      Apache Felix 最全面的框架

      Apache Felix是Apache旗下的一个OSGi框架,项目本身非常成熟,已经被用到了很多其他的项目中,例如Apache Servicemix。它本身提供的服务也是最全的,几乎涵盖了全部的OSGi 4.2的标准。除此之外还提供了一些非标准的功能,例如iPOJO。框架本身非常紧凑,你只需要3个包加一个shell就可以运行了,无论是开发还是Debug都非常简便。除了Felix,还有两个项目是和OSGi相关的。一个是Apache Felix Karaf,它本身是Felix的一个子项目,但他其实是封装了Felix提供更高一层的Runtime,例如提供了JAAS。另一个是Apache Aries,目前还处于起步阶段,它作为Felix的补充,提供OSGi企业级规范,包括JPA、JDBC、JTA、JNDI等等。

     总的来说,Apache Felix是我个人推荐的最佳OSGi框架,它简单的结构也更适合出学OSGi的开发人员。

     Equinox 与Eclipse完美结合

     Equinox是Eclipse旗下的OSGi框架,本身也被Eclipse采用,是Eclipse注明的PDE开发环境的底层。Equinox本身也是相当的全面的框架,提供的功能不比Felix少多少。但是它功能的分类就稍显混乱,文档和Sample也组织的不是很好。事实上相当Equinox还是被当做开发Eclipse Plugin的应用较多,如果你要开发一个Web程序,你就会感到它本身的功能和文档不够全面。Equinox最大的优势在于它和Eclipse结合紧密,只要你安装了PDE,你就已经有了Equinox,可以方便的在Eclipse里设置你开发的Bundle,启动、部署等操作也异常简单,而且有专门的Debug界面,你还能要求什么呢?

      如果你想基于Eclipse开发,Equinox无疑是好选择。但对于新手而言,有时候会搞混Eclipse Plugin与OSGi的关系。

      Spring DM 畸形的需求产物

      Spring DM是Spring旗下的OSGi框架,Spring我想大家都知道了,Spring DM的最大特点就是结合了Spring框架。我之所以说特点还不是优势,是因为我认为这个需求本身就是错误的。Spring和核心就是一个IoC,当然后来它的外延扩大了,提供了越来越多乱七八糟的功能。OSGi规范本身就制定了一系列IoC的功能标准,尤其是其中的BluePrint其实相当多的借鉴了Spring,因此完全没有必要再引入Spring充当新的IoC了。Spring本身无论是ClassLoader还是配置文件上都与OSGi格格不入,之所以有这种需求是因为现在有大量基于Spring的项目想要过渡到OSGi上。Spring还发布了一个App Server叫Spring DM Server,是一个基于Spring DM的App Server,你会发现你需要加载80+的包来完成一个hello world操作,这种恐怖的依赖性正是Spring所带来的。

      意识到这个问题的显然不只是我一个人,传闻Spring DM和Spring DM Server都将会移交给Eclipse。就目前来说除非你有基于Spring项目的移植需求,我不推荐其他任何情况下使用Spring DM。

      Knopflerfish 孤独孤傲

      Knopflerfish其实是OSGi的先行者,但是由于没有强力的靠山,再后来的竞争中显然不如前三者有人气。它本身是一个相当标准OSGi框架,提供了绝大多数标准功能,但是无论在人气上,开发进度上,文档完善上都不如其他的三者。

      既生瑜,何生亮阿~

4大 Java OSGi 框架比较 (Knopflerfish, Apache Felix, Equinox, Spring DM)

OSGi正在成为一种趋势,越来越多的项目采用了OSGi,越来越多的中间件都开始采取了OSGi的标准。身为一名Java开发人员,如果你还对OSGi结构一无所知,那你真的有点Out了。       ...
  • xinxuan777
  • xinxuan777
  • 2013年11月23日 11:07
  • 648

【转载】4大 Java OSGi 框架比较 (Knopflerfish, Apache Felix, Equinox, Spring DM)

OSGi正在成为一种趋势,越来越多的项目采用了OSGi,越来越多的中间件都开始采取了OSGi的标准。身为一名Java开发人员,如果你还对OSGi结构一无所知,那你真的有点Out了。       ...
  • zhangmengjlu
  • zhangmengjlu
  • 2013年04月27日 23:25
  • 298

4大Java OSGi 框架比较 (Knopflerfish, Apache Felix, Equinox, Spring DM)

     原:http://www.cnblogs.com/longkerdandy/archive/2010/09/29/OSGi_Compare.html      OSGi正在成为一种趋势,越来...
  • orangelizq
  • orangelizq
  • 2010年10月16日 16:47
  • 1634

OSGI学习一(使用Apache Felix搭建OSGI开发环境)

简述OSGI          首先我们要认识一下什么是OSGI,OSGI亦称Java动态模块,它的最大作用就是来帮助我们实现Java的模块化应用的。OSGI首先是一套规范,然后是一个容器,所以我们...
  • nomousewch
  • nomousewch
  • 2011年11月29日 15:36
  • 14611

Equinox OSGi服务器应用程序的配置步骤 (支持JSP页面)

本文介绍在Eclipse里如何配置一个简单的基于Eclipse Equinox OSGi实现的Web应用程序,在它的基础上可以构造更加复杂的应用,本文使用的是Eclipse 3.3.1版本,如果你的E...
  • greatmind829
  • greatmind829
  • 2012年09月04日 18:35
  • 3418

Equinox 和 OSGI 介绍

1.       背景信息 Equinox项目是Eclipse开源组织提供的OSGi框架的实现。Eclipse自3.0版本开始,其内核移植到OSGi框架上。通过OSGi框架强大的组件控制,交互和管...
  • afandaafandaafanda
  • afandaafandaafanda
  • 2015年01月24日 11:16
  • 1585

OSGi#1:Equinox 初探

From a code point of view, Equinox is an implementation of the OSGi core framework specification,
  • kisimple
  • kisimple
  • 2015年04月22日 00:30
  • 1385

[OSGI] Felix基本环境搭建及操作

Felix是Apache旗下的一款实现OSG规范I的框架。访问地址:http://felix.apache.org/ 搭建基本的OSGI框架只需要下载Felix Framework。 下载完...
  • hechaomax
  • hechaomax
  • 2015年01月12日 13:53
  • 2024

OSGI--apache felix 入门

引言 本文是本系列的第 1 部分,我们将开发包含客户端和服务器端组件的订单应用程序。然后将这些组件打包为 OSGi 包。客户端调用服务组件处理订单。服务组件具有处理订单和打印订单 ID 的方法。...
  • Icecream0
  • Icecream0
  • 2012年03月30日 17:05
  • 12116

Intellij Idea 15中开发Maven+osgi项目(Apache felix环境)

1.Intellij Idea创建Maven项目 利用maven模板快速创建maven项目,如图操作,填写g(groupid)a(artifactid)v(version)。 maven ho...
  • Primary_wind
  • Primary_wind
  • 2016年07月03日 11:51
  • 5626
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:4大 Java OSGi 框架比较 (Knopflerfish, Apache Felix, Equinox, Spring DM)
举报原因:
原因补充:

(最多只允许输入30个字)