Apache <mark>Felix</mark>介绍

 由  Gou Rui 发布

Apache Felix 介绍


1 Felix 项目历史

作为Apache旗下的其中一个项目,Felix在2006年就拥有了自己的网站。不过一开始似乎进展并不快,直到2007年的七月,才发布了自己的1.0.0版本,其后他们发布了很多与Felix框架相关的Maven插件,到了2008年初,开始对纲要标准(Compendium Specification)进行部分实现。此后Felix项目的发展壮大非常的迅速,那时候的OSGi标准也日趋稳定和完善。时至今日,Felix项目不仅包含了一个OSGi R4(到今天为止,准确的版本号是4.2)服务平台标准的实现,在此之外还包含了很多OSGi相关的技术和功能(非标准),他们能帮助OSGi框架更好的发挥作用.

2 Felix 项目概述


整个Felix项目被分解为了若干个子项目,我们可以从SVN上将Felix检出:

svn checkout http://svn.apache.org/repos/asf/felix/trunk felix-trunk

完成了上述操作后,我们可以看到有整整57个文件夹,里面除了examples(示例程序)、src(无关紧要的内容,一些图片和css)、commons(项目需要用到的公共包,比如beanutils),还有pom(里面是总体的pom文件)这4个文件夹外,基本都是与Felix项目直接相关的代码,里面除了一些已经发布的,还有非常多的未发布项目。

2.1 Felix对标准的实现情况

下面我们从一个总体的角度来看看Felix对标准的那些内容进行了实现:

2.1.1 核心标准(Core Specification)

Felix对核心标准的实现都是通过了[OSGi联盟][OSGi Alliance]认证的。

标准名称 版本号 Felix中的子项目 项目版本
Framework R4.2 Framework 3.0.6
Package Admin 1.2 (R4.2) Framework 3.0.6
Start Level 1.1 (R4.2) Framework 3.0.6
Permission Admin R4.2 Framework Security 1.4.0
Conditional Permission Admin R4.2 Framework Security 1.4.0
URL Handlers 1.0 (R4.2) Framework 3.0.6
Service Hooks 1.0 (R4.2) Framework 3.0.6

2.1.2 纲要标准(Compendium Specification)

在这里我们只把实现并且已经发布过的子项目列举出来:

标准名称 版本号 Felix中的子项目 项目版本 备注
Log Service 1.3 (R4.2) Log 1.0.0
Http Service 1.2 (R4.2) Http Service Projects 2.0.4
Configuration Admin 1.3 (R4.2) Configuration Admin 1.2.8 参考实现
Metatype 1.1 (R4.2) Metatype 1.0.4
Preferences 1.1 (R4.2) Preferences 1.0.4
UPnP Device 1.1 (R4.2) UPnP Base Driver 0.8.0
Declarative Services 1.1 (R4.2) SCR 1.6.0 通过了R4.2相应的服从测试
Event Admin 1.2 (R4.2) Event Admin 1.2.8 同上
Blueprint 1.0 (R4.2) 由Apache Aries实现
Tracker 1.4 (R4.2) Framework 3.0.6 OSGi官方认证

2.2 标准以外的相关技术实现

2.2.1 用于简化OSGi开发的子项目

  • Dependency Manager

    在OSGi基于服务的体系结构中,应用是由一个个组件建立起来的,每个组件分别依赖和发布了一些服务,这样这些服务就形成了一个网络。但是由于其动态性,这个网络的结构总是在不停的变化,所以开发者总是不得不考虑和应对这样的变化,OSGi本身提供了服务的listener和tracker这两个机制来捕捉和监控服务的状态变化,但是对于开发者来说这个太底层了。而这个工具提供给我们了一套JavaAPI来声明式的定义和管理这些依赖。

  • iPOJO

    这是一个相当大的项目,从这个项目的主页上就可以看出Felix项目在这个子项目上花了很多精力,可以说是在OSGi基础上的一个革新。

    iPOJO是一个用于简化OSGi开发的服务组件运行时,它本身支持了所有OSGi的动态性。它基于POJO的概念简化了程序逻辑的开发,任何非功能性的对象属性只在运行的时候被注入进来。它主要有以下几个特点:

    • 开发组件的时候只需要定义POJO即可,没有多余的工作
    • 组件模型可扩展,所以很容易根据你的需要来调整
    • 标准的组件模型会管理服务的提供与依赖
    • iPOJO管理组件实例的生命周期和OSGi环境的动态性,这是前所未有的
    • 为了创建高动态性的应用,iPOJO提供了一个强大的组装系统
    • iPOJO支持标注、XML和JavaAPI来定义组件

    如果有机会,我会在一篇单独的文档中详细的介绍iPOJO。

2.2.2 Shell

  • Gogo - 用来和OSGi交互的较为常用的shell,除了基本的框架命令,其中还包含grep,cat,echo这类指令,并且可以自定义宏命令。
  • Shell - 这个子项目只提供了单纯的shell服务API,而没有提供用户界面。
  • Shell TUI - Apache Felix Shell的文字界面,相比gogo来说更为简单,但是不怎么常用,他的使用依赖于shell bundle。
  • Remote Shell - Apache Felix Shell的远程文字界面,我们通过这个工具可以在其他终端上远程操作Felix。

2.2.3 Maven插件

  • Maven Bundle Plugin

    这个插件用于简化Bundle的构建,可以将一个bundle看做以个Maven工程,其中还包括自动化对OSGi Bundle仓库的管理。它的前身曾经是OBR Plugin和OSGi Plugin这两个插件。

  • Maven SCR Plugin

    这个插件的主要作用是帮助用户生成OSGi中使用Declarative Services, Config Admin和Metatype services这三个功能所必要的信息,这样就简化了用户的操作。

2.2.4 其他

3 Felix 基本运行环境配置


3.1 Felix执行环境的下载

进入下载页面,选择Felix Framework Distribution的下载项:

http://felix.apache.org/site/downloads.cgi

如下图所示:

http://assets.osgi.com.cn/article/7289225/downloadfelix.png

3.2 启动Felix

将下载好的包解压,从命令行进入这个文件夹的根目录,执行如下命令,进入到Felix的命令行:

java -jar bin/felix.jar

如下图所示:

http://assets.osgi.com.cn/article/7289225/runfelix.png

这样我们就进入了Felix的执行环境,可以通过Shell与框架进行一些交互

3.3 一些简单的命令

在这个命令行下输入help我们就可以看到大部分的指令,由于数量不少,不在这里一一列出。为了避免命令名字的冲突,这些命令都有自己的名字空间,现有的名字空间有三种:

  • felix - 关于felix框架的核心命令,比如列出所有bundle,安装/卸载bundle等等
  • gogo - 包含grep,cat,echo这类的指令,并且gogo是个Felix的子项目,他是参照RFC 147来实现的,这个标准定义了OSGi环境的shell应该是怎么样的。
  • obr - 关于OSGi Bundle Repository功能的指令

如果对任何的命令有所疑问,用help+空格+“命令名称”来查看说明即可。


zero 2015-11-17 14:05

不错,学习中

顶(0) 踩(0) 回复

wmz 2015-05-14 18:45

嗯,http://osgi.jxtech.net 就是基于Felix进行开发的平台,不仅有在线演示,还有免费插件可供下载。

顶(12) 踩(0) 回复

泪雨迷情 2013-11-20 13:46

不错、

顶(0) 踩(0) 回复

chuan 2013-11-20 10:27

好文

顶(0) 踩(0) 回复
查看评论