欢迎来到天天文库
浏览记录
ID:41006545
大小:1.19 MB
页数:44页
时间:2019-08-13
《使用Equinox 开发 OSGi 应用程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、关于本教程OSGi是目前动态模块系统的事实上的工业标准,虽然一开始只是作为嵌入式设备和家庭网关的框架来使用,但是实际上它适用于任何需要模块化、面向服务、面向组件的应用程序。而Equinox则是的Eclipse所使用的OSGi框架,是Eclipse强大的插件体系的基础,Eclipse的稳定可靠性也为该框架带来了声誉。本教程就将演示如何在Eclipse环境下利用Equinox框架进行OSGi应用开发。首先解释了实现上述应用程序所必需了解的基本概念和基础知识,并结合示例代码演示OSGi开发的一些重要技术,最后探讨
2、了基于OSGi应用程序一般所采用的架构,以及如何将EquinoxOSGi应用程序脱离Eclipse而部署为一个标准的Java应用程序。目标在本教程中,您将学习:·OSGi及框架简介·编写第一个OSGi应用程序·重要的理论知识·开发一个真实的OSGi应用程序·探讨OSGi应用架构·部署OSGi应用程序先决条件本教程假设读者熟悉基本Java语言以及Eclipse开发环境的使用。系统需求本教程假设您有一个可以工作的Eclipse3.x环境。如果还没有,请在Eclipse网站上找到相关下载的链接,以帮助您在自己的系
3、统上操作示例步骤以及运行示例代码。OSGi及框架简介OSGi简介OSGi是目前动态模块系统的事实上的工业标准,虽然一开始只是作为嵌入式设备和家庭网关的框架来使用,但是实际上它适用于任何需要模块化、面向服务、面向组件的应用程序。目前OSGi规范已经发展到第四版(R4),由OSGi联合组织(OSGiAlliance)负责进行维护管理,相关的规范资料也可以从该网站获得。(参考资料)OSGi框架开发基于OSGi的应用程序离不开实现了OSGi标准的框架,就好比是基于J2EE的开发离不开应用服务器一样。目前比较流行的基
4、于OSGiR4标准实现的OSGi框架有三个:1.Equinox:这是大名鼎鼎的Eclipse所使用的OSGi框架,Eclipse强大的插件体系就是构建在OSGibundles的基础之上,Eclipse的稳定可靠性为该框架带来了声誉,而且由于有IBM公司的强力支持,其后续的开发和文档资料也有了一定的保障。一般情况下,我们推荐您使用该框架进行OSGi开发。本教程的后续部分也将演示如何使用Equinox框架来进行OSGi应用程序的开发。2.MakewaveKnopflerfish:这是另外一个比较知名的OSGi框
5、架,目前的版本已经支持R4规范,其特点在于为应用程序的开发提供了大量的bundle。3.ApacheFlex:由Apache基金组织开发的面向社区的OSGi框架实现,提供了标准的服务和一些有趣的和OSGi相关的服务实现。HelloWorld!编写第一个OSGi应用程序准备工作1.从附属资料中下载Eclipse3.x版本,Eclipse3.2+版本已经全面支持OSGiR4规范。目前最佳实践是下载Eclipse3.3.2版本。(下载请见:参考资料)2.将Eclipse解压缩到d:workseclipse目录
6、,开始我们的OSGi之旅。HelloWorld一般情况下,学习一门新的技术,程序员都习惯于首先开发一个helloworld应用程序,这似乎也是一种“工业标准”。好的,让我们开始吧,开发一个简单的OSGi应用程序并不难,步骤如下:1.建立一个plug-in工程,File>New>Project,选择Plug-indevelopment>Plug-inProject图1.新建plug-in工程2.在建立工程的第一个向导,填入工程的名称:osgi.test.helloworld,使用缺省的工程路径。注意目标平台的
7、选择,由于我们的项目是一个通用的OSGibundle,所以选择equinox。图2.填入工程名及选择目标平台1.在下一个向导界面中,填入需要的一些插件信息(注意Eclipse中的插件概念基本类似于OSGi中的bundle的概念),这里需要填入的是OSGi的provider(供应商)和classpath。如果没有特别的设计,一般可以忽略这两个字段。最后是关于activator的部分,如果不是一个fragmentbundle则需要填入,除非您的bundle自己实现框架的事件监听,这个似乎也没有必要。因此,建议使
8、用缺省的设置,如图3:图3.使用缺省设置Activator:这是bundle启动时首先调用的程序入口,相当于Java模块中的main函数。不同的是,main需要通过命令行调用,而OSGi的Activator是被动的接受OSGi框架的调用,收到消息后才开始启动。最佳实践:不要在Activator中写太多的启动代码,否则会影响bundle启动速度,相关的服务启动可以放到服务的监听器中。1.最后一步,不使用任何的模板,
此文档下载收益归作者所有