WEB开发网
开发学院软件开发Java Java 中的 XML: 数据绑定,第 2 部分:性能 阅读

Java 中的 XML: 数据绑定,第 2 部分:性能

 2010-04-01 00:00:00 来源:WEB开发网   
核心提示: 在研究现有数据绑定框架是如何操作的过程中,我发现从性能角度来说有两个方面看上去不是很好,Java 中的 XML: 数据绑定,第 2 部分:性能(10),第一个方面就是许多框架中广泛使用了反射,反射是在运行时访问有关 Java 语言类的信息的一种方法,Castor 和 Quick 都支持数据绑定的

在研究现有数据绑定框架是如何操作的过程中,我发现从性能角度来说有两个方面看上去不是很好。第一个方面就是许多框架中广泛使用了反射。反射是在运行时访问有关 Java 语言类的信息的一种方法。可用它来访问类实例中的字段和方法,从而提供了一种在运行时将类动态地挂钩在一起,却无需类之间有任何源代码链接的方法。反射是一种功能非常强大的 Java 技术特性,但是将其与调用方法或直接访问已编译代码中的字段相比,它在性能上有些欠缺。

我质疑的第二个方面是使用 SAX2 解析器对文档进行数据分解。SAX2 是一种非常有用的解析 XML 的标准,但是其事件驱动方法并不非常适合数据绑定和类似的应用程序。这里的问题在于,处理 SAX2 事件的代码需要维护其处理的所有事情的状态信息,这既增加了复杂性又增加了开销。

我创建了形成 JiBX 的代码,以对一些方法(解决其它数据绑定框架中所存在的这些问题)进行测试,并实验扩展超出 Castor 支持范围的映射绑定方法。JiBX 使用字节代码增强而不是反射来在项目构建时将挂钩添加进应用程序代码。JiBX 基于拉(pull)解析器体系结构(当前是 XMLPull),而不是 SAX2。JiBX 不是根据 DTD 或 Schema 生成代码,而是使用绑定定义,该定义将用户提供的类与 XML 结构相关联。

这些技术并不是 JiBX 所特有的。许多 Java 数据对象(Java Data Object,JDO)实现都使用字节代码增强,基本上都是为了达到与 JiBX 相同的目的(将访问挂钩添加到现有的已编译代码中)。原始的 JAXB 代码(已被丢弃)基于类似 XMLPull 的拉解析器体系结构。Castor 和 Quick 都支持数据绑定的映射方法(尽管有一些限制)。即使个别技术不是很新,但是它们的组合仍然可以形成其它数据绑定框架非常有趣的备用方案。

上一页  5 6 7 8 9 10 

Tags:Java XML 数据

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接