OSGi 是移动 Java 的解决方案吗?

  • David Beers
  • 张凯峰

2007 年 6 月 30 日

话题:Java移动语言 & 开发架构

2007 年的 JavaOne 大会反映出这样一个事实:对于消费者和企业用户来说,移动计算都正在由前期使用阶段转向大众市场阶段。但 Java ME 开发者仍然面临许多服务器端或者桌面 Java 开发者从来无须直面的障碍。这些问题包括:

  • Java ME 平台的分裂
  • 缺少足以支持高级“智能手机”设备能力的移动运行时环境
  • 一旦设备出厂,将面临管理移动应用程序和配置的困难
  • 常见 Java Web 开发技巧及 API 与为移动设备开发所专用的富客户端实践的架构性隔阂

 Nokia,Sprint 和 IBM 在 JavaOne 联合做了一个报告,描述了一种解决这些问题的方案,它通过一个建立于 OSGi 之上、面向服务的架 构来实现。OSGi 最初是用于远程信息处理应用,这些应用需要进行远程管理,具有良好的可插拔性,以及无需重启即可完成软硬件的更新。因为手持移动电话正 越来越多地被当作全天候运行的应用平台所使用,特别是电信公司和开发者开始致力于如何给当前静态移动 Java 环境带来某种松耦合组件架构,所以手持电话即 将成为 OSGi 一个非常广阔的应用场景。

JSR 232:Mobile Operational Management正 在为这个标准制定规范。Nokia 移动软件首席 Java 架构师 Jon Bostrom 介绍说,此 JSR 是基于 Web2.0 的“聚集中创新”原则:引入一种开放的组件模型,在此模型中,内建于平台中的服务可以以一种灵活但是高 度可管理的方式,与其他开发者提供的服务相插接。OSGi 把你口袋中的设备变成一个与操作系统无关的应 用服务器。它能够在运行中交付新组件,管理它们的生命周期和权限,并提供一个共享的事件总线,以及像监控和日志这样的服务。事实上,因为 OSGi 包含了一 个 servlet 容器,OSGi bundles(可拔插的组件)并不必须写成 Java ME 应用程序——它们可以是存活于网络边缘的标准 servlet。

种种公开迹象表明,JSR232 制定组的不同参与者的努力方向似乎也有点不同。对于 Nokia,其想法是创建一种“移动创新引擎”来促进移动设备的 融合。这不仅仅是我们今天熟悉的 web 服务的融合。比如说,它们可能还包含像 GUI 渲染引擎这样的组件,使得它们可以方便地从其他平台进行迁移。例如,移 动 Java 开发者长期以来一直遭到 CLDC/MIDP 提供的功能有限的 UI 工具包的限制。但是在一个支持 JSR232 的设备上,他们就会拥有一个强大得多 的 CDC/FP 运行时以及类库可以使用,使得使用 AGUI,Swing GUI 以及SWT 的嵌入版本和 Eclipse RCP(eRCP)成为可能。Bostrom 说,没有理由不让像 ActionScript/Flash,OpenLaszlo 或者 Flex/Apollo 这样的引擎也插入进来。更加重要的是,开发者 不再需要等待 JCP 或者设备制造商给手持电话带来这些组件:一旦封装成 OSGi 的 bundle,它们就能通过无线网络安装到设备并注册为一个服务,这很象 通过 Update Manager 安装一个 Eclipse 插件。实际上,OSGi 就是使得 Eclipse 中安装完成无需重启工作台的技术。这对于移动开发者应该是一个非常激 动人心的前景。

而对于 IBM,在你的口袋中有个服务器意味着更加广阔的前景:IBM 杰出工程师 Jim Colson 称之为“对称门户模型”。这样 OSGi 可以形成服务层,在某种意义上将一切从传感器扩展到智能手机、笔记本电脑和台式机,而且在各种情况下, 这些服务都可以通过像 JMS 和 servlet 这样熟悉的技术来访问。这种统一的架构的好处很多,其中很明显的是,它对众多具备企业 IT 部门通用技术的开发 者开放了移动设备。它还解决了阻碍标准 web 技术在设备上的使用问题:无线网络的有限覆盖和较长的反应时间。在 IBM 基于 OSGi 的Lotus Expeditor 管理客户端软件中,一个应用程序甚至可以在客户端服务器断开连接的模式下运行。IBM 把 Lotus Expeditor 看做成是一个“.NET 的开放替代品”,可以跨越 Windows,Windows Mobile,Nokia S60 以及 Mac OS。就像 Nokia 的移动 OSGi 实现,IBM 的实现使富客户端应用可以使用可插拔的 GUI 库,并提倡合成开发。但商业目的正在使既有的 SOA 技术“远 离人,地点和事情的数据中心”。

 

OSGi 为一个更加动态的移动 Java 环境敞开了大门,Nokia 的 Asko Komsi 表示这和 OSGI 服务,比如配置、监控和条件优先级一起,“提供了许多我认为我们有必要使用 CDC 的特性”。但这同样也带来了需要 JCP 在规范中解决的问题,比如 JSR249,高级移动服务架构师 Komsi 解释说:

 从宏观来看,JSR249 必须为一些关键特性找到解决方案,比如主要安装机制,应用程序模型,以及打包模型——如何打包这些应用程序和中间件组 件,以便你能将它们发送至手持电话。另外,JSR 还需要找到一种解决方案,用来管理应用程序和服务运行其中的环境。在将来,你也将会拥有强大的客户端环 境,从而允许你运行多个应用程序。因此我们也需要定义一种应用程序协作机制。这些就是我们必须在 JSR249 中找到解决方案的特性。如果没有,那我们只是 完成了一半而已,而且将不得不再次面对分裂。

 但是 Nokia 并没有等着让 OSGi 进入你的移动设备。他们已经和 Sprint 组成团队来开发 JSR232 实现,这款产品被称为 Titan 平台,将会很快发布。Sprint 的 3G 客户设备集团软件平台经理 Brandon Annan 预言说,随着三或四台带有 Titan 功能的“PDAs”(预计会带有 EVDO 无线装置) 的启动,“移动 Java 技术的黄金时代”将在今年的第四季度开始。符合 JSR232 规范的手持电话会在 2008 年的夏末秋初面世。Sprint 4G 产品的产品线同样是基于对 WiMax 设备符合 JSR232 规范的“认真考虑”,这些设备将会在人们的殷切期盼中迎来它们的首次发布。除了 Sprint,即将到来的 Nokia E90 手持电话也会针对欧洲市场配备 OSGi,而面对海外市场配备 eRCP。而高价的智能手机会否推向北美市场尚未得知。

 不愿意等到今年年底的移动 Java 开发者现在就可以开始在 CDC 和 OSGi 上部署应用程序,但他们需要选择带有操作系统的设备,比如 Windows Mobile 和 Linux。比如 Sprint 的 4G 集团高级技术战略家 Brian Coughlin 就把一个将 OSGi 与移动设备融合的 demo 放到了 Nokia N800 Internet Tablet 上,这是一个 Linux 设备,而且 Nokia 声称它将会有一个 WiMax 版本 。开发者从这里可以获得一个针对 N800 和其他组件的 CDC Java 运行时,这其中包括了一个 Equinox OSGi 实现,还有混合的 servlet bundle。

查看英文原文Is OSGi the Solution for Mobile Java?
Java移动语言 & 开发架构