使用 XML、XPath 和 XML Schema 的一流支持扩展 Java™ 技术,从而使 XML 处理应用程序更容易编写、更健壮和更高效。本文全面介绍 XML Enhancements for Java™ (XJ),这是一组在 Java 编程语言中对 XML 添加直接支持的语言扩展。本文的作者们就是开发 XJ 的小组成员。
何为 XJ?
许多现有机制可以在 Java 代码中处理 XML,包括诸如 DOM 和 SAX 之类的运行时 API,以及诸如 JAXB 之类的数据绑定方法。在所有这些方法中,XML 支持被嫁接到 Java 编程语言中 —— 编绎器无法知道程序的哪一部分处理 XML 数据。其结果是,XML 处理应用程序的健壮性和效率均不如人意。
在 XML Enhancements for Java (XJ) 项目中(初始发行版可在 IBM alphaWorks 中获得),我们采用了另一种方法。XJ 将 XML 作为一流的构造集成到 Java 技术中。程序员可以导入 W3C XML Schema 中的声明,仿佛它们就是一些 Java 类。他们能够编写内联 XPath 表达式以导航 XML 数据,而且能够通过编写内联 XML 来构造 XML 数据(如果您熟悉 ECMAScript for XML,XJ 的构造情况与此技术相似)。由于 XML 的有关知识已嵌入 Java 语言,所以编绎器能够检验 XML 处理应用程序关于 XML Schema 声明部分是否正确,并执行优化以使应用程序运行效率更高。与诸如 XSLT 之类的基于 XML 的语言相比,XJ 的优势在于其中的 XML 处理应用程序将全部的 Java 技术,包括现有的全部库,都纳入它们的掌握之中。许多转换用 XJ 编写比用 XSLT 编写更加容易。
XJ 是 Java 1.4 的严格扩展。任何有效的 Java 1.4 程序都是有效的 XJ 程序。该发行版包括两个可执行文件:一个从 XJ 源代码生成类文件的 xjc 编绎器和一个用于运行 XJ 程序的 xj 运行时环境。xjc 是一个扩展的 javac 编绎器,它理解 XML Schema、XPath 表达式和 XML。由 xjc 产生的类文件是标准 Java 类文件,可以在任何 Java 虚拟机上运行。xj 运行时环境是一个围绕 java 的瘦包装器,它在调用 java 之前将 XJ 运行库添加到类路径下。
在本文中,我们将通过一个例子来了解将 XML 支持集成到 Java 语言是如何简化 XML 开发人员的工作的。 XJ 的优势可以概括为:
熟悉(对于 XML 程序员): XJ 中的 XML 处理与开放式 XML 标准相一致。
健壮性: XJ 程序与 XML Schemas 是强类型匹配的。XJ 编绎器能够检测使用 XPath 表达式和构造 XML 数据中的错误。
易维护性: 由于 XJ 程序是按照 XML 编写的,它不是诸如 DOM 或 SAX 之类的低级 API,如果 XML Schemas 发生改变,它们很容易维护和修改。
性能: 由于编绎器能够觉察在程序中使用了 XML,所以它能够优化 XML 的运行时表示、解析和 Path 计算。
