您的位置:寻梦网首页编程乐园XML 编程>>XML 和 Java:一个强大的组合
XML 编程

XML 和 Java:一个强大的组合
作者:Mariva H. Aviram 阿霏 译    

XML当它在1996年11月首次由WWW小组( W3C)提出时就是一个能够被很好接受的规范。现在,它与Java从本质上的结合--即把Java程序中的与XML相关的代码部分和对Java语义(动作)编码的部分转换成XML的标记,承诺能够向企业或更高层提供更简单和更具创造力的应用计算。Larry Cable 和 Mark Reinhold 是Sun公司的两名老资格的工程师,他们在最近召开的JavaOne开发者大会的"Java平台上的XML"技术会议部分发言,根据他们的发言,关注这种技术联姻的主要原因是基于XML的语法提供了一种灵活的、标准的、健壮的Java编程方案,同时,Java也将一种普遍的语义集合应用于XML数据。


为什么用XML?

很多在电子世界里可用的信息都没有被存储成和表述成图象、三维图形、电影、声音或其它易于接收的多媒体格式,相反,它以基于字符文本的形式存在于Web、数据库和其它文本很可能存在的地方。XML允许开发者在一个标准的结构中以上下文来考虑并且解释他们的数据,以便于每一次添加和更新的时候,一个XML框架下的数据集可以与另一个XML框架下的数据集相结合而不用重建整个结构。


Java是如何适用于这个蓝图的?

XML为Java的语义(行为)提供了一种普遍的语法,简单的说就是,这意味着一个开发者可以为不同的数据类型创建描述,使得这些数据在Java的程序代码中表现出不同的行为,并且以后可以重复使用和修改这些描述。既然Java和XML都是可移植的标准,这两种技术结合的结果也是可移植的,可以重用数据和移植行为。单独使用XML或Java所能获得的所有的潜力还没有被完全掌握,将它们结合就走进了一个巨大的新的国度。现在,将XML应用于Java的两个主要的应用是面向表示的出版业和企业中面向消息的中间件技术。特别是,XML可以和Java结合产生诸如复杂的Web文档、动态出版、电子商务、企业应用集成和结构信息管理与检索等应用。


XML标准扩展

XML标准扩展是一种基础性的探索,用它来将XML语法翻译成Java。这种探索的技术和结构细节还在剖制之中,1999年底Java开发者就可以使用这个标准扩展来建造基于XML的应用了。这个标准扩展包括一些组件:一个解析器,解析器中的名字空间支持,XML的简单API(SAX)和文档对象模型(DOM)。

解析器就是一个软件模块用来解析或者是读入一个XML文档的数据并且检查其合法性。名字空间,W3C的XML规范的一部分,指在一个文档类型定义(DTD)中定义了一组与其它不同的XML标记元素集。名字空间的主要益处是它允许多个变量(在不同的标记集合中并且行为也不一样)能够在一个单独的文档实例中混合。很显然,为了获得这种益处,解析器必须支持名字空间,Sun Microsystems还在为这种支持而作工作。
  SAX,一个为基于事件XML解析器定义的可以免费获得的,平台、语言无关的API,允许程序和脚本动态的访问和更新内容、结构和文档风格。所以,它作为一个中间件层用来把XML文档中的数据解释成相应的Java事件。
  DOM为解析器提供一个基于树型的数据结构接口,将XML数据构建成对象并且允许对象间相互结合、访问、操纵,例如通过Java程序。
  XML标准扩展规范的公共草稿和alpha发行版将在今年(1999)第三季度问世,Sun打算在第四季度发行最终版。 当所有这些问题被消除之后,Sun计划考虑支持转变语言(transformation language)和样式页(XSL)以及XML查询语言,这个语言允许查询XML文档。


XML数据绑定标准扩展

  Sun和其它XML-Java倡导者都认为XML标准扩展对于高效地使用XML和Java是不够的,为什么呢?尽管XML可以提供Java所使用的数据的语法并且按照这个语法行事,但是据说XML消息的语法在本质上是没有意义的,而且它缺乏对某一块数据是什么和如何使得这块知识适合整个信息系统这样的特定的知识。数据绑定标准扩展使用了模式(schemas),是XML的子规范,它描述了XML文档所使用的特定的机构和数据类型。Java程序员可以联系这种相似之处:一个XML消息继承于一个XML模式,跟Java对象是一个Java类的实例是同样的。模式通过约束XML文档和数据的结构与内容来给它们添加含义,并且通过描述概念上的意思使得一个人而不仅仅是机器只要简单的浏览一下其结构就知道它是做什么的。理解模式只是数据绑定的一个开端,据Cable和Reinhold说,为了从XML-java结构和编程混合体获得更多,从对象映射到XML消息组件(unmarshaling)和映射回对象(marshaling)是一样重要的。对于映射和反映射Java代码的XML消息组件来说,对它们有用的是一些类,Cable和Reinhold感觉到SAX和DOM都不能解决这个问题。
  但是绑定可以解决这个问题,至少在理论上是这样的。使用绑定将XML模式编译成Java的类,允许对象能和XML消息任意地相互进行映射。绑定产生了类,这些类包涵了映射和反映射的代码(允许完善的错误和合法性检查)和访问组件的方法(get和set),使得数据元素自动的和模式保持一致性。绑定XML到Java程序也消除了书写反映射(unmarshal)的必要,减少了输入错误数据的可能性。Sun公司的工程师们打算在Java平台上增加一个这样的绑定工具,尽管他们还没有公布具体日期。


现在就尝试使用它

你现在就可以下载Java Project X Technology第二发行版的二进制代码或源代码,Java Project X Technology是一个基于Java-XML技术服务包的名字。这个服务包包括一个快速的XML解析器,这个解析器带有可选的认证和一个支持W3C DOM Level 1 建议的内存内的对象模型树。根据Sun的Java Project X FAQ,Project X 是一个"开发面向XML的应用与服务的高性能、模块化、可扩展的Java API",试用一下证明这是真的。
  Sun和其它看好XML的行业 不仅仅是Sun公司,一些技术开发者也正在为他们的合作伙伴和顾客架起XML和Java的桥梁。例如,Bluestone软件公司,他们专注于企业的交互管理,在他们的Bluestone XML工具集中就支持XML的Java标准扩展。NetPost是一家使用Java组件模型来开发、提供跨媒体出版解决方案的公司,他们为所有在他们信息系统中的数据使用XML,作为一个"综合的标准数据表示"。Oracle也在这个领域开发了一些产品,包括Java的XML解析器,XML类产生器,和Java的XSL处理器。
  对于一个Java开发者学习XML或至少探索一下它的可能性还是很有益处的。Sun的工程师们已经在Java2平台中使用XML了。例如,XML已在JavaHelp API中使用,用来描述元信息;它也被用来描述EJB1.1中的部署描述符;它通过解释EJB到JSP(或相反)提供J2EE编程模型的语法基础。Sun也积极地参与W3C和其它开放XML组织,诸如XML.org 和OASIS(the Organization forthe Advancement of Structured Information Standards)。