ObjectBox is a free, opensource o:XML compiler and interpreter written in pure Java. It implements The o:XML Programming Language specification, and provides a complete compile and runtime environment.


  • Java extensions - o:XML procedure that converts any Java class/object to an o:XML type for seamless language integration, making existing Java classes instantly available for instantiation and subtyping as any other o:XML type.
  • Java Servlet support for deployment in J2EE environments.
  • Caching of compiled programs allowing threadsafe concurrent execution.
  • Commandline executable that passes arguments to o:XML program.
  • Java Ant task for content generation and integration in XML publishing systems.


A choice of packages are available on the download page.

Read the Usage Instructions.

Find out more about the Java Language Extensions.

ObjectBox also comes with some pretty sweet Database Extensions.

Browse the Java API Documentation.

Browse the CVS repository online.

An o:XML programmers guide is available in html and pdf formats.


ObjectBox is an opensource (free) software project published under the GNU General Public Licence. You can browse the source code in the CVS tree or download the latest release version of the source as a zip archive.

If you would like to participate or simply learn more, please join the mailing list.

Program Execution

Before compilation the program file is parsed and validated for well-formedness. The result of compiling a program is an object hierarchy of 'actions', that will produce the program result as a sequential output to either a DOM tree, output stream or a SAX content handler.

In order to obtain a complete and fully valid XML document, the program must terminate successfully. However all o:XML programs don't necessarily terminate - see the Fibonacci Series for an example of a program that generates an infinite, unbroken XML stream.

A compiled o:XML program contains all parsed o:Path expressions and XML-generating objects. It is thread-safe and can execute concurrently in different runtime environments, producing output to different result handlers. The program in its compiled form is independent of the XML file it was generated from as well as the physical form of its output.

Future versions

  • Compilation of programs to persistent executable form
  • Program repositories with preprocessing options
  • Improved contextual error messages
  • XML Schema program validation
  • API for Java Language Bindings

Known Bugs and Problems

  • Access Specifiers (public/private/protected) not fully implemented
  • Context Node probably not always correct