ecologylab.xml

A Concise XML Binding Framework Facilitates Practical Object-Oriented Document Engineering

Semantic web researchers tend to assume that XML Schema and OWL-S are the correct means for representing the types, structure, and semantics of XML data used for documents and interchange between programs and services. These technologies separate information representation from implementation. The separation may seem like a benefit, because it is platform-agnostic.

The problem is that separating data from code interferes with writing correct programs for practical document engineering, because it violates a primary principle of object-oriented programming: integration of data structures and algorithms. We develop an Object-Oriented XML Binding Framework (OOXBF) that connects Java object declarations with serialized XML representation. A basis of the framework is a metalanguage, embedded in Java object and field declarations, designed to be particularly concise, to facilitate the authoring and maintenance of programs that generate and manipulate XML documents. The framework serves as the foundation for a layered software architecture that includes meta-metadata descriptions for multimedia information extraction, modeling, and visualization; Object-Oriented Distributed Semantic Services; interaction logging services; and a user studies framework.

ecologylab.xml is part of the Interface Ecologylab Fundamental API, which is being released as open source. In addition to the OOXBF and Object-Oriented Distributed Semantic Services (OODSS), this API includes other component bundles for building applications, storing and editing preferences, and working with HTTP.

performance

Performance measures were computed using the bindmark XML binding benchmarks.

framework / marshalling time (nanoseconds) unmarshalling time (nanoseconds) runtime
(# runs) small (1000 runs) medium (100) large (10) small (1000) medium (100) large (10) size (KB)
ecologylab.xml 39,004 1,528,674 7,151,383 289,966 5,815,660 35,446,572 176
JiBX* 35,943 1,719,212 15,627,181 70,420 5,683,769 39,249,876 141
JAXB 2.0 65,749 2,223,438 10,567,599 362,868 14,889,646 87,146,075 3,800
XStream 413,465 18,373,301 173,198,604 719,290 28,818,238 211,358,650 368
Castor 1,183,407 11,831,280 55,922,610 1,813,563 22,926,830 162,330,464 3,000
XML file size (KB)       1.42 123 1,003  
XML file lines       55 1,817 8,567  
XML file depth       2 20 45  

*JiBX uses a binding compile step to optimize Java byte code for performance; this step is excluded from the benchmark.

community

Community support is supplied through the ecologylab api developers group. You may subscribe and contribute here:

JavaDocs for the Fundamental API are available here.

Access to the entire ecologylab fundamental project source is available through anonymous SVN access (username: anonymous, no password).

The binaries for Release 3.2 of ecologylab.xml (only) are available here (176K). The binaries for all of the ecologylab fundamentals are available here.

publications

Kerne, A., Toups, Z.O., Dworaczyk, B., and Khandelwal, M. A Concise XML Binding Framework Facilitates Practical Object-Oriented Document Engineering , Proceedings of ACM Symposium on Document Engineering, Sao Paulo, Brazil, 16-19 September 2008.