使用JSR-238更快地全球化您的应用程序

文章作者 100test 发表时间 2007:03:26 18:02:02
来源 100Test.Com百考试题网


国际化不仅仅是一个趋势 —— 它已经成为应用程序开发的必要需求。JSR-238 的目的是帮助 Java™. Platform,Micro Edition(Java ME)开发人员利用 Mobile Information Device Profile(MIDP)/Connected Limited Device Configuration(CLDC)将其国际化工作减至最少。通过这篇文章发现一种国际化 MIDlet 的更便捷方法。

简介

您是否曾尝试过国际化 MIDlet,却以失败告终?使用 MIDP/CLDC 本地化 MIDlet 需要完成大量的工作,Java Platform,Standard Edition(Java SE)以成熟的 API 简化国际化工作。CDC Foundation 提供了大量 API 来完成国际化和本地化工作。而如果使用 MIDP/CLDC 来完成这些工作,将是一次非常痛苦的经历;甚至没有一个可用的 ResourceBundle 类。还好有另外一个选择 —— JSR-238 提供了可直接用于资源本地化和数据格式化的类。

作为开始,看一下 Java SE 和 Java ME 对全球化支持的对比,如 图 1 所示。(本图是从 “Considerations of Globalization Solutions in J2ME” 文中转载的。参见 参考资料 中的链接。)



图 1. Java SE 和 Java ME 全球化支持的对比
Java SE 和 Java ME 全球化支持的对比

图 1 显示出,编写一个支持全球化的 Java SE 应用程序是十分简单的;Java SE 提供了开发全球化应用程序所需的几乎所有东西。CDC Foundation 提供了一些用来编写全球化应用程序的 API ,但不是全部。然而建立在 MIDP/CLDC 基础上的应用程序仅提供有限的日历和时区的相关类,您需要亲自编写几乎所有的全球化类。

全球化应用程序的历史

要本地化 MIDlet,通常需要使用 MIDP 核心类编写 ResourceBundle 和 Locale。有很多关于如何完成这一任务的文章,包括 “Globalize Your Embedded Apps”(参见 参考资料)。

为了实现国际化功能,就是说根据不同的地区显示其当地语言,您需要编写自己的 ResourceBundle 类,这对检索本地化字符串是很必要的,例如面向不同地区的 “Hello” 和 “Bonjour”。对于数据格式化,例如 Currency、Numbers 和 DateTime,您也需要实现这些程序。这将耗费大量的精力,因为您不得不收集大量的地区数据信息,还必须熟知具体的文化差异。

JSR-238 Mobile Internationalization API 简介

国际化 MIDlet 是接触更广阔市场的一个关键条件。新的 JSR-238 Mobile Internationalization API 提供了一种标准方法帮助您更快、更轻松地实现 MIDlet 国际化,还提供了用 MIDP/CLDC 实现 MIDlet 国际化的基础 API。

请注意:JSR-238 API 是一个可选的软件包。开始向其部署 JSR-238 MIDlet 之前,必须确保您的设备支持它。

JSR-238 目标声明

此声明引自 JSR-238 规范:

“Mobile Internationalization API 的目标是为运行在 CLDC 上 MIDP 中的 Java MIDlet 提供国际化服务。Java 2 Standard Edition 提供对国际化的广泛支持,JAVA 2,Micro Eition 更具局限性的设置和配置文件并不包括这种支持。”

这种 API 被设计为以简洁通用的形式提供服务。在国际化方面,它使 MIDP 应用程序达到一个与桌面应用程序类似的级别,从而扩充了 MIDP 应用程序平台。

JSR-238 包,javax.microedition.global 提供的一些重要类如下:

  • ResourceManager 类:管理应用程序资源
  • Formatter 类:创建数据项特定于地区的翻译
  • StringComparator 类:使用特定于地区的规则比较两个字符串

我将具体讨论这些类,但在此之前您必须了解,您将需要使用 Sun Java Wireless Toolkit 2.5 for CLDC Beta、Nokia JSR-238 RI 或 Eclipse 来配合 JSR-238 开发 MIDlet。本例将使用 Eclipse。

首先,您需要获得 JSR-238 库,它是随 Sun WTK 2.5 Beta、Nokia 的 JSR-238 RI 一起提供的。IBM®. 在 WebSphere®. Everyplace Micro Environment 移植包中提供了 JSR-238,IBM 业务合作伙伴都可以使用。

如果您现在使用的是 WTK 的老版本,其中不包括 JSR-238 库,您需要自己添加 JSR-238。您依然可以在 Eclipse 编写和编译,但由于类加载器的限制,Eclipse 是无法启动的。要配置 Java ME 项目以包含 JSR-238 支持:

  1. 启动 Eclipse。
  2. 创建一个新的 Java ME 项目,如 图 2 所示。在这个例子中,我把它命名为 “Simple Globalization Midlets”,单击 Finish。

    图 2. 创建一个新的 Java ME 项目
    创建一个新的 Java ME 项目
  3. 在 Package Explorer 视图中展开 “Simple Globalization Midlet” 项目(如 图 3 所示),请注意 JSR-238 库不在这里。

    图 3. 项目树
    项目树
  4. 选中 Java ME 库节点,右击并选择 Build Path > Configure Build Path...
  5. 单击 Add External Jars...,选择已下载的 JSR-238 jar 文件,然后单击 OK。

    图 4. 将 JSR-238 jar 添加到构建路径中
    将 JSR-238 jar 添加到构建路径中

就是这样!您已经将 JSR-238 库添加到开发环境中可,现在就可以开始编写 MIDlet 国际化程序了。

使用 ResourceManager

现在我将演示如何使用 ResourceManager 来管理不同地区的资源文件。

要用不同的语言来显示本地字符串,就需要准备不同地区的资源文件。资源文件包括要本地化的字符串,如果有图片的话,也要将其包含在资源文件里面。资源文件就像 Java SE 的属性文件,但是是二进制格式。它有以下优点:

  • 部署到设备时占用较少的存储空间。
  • 装载时需要较少内存。
  • 它可以包含嵌入的新行。

对于条件有限的设备来说,这些优点是十分重要和有效的。

现在让我们编写一个简单的 MIDlet,根据地区显示字符串和图片。图 5 显示了资源文件结构。在以下步骤中,我将使用 WebSphere Everyplace Micro Environment 6.1 和 IBM WebSphere Everyplace Micro Environment 移植包的 JSR-238 库。

编写 MIDlet 程序之前需要知道的标准。
  • 地区标识符 地区标识符必须符合 MIDP 2.0 规范定义的格式,使用短横线而不是下划线(例如,“en-US”)。
  • 基本名称 使用基本名称将相关资源分组(例如,“labels” 和 “messages”)。
  • 资源文件结构 必须将不同地区的资源文件放到 /global/{地区标识符}目录下。


图 5. 资源文件结构
资源文件结构

步骤 1:准备资源文件

二进制的资源文件必须遵守严格的格式。(参考 JSR-238 规范)。可以使用任何一种二进制文件编辑器或者 Nokia JSR-238 RI 创建资源文件。

为演示起见,我使用 Nokia JSR-238 RI 来创建二进制资源文件,如 图 6 所示。我想为 zh-TW,de-DE 和 es-ES 这几个地区显示 “Welcome” 字符串和一幅图片。可以阅读 Nokia 238 RI 的自述文件了解相关步骤,但基本上,您需要为字符串和图片编写一个 xml 资源文件,运行 ResourceMaker 工具获得二进制文件。


相关文章


KVM的执行引擎--栈和帧、指令集
在索尼爱立信JP7平台上自动启动MIDlet
使用JSR-238更快地全球化您的应用程序
(JAX-WS)inJavaEE5快速上手
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛