OSGi是目前动态模块系统的事实上的工业标准,虽然一开始只是作为嵌入式设备和家庭网关的框架来使用,但是实际上它适用于任何需要模块化、面向服务、面向组件的应用程序。而Equinox则是的Eclipse所使用的OSGi框架,是Eclipse强大的插件体系的基础,Eclipse的稳定可靠性也为该框架带来了声誉。
本文章就将演示如何在Eclipse环境下利用Equinox框架进行OSGi应用开发。首先解释了实现上述应用程序所必需了解的基本概念和基础知识,并结合示例代码演示OSGi开发的一些重要技术,最后探讨了基于OSGi应用程序一般所采用的架构,以及如何将Equinox OSGi应用程序脱离Eclipse而部署为一个标准的Java应用程序。
一·Osgi及框架简介
OSGi简介
OSGi是目前动态模块系统的事实上的工业标准,虽然一开始只是作为嵌入式设备和家庭网关的框架来使用,但是实际上它适用于任何需要模块化、面向服务、面向组件的应用程序。
目前OSGi规范已经发展到第四版(R4),由OSGi联合组织(OSGi Alliance)负责进行维护管理,相关的规范资料也可以从该网站获得。
OSGi框架
开发基于OSGi的应用程序离不开实现了OSGi标准的框架,就好比是基于
J2EE的开发离不开应用服务器一样。目前比较流行的基于OSGi R4标准实现的OSGi框架有三个:
1.Equinox:这是大名鼎鼎的Eclipse所使用的OSGi框架,Eclipse强大
嵌入式系统是什么意思的插件体系就是构建在OSGi bundles的基础之上,Eclipse的稳定可靠性为该框架带来了声誉,而且由于有IBM公司的强力支持,其后续的开发和文档资料也有了一定的保障。一般情况下,我们推荐您使用该框架进行OSGi开发。本教程的后续部分也将演示如何使用Equinox框架来进行OSGi应用程序的开发。
2.Makewave Knopflerfish:这是另外一个比较知名的OSGi框架,目前的
版本已经支持R4规范,其特点在于为应用程序的开发提供了大量的
bundle。
3.Apache Flex:由Apache基金组织开发的面向社区的OSGi框架实现,
提供了标准的服务和一些有趣的和OSGi相关的服务实现。
二·Hello world!
Hello World!编写第一个OSGi应用程序
1.建立一个plug-in工程,File>New>Project,选择Plug-in development
>Plug-in Project
2.在建立工程的第一个向导,填入工程的名称:st.helloworld,使用
缺省的工程路径。注意目标平台的选择,由于我们的项目是一个通用的OSGi bundle,所以选择。
3.在下一个向导界面中,填入需要的一些插件信息(注意Eclipse中的插件概
念基本类似于OSGi中的bundle的概念),这里需要填入的是OSGi的provider(供应商)和classpath。如果没有特别的设计,一般可以忽略这两个字段。最后是关于activator的部分,如果不是一个fragment bundle 则需要填入,除非您的bundle自己实现框架的事件监听,这个似乎也没有必要。因此,建议使用缺省的设置,如图3:
Activator:这是bundle启动时首先调用的程序入口,相当于Java模块中的main函数。不同的是,main需要通过命令行调用,而OSGi的Activator是被动的接受OSGi框架的调用,收到消息后才开始启动。
最佳实践:不要在Activator中写太多的启动代码,否则会影响bundle启动速度,相关的服务启动可以放到服务的中。
4.最后一步,不使用任何的模板,所以勾掉缺省的选项,点击完成,如图4:
5.完成,基本的插件视图如图5,Eclipse会在工程名下建立相同路径的Java
Package,其中包含了Activator类,插件的配置信息也都放在MANIFEST.MF 文件中,将来我们相当多的工作都是在其中完成

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。