Performanz: Ein wichtiges, erstaunlicherweise aber häufig vernachlässigtes Kriterium ist die Performanz der XML-Data-Binding-Lösung. Insbesondere in einer Webservice-Anwendung kann sie einen gewaltigen Unterschied ausmachen. Da das XML Data Binding typischerweise beim Versand und beim Empfang von Nachrichten zum Einsatz kommt, und zwar sowohl auf Seiten des Senders als auch beim Empfänger, sind bei einer typischen Request-Response-Operation also insgesamt vier (Un)Marshallings notwendig. Oft schauen Entwickler bei Performanzproblemen auf das Webservice-Framework. Hier sind die Unterschiede inzwischen aber überwiegend gering. Die Wahl eines besser geeigneten XML Data Binding kann dagegen Wunder wirken. Im Web sind zwar unterschiedliche Benchmarks zu finden, diese sind jedoch – wie meist – mit gewisser Vorsicht zu genießen.
Verwendeter Parser: Über die Jahre hinweg hat sich die Parser-Technik weiterentwickelt. So existieren heute mit DOM, SAX und StAX gleich drei verbreitete Parsing-Ansätze mit unterschiedlichen Stärken und Schwächen. DOM Parser (Document Object Model) bauen während des Parsens von XML-Dokumenten eine baumartige Struktur im Speicher auf, welche die Struktur des Dokuments widerspiegelt. Die große Stärke von DOM liegt darin, dass man anschließend komfortabel zwischen den einzelnen Knoten navigieren kann. Ein wesentlicher Nachteil liegt dagegen in der Performanz. Unter Last wird der Aufbau der Baumstrukturen oftmals zum Flaschenhals, insbesondere beim benötigten Arbeitsspeicher. Im Bereich der Webservice-Anwendungen kommt hinzu, dass wichtige Metainformationen (zum Beispiel zur Authentifizierung) im Nachrichten-Header untergebracht sind. Selbst wenn diese Informationen am Anfang der Nachricht zur Folge haben, dass die Nachricht abgelehnt wird, ist beim DOM-Ansatz dennoch zunächst die gesamte Nachricht zu parsen. Somit verschenkt man viele Ressourcen. Daher hat sich gerade im Bereich von Webservices der Einsatz von Streaming-Parsern durchgesetzt. Wie der Name vermuten lässt, verarbeitet man XML-Dokumente hier strombasiert, d.h. Zeichen für Zeichen. Während dies eine vergleichsweise nur eingeschränkte Navigation erlaubt, ergibt sich in der Regel eine deutlich bessere Performanz unter Last. Bei der älteren SAX-Variante (Simple API for XML) liegt die Ablaufkontrolle beim Parser. Findet dieser ein neues Element im Datenstrom, lassen sich entsprechende Handler aufrufen, die vom Anwendungsentwickler zu implementieren sind. Die neuere StAX-Variante (Streaming API for XML) dreht diese Kontrolle herum. Nun hat der Entwickler wieder das Zepter in der Hand und instruiert den Parser, im Datenstrom nach bestimmten Bestandteilen eines Dokuments zu suchen. Insbesondere lässt sich der Parsing-Vorgang jederzeit abbrechen, falls feststeht, dass der restliche Teil eines Dokuments nicht mehr von Interesse ist. Bei der Auswahl einer XML-Data-Binding-Lösung ist demnach gegebenenfalls zu betrachten, welche Parser-Variante unter der Haube verwendet wird.
Verlustfreie Umwandlung: XML-Dokumente und Nachrichten enthalten oft mehr Informationen, als fachliche Klassen benötigen. Es handelt sich beispielsweise um Kommentare oder Zusatzelemente. Viele XML-Data-Binding-Frameworks ignorieren diese Zusatzinformationen. Hieraus resultiert folgendes Phänomen: Wandelt man ein XML-Dokument in ein Objekt um und unmittelbar danach das Objekt wieder in XML, so sind das ursprüngliche und das resultierende XML-Dokument häufig voneinander verschieden. Während das in manchen Anwendungen kein Problem darstellt, führt es in anderen zu großen Kopfschmerzen. Berechnet man etwa Prüfsummen für XML-Dokumente, beispielsweise im Zusammenhang mit digitalen Signaturen, ist ein solches Verhalten nicht akzeptabel. Selbst eine unterschiedliche Formatierung der Dokumente oder eine unterschiedliche Reihenfolge von Attributen beziehungsweise Elementen führt zu großen Schwierigkeiten. Hier ist eine Lösung notwendig, die eine verlustfreie Umwandlung ermöglicht und das ursprüngliche XML Infoset erhält.
Bei einer Sondierung verfügbarer Alternativen fällt sehr schnell auf, dass die Auswahl außerordentlich unübersichtlich ist. Mit einer Suchmaschine lassen sich in relativ kurzer Zeit gleich mehrere Dutzend XML-Data-Binding-Frameworks für Java finden. Da ist es fast unnötig zu erwähnen, dass diese zum Teil sehr unterschiedliche Ansätze verfolgen. Natürlich hat jedes Framework seine spezifischen Stärken und Schwächen. Der Artikel betrachtet eine kleine Auswahl von vier recht unterschiedlichen Vertretern, um die Breite des Angebots zu veranschaulichen.
Auf der nächsten Seite: JAXB & Apache XMLBeans
Themenforum: Java