Java Architecture for XML Binding


Java Architecture for XML Binding
Java Architecture for XML Binding (JAXB)
Maintainer Metro Projekt
Entwickler Sun Microsystems
Aktuelle Version 2.2.4 update 1
(8. Juni 2011)
Betriebssystem Plattformunabhängig
Programmier­sprache Java
Kategorie XML API
Lizenz CDDL v1.0 and GPL v2
jaxb.dev.java.net

Java Architecture for XML Binding, kurz JAXB, ist eine Programmschnittstelle in Java, die es ermöglicht, Daten aus einer XML-Schema-Instanz heraus automatisch an Java-Klassen zu binden, und diese Java-Klassen aus einem XML-Schema heraus zu generieren. Diesen Vorgang nennt man XML-Datenbindung.

Somit ist ein Arbeiten mit XML-Dokumenten möglich, ohne dass der Programmierer direkt Schnittstellen zur Verarbeitung von XML wie SAX oder DOM verwenden muss.

JAXB 2.0 ist Teil der Java Platform, Enterprise Edition 5.0 und der Standard Edition 6.0. Es ist ein Teil der Web Services Interoperability Technology (WSIT). JAXB 1.0 wurde vom Java Community Process als JSR 31 entwickelt, JAXB 2.0 als JSR 222. Die Referenzimplementierung von JAXB ist Teil des Metro-Projektes der Glassfish Community.[1]

Inhaltsverzeichnis

Objekt-zu-XML-Transformation

Marshalling und Unmarshalling

Marshalling bedeutet die Generierung eines XML-Dokumentes aus einem Baum von Java-Objekten. Dies ist eine spezielle Form der Serialisierung. Anwendungsfälle für diese Umwandlung sind beispielsweise Persistierung in einer Datei oder Übertragung über ein Netzwerk. Der umgekehrte Weg heißt Unmarshalling – eine spezielle Form der Deserialisierung. Hierbei wird aus einem gegebenen XML-Dokument wieder ein Baum von Java-Objekten generiert. Um eine solche Umwandlung eindeutig zu realisieren, verwendet man XML-Schemata. Die verwendeten XML-Dokumente gehorchen den im Schema definierten Regeln. Man nennt sie auch Schema-Instanzen.

Daten-Bindung

Der Begriff der Bindung innerhalb dieses Konzeptes beschreibt einen Satz von Regeln, die die Abbildung/Repräsentation des XML-Schemas gegenüber den zu generierenden Java-Objekten bestimmt. Auf diese vorgegebenen Regeln kann durch Binding Customizations Einfluss genommen werden. Dies kann durch Inline-Notizen im XML-Schema oder durch eine gesonderte Datei geschehen, die dann dem Binding Compiler mit übergeben wird. Dieser hat dann die Aufgabe, das XML-Schema auf eine entsprechende Java-Objekt-Struktur abzubilden.

JAXB Binding Framework

Das JAXB Binding Framework besteht im Kern aus drei Java-Paketen:

  • javax.xml.bind
  • javax.xml.bind.util
  • javax.xml.bind.helpers

Die letzten beiden Pakete liefern unterstützende Funktionen für das Hauptpaket „javax.xml.bind“.

Die Klasse „JAXBContext“ aus „javax.xml.bind“ stellt den Eingangspunkt zur Nutzung des Frameworks innerhalb einer eigenen Java-Anwendung dar.

    JAXBContext jc = JAXBContext.newInstance("com.acme.foo:com.acme.bar");
    Unmarshaller u = jc.createUnmarshaller();
    FooObject fooObj = (FooObject) u.unmarshal(new File("foo.xml"));
    BarObject barObj = (BarObject) u.unmarshal(new File("bar.xml"));

Aus dem erstellten Kontext-Objekt wird nun ein „Unmarshaller“ generiert. Mit diesem können dann die XML-Daten auf Java-Objekte abgebildet werden.

Seit JAXB 2.1 stellt die Hilfsklasse „JAXB“ aus „javax.xml.bind“ einen vereinfachten Weg dar, dies zu erreichen. Die Erzeugung des Kontextes und das Unmarshallers wird durch diese automatisch intern vorgenommen, was gerade Einsteigern die Nutzung von JAXB erheblich erleichtert. Nachteilig hierbei ist jedoch, dass diese Objekte bei jedem Aufruf neu erzeugt werden, sodass in einigen Anwendungsfällen ein Geschwindigkeitsnachteil resultiert:

    FooObject fooObj = JAXB.unmarshal(new File("foo.xml"), FooObject.class);
    BarObject barObj = JAXB.unmarshal(new File("bar.xml"), BarObject.class);

Um die Datenobjekte wieder zurück in die XML-Form zu bringen, wird ein „Marshaller“ aus dem Kontext-Objekt erzeugt. Ihm werden das Datenobjekt und ein Streamobjekt („java.io.OutputStream“ oder „java.io.Writer“) übergeben.

    Marshaller m = jc.createMarshaller();
    m.marshal(fooObj, System.out);

Auch an dieser Stelle erleichtert JAXB 2.1 die Programmierung durch das die Hilfsklasse „JAXB“, welche den Marshaller intern erzeugt und somit zu kürzerem Quellcode führt:

    JAXB.marshal(fooObj, System.out);

Alternativen

Die folgenden Java XML Binding Frameworks können als Alternative zu dem in der JRE enthaltenen JAXB verwendet werden:

Weblinks

Einzelnachweise

  1. JAXB Reference Implementation

Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Java Architecture for XML Binding — (JAXB) allows Java developers to map Java classes to XML representations. JAXB provides two main features: the ability to marshal Java objects into XML and the inverse, i.e. to unmarshal XML back into Java objects. In other words, JAXB allows… …   Wikipedia

  • Java Architecture for XML Binding — (JAXB) est l API Java d Oracle (anciennement Sun Microsystems) permettant de créer des classes Java à partir de schémas (.XSD) et inversement. Elle facilite l utilisation du XML en Java en compilant un schéma XML dans une ou plusieurs classes.… …   Wikipédia en Français

  • Java API for XML Web Services — Die Java API for XML Web Services (JAX WS) ist eine Java API zum Erstellen von Webservices. JAX WS wurde in der Java Platform Enterprise Edition 5 eingeführt und ist seit der Version 1.6 auch Teil der Java Platform, Standard Edition.[1] JAX WS… …   Deutsch Wikipedia

  • Java Specification Request — Java Specification Requests Java Specification Requests (JSR) est un système normalisé ayant pour but de faire évoluer la plateforme Java. Sommaire 1 Présentation 2 Implémentation 3 Interopérabilité informatique …   Wikipédia en Français

  • Java Specification Requests — (JSR) est un système normalisé ayant pour but de faire évoluer la plateforme Java. Sommaire 1 Présentation 2 Implémentation 3 Liste des JSRs 4 Notes et …   Wikipédia en Français

  • XML data binding — refers to the process of representing the information in an XML document as an object in computer memory. This allows applications to access the data in the XML from the object rather than using the DOM to retrieve the data from a direct… …   Wikipedia

  • Java 2 Enterprise Edition — Java Platform, Enterprise Edition, abgekürzt Java EE oder früher J2EE, ist die Spezifikation einer Softwarearchitektur für die transaktionsbasierte Ausführung von in Java programmierten Anwendungen und insbesondere Web Anwendungen. Sie ist eine… …   Deutsch Wikipedia

  • Java 2 Platform Enterprise Edition — Java Platform, Enterprise Edition, abgekürzt Java EE oder früher J2EE, ist die Spezifikation einer Softwarearchitektur für die transaktionsbasierte Ausführung von in Java programmierten Anwendungen und insbesondere Web Anwendungen. Sie ist eine… …   Deutsch Wikipedia

  • Java EE — Java Platform, Enterprise Edition, abgekürzt Java EE oder früher J2EE, ist die Spezifikation einer Softwarearchitektur für die transaktionsbasierte Ausführung von in Java programmierten Anwendungen und insbesondere Web Anwendungen. Sie ist eine… …   Deutsch Wikipedia

  • Java Platform Enterprise Edition — Java Platform, Enterprise Edition, abgekürzt Java EE oder früher J2EE, ist die Spezifikation einer Softwarearchitektur für die transaktionsbasierte Ausführung von in Java programmierten Anwendungen und insbesondere Web Anwendungen. Sie ist eine… …   Deutsch Wikipedia