火龙果软件-使用 - Equinox开发OSGi应用程序

更新时间:2023-10-28 08:55:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

关于本教程

OSGi 是目前动态模块系统的事实上的工业标准,虽然一开始只是作为嵌入式设备和家庭网关的框架来使用,但是实际上它适用于任何需要模块化、面向服务、面向组件的应用程序。而 Equinox 则是的 Eclipse 所使用的 OSGi 框架,是 Eclipse 强大的插件体系的基础,Eclipse 的稳定可靠性也为该框架带来了声誉。 本教程就将演示如何在 Eclipse 环境下利用 Equinox 框架进行 OSGi 应用开发。首先解释了实现上述应用程序所必需了解的基本概念和基础知识,并结合示例代码演示 OSGi 开发的一些重要技术,最后探讨了基于 OSGi 应用程序一般所采用的架构,以及如何将 Equinox OSGi 应用程序脱离 Eclipse 而部署为一个标准的 Java 应用程序。 目标

在本教程中,您将学习:

? ? ? ? ? ?

OSGi 及框架简介

编写第一个 OSGi 应用程序 重要的理论知识

开发一个真实的 OSGi 应用程序 探讨 OSGi 应用架构 部署 OSGi 应用程序

先决条件

本教程假设读者熟悉基本 Java 语言以及 Eclipse 开发环境的使用。 系统需求

本教程假设您有一个可以工作的 Eclipse 3.x 环境。如果还没有,请在 Eclipse 网站 上找到相关下载的链接,以帮助您在自己的系统上操作示例步骤以及运行示例代码。

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!编写第一个 OSGi 应用程序

准备工作

1. 从附属资料中下载 Eclipse 3.x 版本,Eclipse 3.2+ 版本已经全面支持 OSGi R4 规范。目前最佳实践是下载 Eclipse 3.3.2 版本。(下载请见:参考资料)

2. 将 Eclipse 解压缩到 d:\\work\\seclipse 目录,开始我们的 OSGi 之旅。

Hello World

一般情况下,学习一门新的技术,程序员都习惯于首先开发一个 hello world 应用程序,这似乎也是一种“工业标准”。好的,让我们开始吧,开发一个简单的 OSGi 应用程序并不难,步骤如下:

1. 建立一个 plug-in 工程,File > New > Project,选择 Plug-in development > Plug-in Project

图 1. 新建 plug-in 工程

2. 在建立工程的第一个向导,填入工程的名称:osgi.test.helloworld,使用缺省的工程路径。注意目标平台的选择,由于我们的项目是一个通用的 OSGi bundle,所以选择 equinox 。

图 2. 填入工程名及选择目标平台

3. 在下一个向导界面中,填入需要的一些插件信息(注意 Eclipse 中的插件概念基本类似于 OSGi 中的 bundle 的概念),这里需要填入的是 OSGi 的 provider(供应商)和 classpath 。如果没有特别的设计,一般可以忽略这两个字段 。最后是关于 activator 的部分,如果不是一个 fragment bundle 则需要填入,除非您的 bundle 自己实现框架的事件监听,这个似乎也没有必要。因此,建议使用缺省的设置,如图 3:

图 3. 使用缺省设置

Activator:这是 bundle 启动时首先调用的程序入口,相当于 Java 模块中的 main 函数。不同的是,main 需要通过命令行调用,而 OSGi 的 Activator 是被动的接受 OSGi 框架的调用,收到消息后才开始启动。 最佳实践:不要在 Activator 中写太多的启动代码,否则会影响 bundle 启动速度,相关的服务启动可以放到服务的监听器中。

4. 最后一步,不使用任何的模板,所以勾掉缺省的选项,点击完成,如图 4:

图 33. 启动脚本 注意 1/2/3/117/118 参数都是 OSGi 环境特有的。 运行 双击 run.bat,可以看到如下结果: 图 34. 运行结果

总结

通过阅读本文您应该已经掌握了使用 Equinox 开发基于 OSGi 的应用程序的方法,了解了其关键的理论知识,还学习了如何开发分层的,模块化的、分布式的应用程序,掌握了在 Windows 平台部署基于 Equinox 平台的 OSGi 应用程序的方法。总体上看,OSGi 能够有效的降低模块之间的耦合程度,将软件设计的开闭原则(Open-Close Principle)提高到一个新的水平,另外 OSGi 也为系统架构设计提供了更大的灵活性,使得我们开发出像 Eclipse 那样插件化的平台系统不再遥不可及。 参考资料

学习

? ? ?

Eclipse.org:获得有关 Eclipse 的更多详细资料。 Equinox:获得有关 Equinox 框架的更多详细资料。

OSGi Alliance Service Platform:了解更多关于 OSGi 的信息,包括 OSGi Release 4 规范等信息。

Help – Eclipse SDK:获得在 Eclipse 下进行开发的详细帮助文档。 “Eclipse 平台入门 -- 使用 Eclipse 插件来编辑、编译和调试应用程序”(developerWorks,2004 年 2 月):本文为您提供关于 Eclipse 平台的概述,包括其起源和体系结构。

“了解 Eclipse 插件如何使用 OSGi”(developerWorks,2006 年 9 月):阐明了 Eclipse 与 OSGi 的关系,还解释了 OSGi manifest.mf 文件选项以及通过 Eclipse 提供的添加项。

“基于 OSGi 的面向服务的组件编程”(developerWorks,2007 年 8 月):本文介绍了基于 OSGi 开发一个应用程序的过程,读者可以学习如何基于 OSGi 开发自己的应用。

“探索 OSGi 框架的组件运行机制”(developerWorks,2008 年 7 月):本文介绍了 OSGi 框架中的组件(Bundle)的运行机制,并结合实际示例加以说明。

developerWorks Eclipse 技术资源中心:这里汇集了大量和 Eclipse 开发平台相关的技术文章和教程。

developerWorks Java 技术专区:这里有数百篇关于 Java 编程方方面面的文章。

浏览 技术书店,阅读关于这些技术主题和其它技术主题的书籍。

? ?

?

?

?

?

?

?

获得产品和技术

? ? 下载 Eclipse。 下载 Equinox OSGi 框架。 讨论

? ? ? 访问 Eclipse 新闻组。 访问 Eclipse 邮件列表。 访问 Equinox 邮件列表。

? 通过参与 developerWorks blogs 加入 developerWorks 社区。

本文来源:https://www.bwwdw.com/article/0qe2.html

Top