JSBML

JSBML (Java Systems Biology Markup Language) is an open-source Java (API) for the SBML (Systems Biology Markup Language   ) format. Its API strives to attain a strong similarity to the Java binding of the corresponding library libSBML, but is entirely implemented in Java and therefore platform independent. JSBML provides an elaborated abstract type hierarchy, whose data types implement or extend many interfaces and abstract classes from the standard Java library. In this way, JSBML integrates smoothly into existing Java projects, and provides methods to read, write, evaluate, and manipulate the content of SBML documents.

Development
In May 2009 the SBML team conducted a community survey for requests of potential further software development. It turned out that, even though the library libSBML provides a generated binding for the programming language Java, its internal C code makes it difficult to implement platform independent or Web Start applications.

Around that time, several groups from multiple institutes had already implemented small Java versions of libSBML, each being a customized library covering the needs of the particular research project. In order to avoid unnecessary duplications of work and to unify existing development, the international community project JSBML was launched in September 2009, mainly by groups from EBI, Caltech, and a team of students at the University of Tübingen led by Andreas Dräger.

Since JSBML has been implemented considerably later than the first version of libSBML, it could therefore benefit from the existence of the specifications of SBML in the Levels 1–3. Hence, JSBML has not just been developed by porting existing C code from the libSBML project into a new Java. Instead, the developers used this as a chance to completely redesign the class and API structure. This is why JSBML provides a much richer abstract type hierarchy compared to libSBML. Furthermore, the development of JSBML enabled making design decisions that are not possible in libSBML because no backward compatibility had to be considered at this time.

The first stable release version 0.8 of JSBML was made publicly available for download in February 2011. Since then, support for multiple SBML extension packages is being implemented and will be included with the release of JSBML 1.0.

Aims
The development of JSBML is driven by three aims:
 * 1) Provide a pure Java API without any native dependency.
 * 2) Achieve the highest possible compatibility to libSBML but at the same time make the library behave like other native Java libraries, i.e., as expected by experienced Java developers.
 * 3) Support for all level/version combinations and extension packages of SBML

Usage
The following example assumes that a JAR file of JSBML has been included into the class path and that a local installation of a Java Virtual Machine is available on the platform where the code is executed.