JAXB (Java architecture for XML binding)

JAXB steht für Java Architecture for XML Binding und benennt eine Programmierschnittstelle ( Application Programming Interface, API) zur Interaktion zwischen Anwendungen, die in Java programmiert wurden, und XML-Dokumenten. Damit ist JAXB eine Alternative zu bekannten Technologien wie Simple API for XML (SAX) und Document Object Model (DOM), da komfortablere Möglichkeiten zum Schreiben und Lesen von XML-Dokumenten direkt aus der Java Anwendung heraus geboten werden.


In diesem Zusammenhang spricht man auch von " Mapping", und meint in diesem Fall die direkte Abbildung von Objektzuständen auf XML-Dokumente. Dabei bietet das Framework - die Klassen-Bibliothek - Methoden zur gezielten Manipulation von Java-Objekten und XML-Dokumenten. Dabei automatisiert die API quasi den Prozess der Transformation im Gegensatz zur Funktionsweise eines speziellen XML-Prozessors mit anschließender Übertragung der XML Elemente auf Objekte oder der manuellen Abbildung von Java-Objekten auf XML-Dokumente. Durch Annotationen oder eine spezielle Schema-Datei werden dabei die Regeln der Transformation festgelegt. Annotationen bestimmen die abzubildenden Elemente und umgekehrt wird durch die Schema-Datei ein Programm generiert, welches selbstständig die die XML-Dokumente darstellenden JavaBeans erzeugt. JAXB 2.1 ist Teil des Java Development Kits (JDK) ab der Version 6.

Zusammenhang zwischen XML und Java

Zusammenhang zwischen XML und Java

Die Abbildung zeigt zunächst einmal auf der rechten Seite den Zusammenhang zwischen XML-Dokumenten und der durch JAXB repräsentierten Java-API auf. Dabei ist die gegenseitige Umwandlung der Datenstrukturen gut ersichtlich, wofür der entsprechende Java-Code des Entwicklers verantwortlich ist. Im linken Teil der Abbildung wird der Zusammenhang zwischen dem XML-Schema und den Java-Klassen der API deutlich. Hier agieren Schema-Compiler und Schema-Generator zur Transformation der Datenstruktur-Beschreibung und umgekehrt. Dadurch sind auch die vier grundlegenden Funktionalitäten der JAXB - Serialisierung, Deserialisierung, Schemagenerator und Schemacompiler - dargestellt, die gänzlich unabhängig voneinander genutzt werden können.

Die JAXB-API ist ein Verbund mehrerer Pakete:

  • javax.xml.bind - stellt die generellen Kernfunktionen wie Serialisierung, Deserialisierung und Validierung zur Verfügung.
  • javax.sml.bind.annotation - definiert alle in JAXB gültigen Annotationen.
  • javax.sml.bind.helpers - fasst einige Standardimplementierungen der JAXB-Schnittstellen zusammen.
  • javax.xml.bind.util - definiert JAXB-Dienstklassen
Für das Verständnis der JAXB-API werden folgende Begriffe vorausgesetzt:

  • Die Abbildung einer Datenstruktur auf eine sequentielle Darstellungsform - also das Schreiben von Daten in ein XML-Dokument - wird als Serialisierung oder Marshalling bezeichnet.
  • Wird ausgehend von einem XML-Dokument ein Java-Objekt erzeugt - also ein XML-Dokument gelesen - so wird das als Deserialisierung oder Unmarshalling bezeichnet.
  • Als Data Binding bezeichnet man den Prozess, der zu einer Abbildung von Daten (z.B. XML-Dokumenten) auf entsprechende Objekte im Speicher führt.

Die Erzeugung von Objekten

Zur Erzeugung von Objekten aus vorliegenden XML-Dokumenten stellt JAXB die entsprechenden Klassen und Interfaces zur Verfügung. Eine weitere Voraussetzung ist die Vorlage eine XML-Schemas, das in XML-Syntax die Beziehungen zwischen den Elementen und Attributen des XML-Dokumentes beschreibt.

Die Eingabe des JAXB Binding Compilers ist das XML-Schema. Daraus wird der Code für die JAXB-Klassen generiert, die dann zusammen mit den Dateien des JAXB-Bundles und der Anwendung compiliert werden. Sofern ein XML-Dokument entsprechend der Regeln des XML-Schemas verfasst wurde, wird dieses durch das JAXB Binding Framework mit Hilfe des Unmarshalling in eine Baumstruktur überführt, die dann die Inhalte des XML-Dokumentes abbildet. Der Strukturbaum besteht aus einer Menge von Java-Objekten, die den instanziierten JAXB-Klassen entsprechen. Durch die Anwendung kann der Strukturbaum nunmehr modifiziert werden. Sobald dieser Prozess abgeschlossen ist, kann mittels Marshalling der Strukturbaum wieder in ein XML-Dokument transformiert werden. Sowohl beim Marshalling wie auch beim Unmarshalling besteht die Möglichkeit zur Validierung der Daten gegen das XML-Schema.

Das Ziel von JAXB

Das Ziel von JAXB ist es, die Verarbeitung im Zusammenhang mit XML-Dokumenten - direkt aus der Java-Anwendung heraus - zu unterstützen. Dabei benötigt ein Entwickler keinerlei Kenntnis über Technologien wie Simple API for XML (SAX) oder Document Object Model (DOM), sondern nutzt vereinfachend die von JAXB zur Verfügung gestellten Methoden. Von JAXB wird jedoch aktuell nur das XML-Schema zur Strukturdefinition von XML-Dokumenten unterstützt. Das war in einer ersten Version anders - dort wurde die Beschreibung der Struktur in einer Document Type Definition (DTD) vorausgesetzt. Aufgrund der Beschränkungen der DTD hinsichtlich der Datentypen und deren Werte oder deren mangelhaften Umgang mit allem Formaten, die nicht Text-Formaten entsprechen, konnte den Forderungen nach validierten und konsistenten XML-Dokumenten nicht entsprochen werden, so dass nunmehr das XML-Schema zum Einsatz kommt. JAXB wird u.a. verwendet für das Einlesen von Konfigurationsdateien, die Generierung und Manipulation von XML-Dokumenten, zur Validierung von Benutzer-Eingaben z.B. in einem Browser und im Zusammenhang mit einem Konfigurationsmanagement zur Erzeugung und Pflege von Konfigurationsdateien.

https://www.jaxb.dev.java.net/

Informationen zum Artikel
Deutsch:
Englisch: Java architecture for XML binding - JAXB
Veröffentlicht: 08.11.2013
Wörter: 755
Tags: #Java
Links: Annotation, API (application programming interface), Apps, Architektur, Baumstruktur