JiBX
# JiBX

JiBX ist ein freies XML-Datenbindungs-Framework für Java. Damit ist ein Arbeiten mit XML-Dokumenten möglich, ohne dass der Programmierer direkt Schnittstellen zur Verarbeitung von XML wie SAX oder DOM verwenden muss. Dabei erlaubt JiBX das Binden beliebiger Klassenstrukturen an beliebige XML-Dokumente. Dadurch unterscheidet sich JiBX von anderen Java XML Binding Frameworks wie JAXB oder XMLBeans, welche aus den XML-Schemas der XML-Dokumente die zu bindenden Klassen generieren, oder Apache Commons Betwixt, das aus den zu bindenden Klassen die XML Dokumente generiert. Es ist somit das einzige Java-Framework, das eine völlige Unabhängigkeit der zu bindenden Java-Klassen von den XML-Dokumenten ermöglicht.

JiBX ist so entworfen, dass es diese Transformation möglichst effizient durchführt, weshalb JiBX auch zu den schnellsten XML Binding Frameworks für Java zählt.

## Funktionsweise

JiBX basiert auf dem sogenannten Mapped Data Binding, das bedeutet, dass beliebige Java Klassen mittels einer Binding Definition auf XML-Dokumente abgebildet werden. Dadurch ist es möglich, eine Architektur umzusetzen, welche die Business-Objekte (Java-Klassen) von den Kommunikations- oder Persistenz-Schnittstellen (XML-Dokumente) entkoppelt. Es ist somit möglich, die Java-Klassen unabhängig von den zu bindenden XML-Dokumenten zu entwickeln.

Die Konvertierung selbst erfolgt über Bytecodemanipulation der zu bindenden Klassen selbst. Es ist somit nicht notwendig, eigene Konvertierungsklassen zu erzeugen. Damit werden sowohl die Performance als auch der Speicherverbrauch des Frameworks positiv beeinflusst.

Dafür stellt JiBX folgende Werkzeuge zur Verfügung:

* bindgen – Manipulation des Bytecodes der zu bindenden Klassen und Generierung des XML Schemas für diese Klassen
* codegen – Generierung von Sourcecode und manipuliertem Bytecode für zu bindende Klassen aus einem vorhandenen XML-Schema
* jibx2wsdl – Generierung von JiBX Binding, WSDL, und XML-Schema aus Klassen
* starter – Verwendung von Binding-Definitionen für das Binden von Klassen an XML-Schemas

## Alternativen

* Java Architecture for XML Binding (JAXB)
* Apache XMLBeans
* Castor (Framework)
* CookXML
* XStream
* Apache Commons Betwixt
