OSGi : Java语言的动态模块系统,它为模块化应用的开发定义了一个基础架构。
开源实现:
1,Knoflerfish:是OSGi规范第3版和第4版的开源实现,它实现了OSGi规范规定的必须实现的功能及部分可选功能;
2,Equinox:是参照OSGi规范第4版实现的,它构成了Eclipse IDE的核心—模块化的Java运行时;它实现了OSGi规范4中规定的必须强制实现的功能,同时,它也实现了OSGi规范中大部分的可选功能;
3,Apache的Felix:Apache软件基金会实现的OSGi开源容器,该容器还没有和OSGi规范完全兼容。
OSGi具有以下优点:
1,您可以在不重启容器的情况下,动态地安装、卸载、启动和停止您的应用程序中的不同模块;
2,对于您应用程序中的某一特定模块,容器可以同时运行该模块的多个版本;
3,OSGi为开发嵌入式应用、移动应用、富互联网应用(RIA)提供了非常优秀的基础架构;
开发一个简单的Hello World的OSGi Bundle(OSGi绑定包)
1)新建Bundle
在Eclipse中,点击“File->New->Project”菜单,您将会看到新项目创建对话框;
2) 在新项目对话框中,选择“Plug-inProject(插件项目)”并点击“Next(下一步)”按钮,您将看到插件项目对话框;
3) 在插件项目对话框中,请键入下列值:
Project Name(项目名称):com.javaworld.sample.HelloWorld
Target Platform(目标平台):an OSGiFramework->Standard (OSGi框架->标准)
4) 对其它的要求输入值采用缺省值,并点击“Next(下一步)”按钮,您将会看到插件上下文对话框;
5) 在插件上下文对话框中,请选择缺省值并点击“Next(下一步)”按钮;
6) 在模板对话框中,请选择“Hello OSGiBundle(你好,OSGi包)”模板,然后点击“Finish(完成)”按钮完成该项目。
经常使用的OSGi命令:
- ss: 该命令显示所有已安装的Bundles及它们的状态,它将显示Bundle ID,Bundle的简短名称及Bundle状态;
- start< bundleid>: 该命令将启动一个Bundle;
- stop< bundleid>: 该命令将停止一个Bundle;
- update< bundleid>: 该命令使用新的JAR文件更新一个Bundle;
- install< bundleid>: 该命令将一个新的Bundle安装到OSGi容器;
- uninstall< bundleid>: 从OSGi容器中卸载一个已安装的Bundle。