Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
teknopedia

teknopedia

teknopedia

teknopedia

teknopedia
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Jakarta XML Binding – Wikipedia
Jakarta XML Binding – Wikipedia
aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Java Architecture for XML Binding)
Java Architecture for XML Binding (JAXB)
Basisdaten

Hauptentwickler Metro Projekt
Entwickler Sun Microsystems
Aktuelle Version 4.0.5[1]
(15. März 2024)
Aktuelle Vorabversion 4.0
(15. Oktober 2021)
Betriebssystem Plattformunabhängig
Programmier­sprache Java
Kategorie XML API
Lizenz Eclipse Distribution License, Eclipse Public License 2.0, GPL linking exception
projects.eclipse.org/projects/ee4j.jaxb-impl

Jakarta XML Binding (JAXB; früher Java Architecture for XML Binding) 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 Entwickler 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.[2]

Seit Version 9 ist JAXB nicht mehr Bestandteil der JRE und des JDK.[3][4]

Objekt-zu-XML-Transformation

[Bearbeiten | Quelltext bearbeiten]
Marshalling und Unmarshalling
Marshalling und Unmarshalling

Marshalling generiert bei JAXB aus einem Baum von Java-Objekten ein XML-Dokument. 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.

Datenbindung

[Bearbeiten | Quelltext bearbeiten]

Der Begriff der Datenbindung innerhalb dieses Konzeptes beschreibt einen Satz von Regeln, welche die Abbildung/Repräsentation des XML-Schemas gegenüber den zu generierenden Java-Objekten bestimmen. 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.

Die Tabelle unten listet die Abbildung der XML-Schema-Datentypen (XSD) zu den entsprechenden Datentypen in Java in JAXB auf.[5]

XML-Schematyp Java-Datentyp
xsd:anySimpleType[6] java.lang.Object
xsd:anySimpleType[7] java.lang.String
xsd:base64Binary byte[]
xsd:boolean boolean
xsd:byte byte
xsd:date javax.xml.datatype.XMLGregorianCalendar
xsd:dateTime javax.xml.datatype.XMLGregorianCalendar
xsd:decimal java.math.BigDecimal
xsd:double double
xsd:duration javax.xml.datatype.Duration
xsd:float float
xsd:g javax.xml.datatype.XMLGregorianCalendar
xsd:hexBinary byte[]
xsd:int int
xsd:integer java.math.BigInteger
xsd:long long
xsd:NOTATION javax.xml.namespace.QName
xsd:positiveInteger java.math.BigInteger
xsd:QName javax.xml.namespace.QName
xsd:short short
xsd:string java.lang.String
xsd:time javax.xml.datatype.XMLGregorianCalendar
xsd:unsignedByte short
xsd:unsignedInt long
xsd:unsignedLong java.math.BigDecimal
xsd:unsignedShort int

JAXB Binding Framework

[Bearbeiten | Quelltext bearbeiten]

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

  • jakarta.xml.bind
  • jakarta.xml.bind.util
  • jakarta.xml.bind.helpers

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

Die Klasse JAXBContext aus jakarta.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 jakarta.xml.bind einen vereinfachten Weg dar, dies zu erreichen. Die Erzeugung des Kontextes und des 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 die Hilfsklasse JAXB, welche den Marshaller intern erzeugt und somit zu kürzerem Quellcode führt:

    JAXB.marshal(fooObj, System.out);

Alternativen

[Bearbeiten | Quelltext bearbeiten]

Die folgenden Java XML Binding Frameworks können als Alternative zu JAXB verwendet werden:

  • Apache XMLBeans
  • Castor (Framework)
  • JiBX
  • CookXML
  • XStream
  • Apache Commons Betwixt
  • Simple XML Serialization

Weblinks

[Bearbeiten | Quelltext bearbeiten]
  • JAXB-Referenzimplementierung – Referenzimplementierung und JAXB-Spezifikation
  • JAXB-Tutorial
  • JAXB-Kapitel aus dem Java Web Services Tutorial von Sun/Oracle
  • Überblick über JAXB. Sun/Oracle
  • Deutschsprachiges Tutorial. In: Java ist auch eine Insel
  • Die Hilfsklasse JAXB. jakarta.ee

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. ↑ Release 4.0.5. 15. März 2024 (abgerufen am 22. März 2024).
  2. ↑ JAXB Reference Implementation (Memento des Originals vom 11. Juli 2007 im Internet Archive)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/jaxb.dev.java.net
  3. ↑ Java SE 9 ( JSR 379) Final Release Specification: APIs proposed for removal. Abgerufen am 14. Mai 2019 (englisch). 
  4. ↑ JEP 320: Remove the Java EE and CORBA Modules. Abgerufen am 14. Mai 2019 (englisch). 
  5. ↑ Using JAXB Data Binding: Standard Data Type Mapping. Abgerufen am 25. April 2014. 
  6. ↑ for xsd:element of this type
  7. ↑ for xsd:attribute of this type
Abgerufen von „https://de.teknopedia.teknokrat.ac.id/w/index.php?title=Jakarta_XML_Binding&oldid=257137347“
Kategorien:
  • Java-Programmierschnittstelle
  • XML
Versteckte Kategorien:
  • Wikipedia:Defekte Weblinks/Ungeprüfte Archivlinks 2019-09
  • Wikipedia:Vorlagenfehler/Vorlage:Cite web/temporär

  • indonesia
  • Polski
  • العربية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصرى
  • Nederlands
  • 日本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українська
  • Tiếng Việt
  • Winaray
  • 中文
  • Русский
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id