1. Mit CD BRM + + + Delphis VirtualStringTree + + + Fast Infoset
Software, Systems & Development
3.08 Mai / Juni www.entwickler-magazin.de Deutschland € 6,50 Österreich € 7,00 Schweiz sFr 13,40
XAML WPF
Schnelleres XML
Bessere Performance mit
und
Fast Infoset
Die Grundlagen
Mathematik mit
XSLT 2.0 auf einen Blick
Transformation in
Kreisdiagramme
Ethical
Hacking
Reporting
List & Label 13 im Test
Onepoint
Strategien für Ihre Sicherheit
Effektives
Projektmanagement Stimmen aus der LightZone
Bildbearbeitung in der Praxis
RIA mit Ext JS 2.0
DB2 9.5
Das bringt der neue Trend Große Datenmengen
effizient verwalten
CD-Inhalt
Alle Infos auf Seite 3
Software Testversionen
Lehr- oder Infoprogramme
Datenträger enthält nur
Onepoint Project 2007 Open Edition WordPress 2.3.3 Priotecs IT Demo
Ext JS 2.0.2 Plone 3.0.6 Builder
Joomla 1.5.1 OpenCMS 7.0.4 Light Crafts
TYPO3 4.1.6 Bricolage 1.10.4 LightZone 3.5
Drupal 6.1
!
2. XML Fast Infoset
Einführung in Fast Infoset
Schnelleres XML
Der Siegeszug von XML ist nicht aufzuhalten. Ob als SOAP-Nachricht, Spring-Konfigurationsfile oder
XHTML-Dateien für die Weboberfläche: XML ist überall zu finden und aus der heutigen IT nicht mehr
wegzudenken. Aber der größte Nachteil von XML, Ineffizienz, bleibt weiterhin bestehen. Eine effizientere
Kodierung für eine höhere Übertragungs- und Verarbeitungsgeschwindigkeit würde aber gleichzeitig an-
dere Vorteile von XML, wie die gute Lesbarkeit für Menschen und Maschinen, zunichte machen. Jedoch
überwiegt der Nachteil in manchen Situationen den Vorteil, sodass zumindest für diese Anwendungsfälle
eine alternative Lösung gesucht wird. Eine erste Antwort darauf gibt Fast Infoset.
von Dapeng Wang kompiliert oder optimiert, indem die Texte wie z.B. Fast Infoset, MTOM-optimierte
indiziert und in Binärform umgewandelt MIME-Nachricht oder JSON (JavaScript
XML ist einfach zu verstehen und kann werden. Dieser Schritt war notwendig, Object Notation). Daher stellt Fast Info-
nicht nur von Maschinen verarbeitet, son- weil die mobilen Geräte nur über eine set nichts anderes als eine effizientere Al-
dern auch von Menschen gelesen werden. eingeschränkte Bandbreite und Verarbei- ternative für die XML-1.x-Syntax dar, die
Daher erfreut sich diese Technologie seit tungsressourcen verfügen und eine effi- letztendlich dasselbe Informationsmodell
ihrer Entstehung großer Beliebtheit. Aber ziente Verarbeitung die oberste Priorität repräsentiert. Eine Instanz von diesem
der Nachteil von XML ist auch offensicht- in diesem Anwendungsfall hat. Andere Fast-Infoset-Format wird analog als Fast-
lich: XML stellt keineswegs die effizientes- Szenarien, die eine derartige Optimierung Infoset-Dokument bezeichnet. Ein Fast-
te Form dar, um Daten zu repräsentieren. verlangen, sind z.B. 3D-Grafiken oder Infoset-Dokument ist nicht nur von der
Auch als Payloadformat für Datenüber- Datenaustausch in der Energieindustrie, Datenmenge her wesentlich kompakter
tragung sind andere binäre Formate weit wo eine sehr große Menge von Fließkom- als sein XML-Pendant, sondern lässt sich
überlegen. Diese Ineffizienz bezieht sich mazahlen ausgetauscht wird. Vor diesem auch schneller erstellen und verarbeiten.
nicht nur auf die Größe der Datenmen- Hintergrund haben die Standardisierungs- Diese Eigenschaften machen diese Tech-
ge, die durch die Tags um die eigentlichen gremien ITU-T (International Telecom- nologie zu einem guten Kandidaten für
Nutzdaten aufgebläht werden, sondern munications Union Telecommunication Umgebungen mit eingeschränkten Res-
auch auf die Verarbeitungsgeschwin- Standardization Sector) und ISO gemein- sourcen. Bevor der Kodierungsalgorith-
digkeit. So muss ein XML-Parser bei der sam den Standard Fast Infoset erarbeitet. mus von Fast Infoset näher erläutert wird,
Verarbeitung jedes Zeichens im XML- folgen zunächst die potenziellen Schwä-
Dokument überprüfen, ob es sich dabei Spezifikation chen von XML sowie die entsprechenden
um ein Tag-Element oder eine maskierte Fast Infoset spezifiziert ein binäres Kodie- Verbesserungen durch Fast Infoset.
Zeichenkette (< für <) handelt. Obwohl rungsformat für XML Information Set
diese Nachteile von XML schon lange be- (Infoset). Es ist an dieser Stelle zu betonen, • XML verwendet ein Beginn- und ein
kannt sind, wird keine allgemeine Lösung dass das zugrunde liegende Datenmodell End-Tag, um ein Element zu umschlie-
angestrebt, weil man nicht die gute Lesbar- XML Infoset und nicht XML ist. Bei XML ßen. Das End-Tag trägt immer densel-
keit und Interoperabilität von XML durch Infoset handelt es sich um ein abstraktes ben Namen wie das Beginn-Tag und ist
eine effizientere Binärkodierung verlieren Modell, in dem die XML-Bestandteile wie damit redundant. Fast Infoset verzichtet
möchte. In vielen Situationen wird jedoch Element, Attribut, Processing-Instruc- konsequent auf die End-Tags.
die Effizienz einem höheren Stellenwert tions usw. als Information Items definiert • Sonderzeichen wie <, > und & müssen
beigemessen, sodass man sich nach Alter- sind. Dieses abstrakte Modell kann in in XML-1.x-Syntax maskiert werden.
nativen umschaut. So wurde schon im Jahr verschiedenen physikalischen Formaten Das führt vor allem dazu, dass der Par-
2000 WML (Wireless Markup Language) kodiert oder repräsentiert werden, wobei ser „Suchen & Ersetzen“ für solche
für den Datenaustausch mit Handy und meistens die XML-1.x-Notation (XML maskierten Zeichenketten durchführen
mobilen Geräten über das WAP-Protokoll 1.0 und XML 1.1) benutzt wird. Aber es muss. Bei Fast Infoset werden die Son-
eingeführt. WML wird zwar in XML- ist ebenfalls möglich, dieses abstrakte Mo- derzeichen nicht maskiert und identisch
Syntax notiert, jedoch für die Übertragung dell in anderen Notationen darzustellen wie andere Zeichen behandelt.
102 Entwickler Magazin 3.2008 www.entwickler-magazin.de
4. XML Fast Infoset
werden die anderen Elementnamen und
Texte indiziert. Die beiden Indextabellen
für Elementnamen und Texte zeigen Ta-
belle 1 und 2.
Fast Infoset verwendet ASN.1 als No-
tation für die Beschreibung der Daten-
struktur. ASN.1 steht für Abstract Syntax
Notation .1 und wird seit 20 Jahren ent-
Abb. 1: XML vs. Fast Infoset wickelt und vor allem für den Datenaus-
tausch in der Telekommunikationsindust-
rie erfolgreich eingesetzt. ASN.1 kann wie
Abb. 2: Benchmark „Serialisierung“
ments illustriert. Es ist zu betonen, dass ABNF (Augmented Backus-Naur Form)
das Endergebnis in Listing 2 keineswegs oder XML Schema für die Beschreibung
mit dem entsprechenden Fast-Infoset- der Datenstruktur verwendet werden. tenmenge minimieren, aber keineswegs
Dokument (welches ein binäres Format Die abstrakte Beschreibungssyntax von den Parsing-Vorgang schneller machen
ist und nicht als Text dargestellt werden ASN.1 kann mithilfe verschiedener Ko- kann. Hier liegt auch der Vorteil von Fast
kann) übereinstimmt, sondern lediglich dierungsregeln in eine konkrete Form Infoset gegenüber GZip, weil durch die
dazu dient, den Algorithmus zu erläu- umgewandelt werden. So existieren für Nutzung einer Indextabelle nicht nur die
tern. In Listing 1 ist ein XML Infoset in ASN.1 sowohl eine binäre Kodierung wie Datenmenge verkleinert, sondern auch
XML-Syntax zu sehen, auf das die Fast- DER (Distinguished Encoding Rules), die Verarbeitung deutlich vereinfacht
Infoset-Kodierung angewandt wird. PER (Packed Encoding Rules) als auch und beschleunigt wird. Ein Fast-Infoset-
Das Ergebnis nach der Fast-Infoset-In- eine textuelle Kodierung wie XER (XML Dokument ist zwar in der Regel sogar
dizierung wird in Listing 2 gezeigt. Eine Encoding Rules). Es ist zu erwähnen, dass größer als eine durch GZip komprimierte
Zahlenangabe in geschweifter Klammer unter der Initiative von Sun Microsystems Datei, aber wenn man die gesamte Zeit
bedeutet, dass ein neuer Indexeintrag auch an Fast Web Services gearbeitet wird, für die Übertragung und Verarbeitung in
mit dem dahinter stehenden Text in der das Web Services performanter und effizi- Betracht zieht, liegt Fast Infoset klar im
Indextabelle angelegt wird, während enter machen soll. Grundlagen von Fast Vorteil. Natürlich lassen sich die beiden
eine Zahlenangabe in eckiger Klammer Web Services bilden die beiden Spezifika- Technologien auch problemlos kombi-
einen Indexverweis darstellt. Um zwi- tionen X.693 und X.694. Während X.693 nieren, indem ein bereits optimiertes Fast-
schen Indizes für qualifizierte Namen und das Ziel hat, ASN.1 als eine Alternative Infoset-Dokument noch einmal kompri-
Textinhalte zu unterscheiden, werden die zu XML Schema oder Relax NG für die miert wird.
Indizes für qualifizierte Namen in fett Beschreibung von XML Infoset zu etab- Ein weiterer Optimierungsmechanis-
und für Texte in kursiv gekennzeichnet. lieren, versucht X.694 ein Mapping zwi- mus im Bereich XML und Web Services
So wird z.B. beim ersten item-Element in schen XML Schema und ASN.1 zu defi- heißt MTOM (Message Transmission
der Zeile 2 ein neuer Index mit dem Wert nieren, sodass Fast-Infoset-Werkzeuge die Optimization Mechanism) sowie die
1 (1 mit geschweifter Klammer, fett) mit XML Schema beschriebenen Doku- zugrunde liegende XOP-Spezifikation
angelegt, da zuvor bereits ein Index mit mente noch effizienter kodieren können. (XML-binary Optimized Packaging).
dem Wert 0 für root erzeugt wurde. Als Die entsprechenden Technologien sowie Diese beiden Spezifikationen beschäftigen
in der Zeile 6 der Name item ein zweites deren Beziehungen zeigt Abbildung 1. sich mit der Problematik, wie man Binär-
Mal vorkommt, wird er durch einen In- daten effizient in einem XML-Dokument
dexverweis mit dem Wert 1 (1 in eckiger Performance einbetten und übertragen kann, ohne da-
Klammer, fett) ersetzt. Dementsprechend Das Ziel von Fast Infoset ist eine effizi- bei das konzeptionelle XML-Modell zu
entere Übertragung und Verarbeitung zerstören. MTOM und XOP bieten aber
Index QName von XML Infoset. Darin liegt auch der
0 root Unterschied zwischen Fast Infoset und Listing 3
1 item anderen Optimierungstechnologien. Das
Fast-Infoset-Dokument mit SAX-API
2 name Komprimierungsverfahren GZip wird
verarbeiten
3 quantity gerne zusammen mit dem HTTP-Proto-
XMLReader saxReader = new SAXDocumentParser();
Tabelle 1: Indextabelle für QNames koll eingesetzt, um die zu übertragende
ContentHandler ch = ...
Datenmenge zu minimieren. Dabei be-
saxReader.setContentHandler(ch);
Index Text achtet GZip aber die spezielle Struktur InputStream in = new BufferedInputStream
0 Buch von XML-Inhalten nicht und behandelt (new FileInputStream(fiDoc));
1 1 dementsprechend ein XML-Dokument saxReader.parse(new InputSource(in));
2 10 genauso wie eine Bilddatei oder ein Video-
Tabelle 2: Indextabelle für Texte stream. Das heißt, dass GZip nur die Da-
104 Entwickler Magazin 3.2008 www.entwickler-magazin.de
5. Fast Infoset XML
set-Unterstützung an. Für Detailinfos wird
an dieser Stelle auf die jeweiligen Websites
verwiesen (s. Links & Literatur).
Schlussbetrachtung
Fast Infoset bietet gegenüber der XML-
1.x-Kodierung einen deutlichen Perfor-
mancevorteil und ist daher besonders für
Umgebungen mit eingeschränkter Band-
breite und Rechenleistung geeignet. Auch
in normalen Umgebungen kann Fast Info-
Abb. 3: Benchmark „Parsing“ Abb. 4: Benchmark „Dokumentgröße“
set zur Systembeschleunigung eingesetzt
werden. Dadurch, dass Fast Infoset nicht
nur Optimierung für Binärdaten in einem Ergebnis für Serialisierung, Parsing und nur von der Java-Plattform, sondern auch
XML Infoset an, während Fast Infoset Dokumentgröße eines UBL-(Universal- von Microsoft .NET und .NET CF unter-
allgemeiner ausgelegt ist und sowohl für Business-Language-)Infosets. Für wei- stützt wird, bleibt das Interoperabilitäts-
Binär- als auch für Textdaten eingesetzt tere Ergebnisse anderer Dokumenttypen risiko entsprechend niedrig. Trotzdem
werden kann. siehe https://fi.dev.java.net/performance. handelt es sich bei Fast Infoset um eine
Nachdem die Abgrenzungen zwi- html . junge Technologie. Die Binärkodierung
schen Fast Infoset und anderen Techno- zur Effizienzsteigerung hat immer den
logien geklärt sind, werden als Nächstes API Verlust des lesbaren Textformats zur Fol-
ein paar Ergebnisse aus einer Benchmark- Das Fast Info Project bei java.net bietet ge, was auch ein Hauptkritikpunkt an
Messung gezeigt, die die Performancever- Fast-Infoset-Implementierungen für alle Fast Infoset darstellt. Daher ist in kurzer
besserung von Fast Infoset belegen sollen. drei gängigen Parser-APIs an. Die ent- Zeit nicht damit zu rechnen, dass Fast In-
Das Open-Source-Projekt Fast Infoset sprechenden Klassen für Parser und Seri- foset XML verdrängt oder ersetzt wird,
bei java.net hat im Rahmen des Projekts alisierer sind: aber für spezielle Umgebungen mit Son-
Performancemessungen mit Japex durch- deranforderungen bietet es eine sinnvolle
geführt. 1. SAX-API und performante Alternative.
Dabei stellte sich heraus, dass Fast In- • Parser: com.sun.xml.fastinfoset.sax.
foset gegenüber der XML-1.x-Kodierung SAXDocumentParser Dapeng Wang ist freiberuflicher System-
einen deutlichen Performancevorteil • Serialisierer: com.sun.xml.fastinfoset. architekt, Trainer und Buchautor. Sein
Schwerpunkt liegt in Design und Imple-
bietet. Das Parsing des Fast-Infoset-Do- sax.SAXDocumentSerializer mentierung von komplexen Enterprise-
kuments ist 3 bis 5-fach schneller als das 2. StAX-API Applikationen mit J2EE- und Web-
Parsing des XML-Dokuments mit dem- • Parser: com.sun.xml.fastinfoset.stax. Services-Technologien sowie in der Anwendung von
agilen Softwareentwicklungsmethoden. Neben zahl-
selben Infoset, während das Serialisieren StAXDocumentParser reichen Artikeln im Fachmagazinen hat er zusammen
sogar bis zu 10-fach performanter sein • Serialisierer: com.sun.xml.fastinfoset. mit anderen Autoren Bücher über „Java Web Services“
kann. Gleichzeitig nimmt ein Fast-In- stax.StAXDocumentSerializer publiziert. Er hält regelmäßig Vorträge zu diesen The-
men auf verschiedenen Kongressen. Dapeng Wang ist
foset-Dokument nur 20–60 % der Größe 3. DOM-API unter Wang.Dapeng@gmx.net zu erreichen.
des entsprechenden XML-Pendants ein. • Parser: com.sun.xml.fastinfoset.dom.
Abbildungen 2, 3 und 4 zeigen jeweils das DOMDocumentParser
• Serialisierer: com.sun.xml.fastinfoset. Links & Literatur
Listing 4 dom.DOMDocumentSerializer
[1] Fast Infoset: java.sun.com/developer/
Fast-Infoset-Dokument mit StAX-API technicalArticles/xml/fastinfoset/
erstellen Beispielhaft wird in Listing 3 und 4 ge-
[2] Fast Infoset Project: https://fi.dev.java.net
zeigt, wie man mit dem SAX-Parser für
StAXDocumentSerializer streamWriter =
Fast Infoset ein Dokument verarbeitet [3] Fast Infoset Interoperability Project:
new StAXDocumentSerializer();
bzw. mit dem StaX-Serialisierer für Fast https://fi-interop.dev.java.net
staxDocumentSerializer.setOutputStream(fiDoc);
Infoset ein Dokument erstellt. Bis auf die [4] Fast Web Service: java.sun.com/developer/
Instanziierung der Reader- bzw. Seriali- technicalArticles/WebServices/fastWS/
streamWriter.writeStartDocument();
streamWriter.writeStartElement(“item”); zer-Klassen sind die anderen Methoden [5] Fast Infoset Japex Benchmark Ergebnis:
streamWriter.writeCharacters(“Book”); identisch, wie SAX, StAX und DOM-API. https://fi.dev.java.net/performance.html
streamWriter.writeEndElement(); Die Fast-Infoset-Klassen lassen sich auch [6] Fast Infoset in Axis2: wso2.org/library/2686
streamWriter.writeEndDocument(); problemlos in JAXP integrieren. [7] Fast Infoset in Metro: java.sun.com/
streamWriter.close();
Auch Web Services Frameworks wie webservices/docs/2.0/fastinfoset/
Axis2 und Metro bieten bereits Fast-Info- fastinfoset1.0.1-manual.html
www.entwickler-magazin.de Entwickler Magazin 3.2008 105