在 Java 应用程序中使用 Java 字典和辞典 API
级别: 中级
Rakesh Midha (mrakesh@in.ibm.com)
软件工程师, IBM 软件试验室,Bangalore
2004 年 10 月
Java 字典和辞典 API(Dictionary and Thesaurus API for Java,JADT)是 Java 应用程序中访问语言特性的一个类库。本文是由两部分组成的系列文章的第 1 部分,在本文中,JADT 开发人员 Rakesh Midha 从用户的角度讨论了 JADT,并展示了如何在 Java 应用程序里使用 JADT。他讨论了 JADT 中涉及的各种不同的类和设计,以及 JADT 中可以使用的一些特性。第 2 部分则深入讨论体系结构和 API 的细节,为那些希望实现 JADT 驱动程序的用户提供指导。
Java 字典和辞典 API(JADT)是 alphaWorks 上发布的辞典特性的 API,是一个基于标准的类库,用于在 Java 应用程序里访问语言特性。它为 Java 程序员提供了透明的以 Java 为中心的方法,用以访问字典和非结构化单词,以及有关它们的信息。本文是由两部分组成的系列文章的第 1 部分,涉及的内容是用 JADT 开发增强字典和辞典的 Java 应用程序。第 2 部分提供了对体系结构和 API 的具体考察。
JADT 概述
JADT 是用于从 Java 编程语言中访问辞典数据的 API。它提供了可以在 Java 应用程序中使用的通用接口,独立于字典/数据提供者的实现。使用 JADT,用 Java 语言编写的应用程序就可以访问某个具体单词的定义、发音、同义词、反义词等信息。
JADT 的特性包括:
访问字典、辞典和其他服务的接口
多语言转换接口
基于驱动程序的访问协议
用于字典提供者和驱动程序开发人员的 API
访问后端字典或辞典,比如数据库、文件系统或基于 XML 的文件(只要实现了它们的驱动程序)
JADT 对于辞典数据访问应用程序来说是一个非常有用的 API,因为它为执行这类任务提供了简单的、标准的技术。它把应用程序开发人员 从维护数据和数据访问点的痛苦中解救出来。
对于很多使用多语言特性、本地化和类似特性的应用程序来说,这个 API 的实现会非常有用。例如,在编辑的时候,编辑可以用这个技术进行拼写检查,或者得到更多合适单词的建议。另一个示例应用可能是,让需要翻译的应用程序可以使用多语言字典和辞典。
除此之外,JADT 还提供了语言中立的接口,这让它可以用于各种语言和方言。而且,由于 ADT 是用 Java 语言编写的,它的示例驱动程序也是用 Java 语言实现的,所以它是平台无关的。
JADT 数据结构
JADT 包括各种不同的组件和服务,取决于所使用的 JADT 的特性或具体的子集。您的 JADT 旅程的第一站,是一组提供数据组织的一般方法的类和接口。 因为所有服务都使用这些数据结构,所以 JADT 用户对它们的了解,是非常重要的。
单词列表
WordList 类就是一个单词的容器。它不从后端资源取数据。WordList 一般用于传递、取得或包含成组的单词。除此之外,还有一个选项,用于查找符合特定规则的所有单词。例如,它目前支持查找带有相似前缀或后缀的单词,支持共享某些子串的单词查找。它与 WordLister 服务不同,因为它不从后台资源取词,所以它仅仅是一个包装类。它还可以用于单词集合,如清单 1 所示:
清单 1. Wordlist 作为集合的用法
WordList wordlist= wordlister.findWithPrefix("un");
//Getting collection of words one by one
wordlist.start();
while(wordlist.hasMoreWords())
{
Word word=wordlist.getNext();
}
// Using WordList further to narrow down the search
WordList wordlist2= wordlist.findWithSuffix("ing");
单词
Word 接口代表语言单元或者母语使用者能够识别的字符构成。 Word 把单词的信息包装起来。保存在 Word 里的信息包括单词拼写、类型、来源、发音和记录。一旦从某项服务得到了 word 对象,就可以方便地用它的方法来提取信息,如清单 2 所示:
清单 2. 用 word 提取数据