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开发的子项目
-
在OSGi基于服务的体系结构中,应用是由一个个组件建立起来的,每个组件分别依赖和发布了一些服务,这样这些服务就形成了一个网络。但是由于其动态性,这个网络的结构总是在不停的变化,所以开发者总是不得不考虑和应对这样的变化,OSGi本身提供了服务的listener和tracker这两个机制来捕捉和监控服务的状态变化,但是对于开发者来说这个太底层了。而这个工具提供给我们了一套JavaAPI来声明式的定义和管理这些依赖。
-
这是一个相当大的项目,从这个项目的主页上就可以看出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插件
-
这个插件用于简化Bundle的构建,可以将一个bundle看做以个Maven工程,其中还包括自动化对OSGi Bundle仓库的管理。它的前身曾经是OBR Plugin和OSGi Plugin这两个插件。
-
这个插件的主要作用是帮助用户生成OSGi中使用Declarative Services, Config Admin和Metatype services这三个功能所必要的信息,这样就简化了用户的操作。
2.2.4 其他
- File Install - 用来管理bundle部署及其目录的一个简单的代理。
- OSGi Bundle Repository - 帮助我们更好的发现和部署bundle和bundle的依赖。
- Web Console - 基于web的Felix控制台。
3 Felix 基本运行环境配置
3.1 Felix执行环境的下载
进入下载页面,选择Felix Framework Distribution的下载项:
http://felix.apache.org/site/downloads.cgi
如下图所示:
3.2 启动Felix
将下载好的包解压,从命令行进入这个文件夹的根目录,执行如下命令,进入到Felix的命令行:
java -jar bin/felix.jar
如下图所示:
这样我们就进入了Felix的执行环境,可以通过Shell与框架进行一些交互
3.3 一些简单的命令
在这个命令行下输入help我们就可以看到大部分的指令,由于数量不少,不在这里一一列出。为了避免命令名字的冲突,这些命令都有自己的名字空间,现有的名字空间有三种:
- felix - 关于felix框架的核心命令,比如列出所有bundle,安装/卸载bundle等等
- gogo - 包含grep,cat,echo这类的指令,并且gogo是个Felix的子项目,他是参照RFC 147来实现的,这个标准定义了OSGi环境的shell应该是怎么样的。
- obr - 关于OSGi Bundle Repository功能的指令
如果对任何的命令有所疑问,用help+空格+“命令名称”来查看说明即可。
不错,学习中
顶(0) 踩(0) 回复嗯,http://osgi.jxtech.net 就是基于Felix进行开发的平台,不仅有在线演示,还有免费插件可供下载。
顶(12) 踩(0) 回复不错、
顶(0) 踩(0) 回复好文
顶(0) 踩(0) 回复