Java News from Monday, August 16, 2004

I'm very pleased to announce the first beta of XOM 1.0, my tree-based API for processing XML with Java. XOM emphasizes correctness, ease-of-use, and performance, in that order. It can also process documents in a streaming mode that handles documents larger than available memory. Features include XML canonicalization, XInclude resolution, and XSL transformation. XPath queries are sadly lacking. :-(

You should note that my criteria for entering beta is much stricter than most. In particular unlike some companies who shall remain nameless but who release major operating systems with thousands of known bugs, XOM Beta 1 has exactly zero known bugs. It is feature complete.

XOM has been tested in both client and server-side environments. It has been tested with a number of parsers including those bundled with Java 1.4 and 1.5. The internals of XOM have some pretty nasty hacks to work around various bugs in third party libraries it depends on, sometimes including the JDK itself. I'm fairly confident works as expected when bundled with the latest versions of Xerces and Xalan; and, aside from a few corner cases, works pretty damn well with earlier versions of these products and with other parsers and transformation engines too. (The XOM unit tests are very tough. They have exposed numerous bugs in underlying libraries over the years. I picked Xerces and Xalan because the Apache Foundation has fixed the bugs I found while working on XOM. All other parsers and transformation engines I've tested still have open bugs. Where possible, I've included code in XOM to work around known bugs, especially for processors bundled with JDKs, but it's not always been possible to do so.)

I now believe XOM to be ready for production use. Of course, I could be wrong about that, which is why there's a beta cycle. I encourage you to try out this library, and let me know of any issues that arise, be they bugs, missing documentation, or weak performance. However, omitted functionality will probably have to wait for 1.1 to be filled in. Unless new bugs are uncovered, this may be the one and only beta release. All that's left on my TODO list before final release is finishing the documentation and doing some minor code clean-ups. These include such housekeeping tasks as splitting long lines, spell checking the comments, and making sure the Javadoc is all valid XHTML. It may take a few months before I get all of this done, but none of it should have any affect on client code.

Beta 1 makes no backwards incompatible changes to the published API. Bug fixes since the final alpha include:

XOM is published under the LGPL. Java 1.2 or later is required.