Evaluation von XML und Java
Vorwort
Diese Diplomarbeit entstand im Sommer und Herbst des Jahres 2002 am Institut für Betriebssysteme des Fachbereichs Informatik an der Fachhochschule Mannheim.
Danksagung
Ich danke allen Professoren, Dozenten und ihren Mitarbeitern der Fachhochschule Mannheim, die mir ihr Wissen vermittelten und mir bei Problemen Hilfestellung gaben.
Dank geht auch an meine Eltern, die mir durch ihre finanzielle Unterstützung das Studium erst ermöglichten.
Last, but not least, möchte ich meinen beiden WG-Mitbewohnern für ihre moralische Unterstützung und ihr Verständnis danken. Besonders Wolfgang war mir eine große Hilfe, in dem er die Arbeit immer wieder auf ihre Verständlichkeit überprüfte.
Warenzeichen
In dieser Arbeit werden eingetragene Warenzeichen, Handelsnamen und Gebrauchsnamen verwendet. Auch wenn diese nicht als solche gekennzeichnet sind, gelten die entsprechenden Schutzbestimmungen.
- 2 -
Evaluation von XML und Java
Inhaltsverzeichnis
KAPITEL 1 Einleitung 5
1.1 Aufgabenstellung 5
1.2 Aufbau der Diplomarbeit 5
1.3 Das JAX-Pack von SUN 6
KAPITEL 2 Grundlagen 7
2.1 XML 7 XML................................................................................................................................7
2.1.1 Dokumentenstruktur von XML 8
2.1.2 Konformität 9
2.1.3 Dokumenttyp 10
2.1.4 Namensräume 14
2.1.5 Ausblick 15
2.2 Die Programmiersprache JAVA 16
2.2.1 Sprachmerkmale 16
2.2.2 Applets 17
2.2.3 Grafikprogrammierung 17
2.2.4 Umfangreiche Klassenbibliothek 17
2.2.5 JAVA-Softwarepakete 18
KAPITEL 3 Stylesheets und Transformationen 20
3.1 Trennung von Transformation und Formatierung 20
3.2 Die Funktionsweise von XSL.......................................................................................21
3.3 Beispiel 22
3.3.1 Template-Regeln 23
3.3.2 Ausgabe eines Knoteninhalts 23
3.3.3 Transformationsalgorithmus 23
3.4 Anwendungsbereiche von XSLT..................................................................................24
3.5 Bewertung von XSLT 24
KAPITEL 4 Parser 25
4.1 Grundlagen 25
4.1.1 Validierende und nicht-validierende Parser 25
4.1.2 SAX-Parser und DO-MParser 25
4.1.3 Application Programming Interface 26
4.1.4 Apache Xerces-Parser..........................................................................................26
4.2 Simple API for XML (SAX) 27
4.2.1 Allgemeines 27
4.2.2 SAX-Reader 27
4.2.3 Callback-Methoden 28
4.2.4 Bewertung von SAX 33
4.3 Document Object Model (DOM) 34
4.3.1 Grundlagen 34
4.3.2 Definition der Schnittstellen 34
4.3.3 DO-MLevels 35
4.3.4 Baummodell 36
4.3.5 DO-MHauptklassen und Interfaces 37
4.3.6 DO-MParsing-Prozess 38
4.3.7 Bewertung von DOM 39
4.4 JDOM 40
4.4.1 Allgemeines 40
4.4.2 Wichtige JDO-MKlassen 40
4.4.3 Unterschiede zu DOM 41
- 3 -
Evaluation von XML und Java
4.4.4 Ein- und Ausgabemodell von JDOM 42
4.4.5 Typische Anwendungsfälle 44
4.5 Java API for XML Processing (JAXP) 50
4.5.1 Allgemeines 50
4.5.2 Java API for XML Processing Version 1 0 50
4.5.3 Java API for XML Processing Version 1 1 53
4.5.4 Das Paket javax xml transform (TrAX-API) 53
4.6 Java API for XML Binding (JAXB) 57
4.6.1 Allgemeines 57
4.6.2 Unterschiede zwischen JAXP und JAXB 58
4.6.3 Abschließende Bemwerkungen 59
KAPITEL 5 Web Services 60
5.1 Grundlagen 60
5.2 Simple Object Access Protocol (SOAP) 61
5.2.1 Grundlagen 61
5.2.2 Struktur einer SOAP-Nachricht 62
5.2.3 Beispiel für ein SOAP-Request 62
5.2.4 RPC oder Messaging 63
5.2.5 SOAP-APIs 63
5.3 Universal Discovery Description and Integration (UDDI) 65
5.3.1 Grundlagen 65
5.3.2 Java API for XML Registries (JAXR) 66
5.4 Web Services Description Language (WSDL) 67
5.5 Denkbare Einsatzszenarien für Web Services 67
KAPITEL 6 Anwendungsfelder der Kombination Java und XML.................................68
6.1 Eine Anwendung der Extensible Stylesheet Language: Das Web Publishing
Framework Apache Cocoon 68
6.1.1 Einfache Cocoon-Pipeline 68
6.1.2 Typische Cocoon-Pipeline 69
6.1.3 Komplexere Cocoon-Pipeline 70
6.1.4 Komponenten des Cocoon-Frameworks 71
6.1.5 Sitemap 71
6.2 MyChat2Chat-Anwendung 72
6.2.1 Grundlagen 72
6.2.2 Allgemeine Beschreibung des MyChat2-Servlets 73
6.2.3 Implementierungsvarianten des MyChat2-Servlets 78
6.2.4 Transformation 83
KAPITEL 7 Abschließende Bemerkungen 84
7.1 Vorteile der Kombination von Java und XML 84
7.2 Probleme dieser Kombination 85
A Verzeichnisse 86
A 1 Abbildungsverzeichnis 86
A 2 Tabellenverzeichnis 86
A 3 Listingverzeichnis 87
A 4 Literatur- und Quellenverzeichnis 88
B Glossar 90
C Quellcode 92
Erklärung 93
- 4 -
Evaluation von XML und Java
KAPITEL 1
Einleitung
Portierbarkeit von Daten, Portierbarkeit von Code: XML und Java – eine ideale Verbindung
Es gibt wohl keine zwei anderen Technologien, die besser zueinander passen, als XML und Java: Während die Java-Plattform eine sichere und portierbare Anwendungsumgebung zur Verfügung stellt, leistet XML Vergleichbares im Bereich der Daten.
Die XML-Technologie und Java passen gut zueinander, weil sie beide eine wichtige Eigenschaft besitzen: Die Unabhängigkeit von einem bestimmten Betriebssystem. Zusammen ermöglichen diese beiden Technologien eine neue Generation von Web-Anwendungen, welche die Bereiche E-Commerce, Workflow Management und Enterprise Resource Planning (ERP) abdecken. Wann immer ein Austausch von Informationen in einem verteilten EDV- System gebraucht wird, ist die Anwendung der XML- und Java-Technologien die beste Wahl.
1.1 Aufgabenstellung
In dieser Diplomarbeit soll das Zusammenspiel dieser beiden interessanten Technologien betrachtet und bewertet werden. Anhand eines einfachen Chat-Programms soll gezeigt werden, wie XML zur Datenspeicherung eingesetzt werden kann. Das Parsing und die Weiterverarbeitung der Daten übernehmen spezielle Java-APIs. Auf das Thema Serialisierung wird auch am Beispiel der Chat-Anwendung eingegangen.
1.2 Aufbau der Diplomarbeit
Nun möchte ich den Aufbau meiner Diplomarbeit kurz ansprechen:
In einem ersten Teil beschreibe ich die Grundlagen zu den Themen XML und Java, um die Voraussetzungen für das Verständnis der fo lgenden Kapitel zu schaffen.
Daran wird sich ein umfangreicher Abschnitt über das Parsen von XML anschließen. Parsen bedeutet, dass die XML-Daten gelesen und in eine passende programminterne Darstellung umgewandelt werden.
Es folgt ein Kapitel über Web Services, welche das nächste „Große Ding“ in der Informationstechnologie zu werden scheinen. Der Schwerpunkt dieses Kapitels liegt in der Bedeutung von XML für Technologien wie SOAP, UDDI und WSDL.
Im letzten Teil werde ich zwei Beispiele über mögliche Anwendungsfelder der Kombination Java und XML geben. Die praktische Ausarbeitung dieser Diplomarbeit, die MyChat- Anwendung, befindet sich auch in diesem Teil.
Die Diplomarbeit schließt mit den Schlussbemerkungen.
- 5 -
Evaluation von XML und Java
1.3 Das JAX-Pack von SUN
Java wird von Sun als die ideale Plattform für server- und clientseitige XML-Verarbeitung dargestellt. Auch aus diesem Grund liefert Sun zur Bearbeitung von XML-Daten eine Reihe von Java-APIs, das sogenannte JAX-Pack (JAX steht für Java API for XML). Ich werde mich in dieser Diplomarbeit hauptsächlich auf diese APIs konzentrieren.
- 6 -
Evaluation von XML und Java
KAPITEL 2
Grundlagen
In diesem Kapitel betrachte ich die XML- Technologie, sowie die Programmiersprache Java. Beide sind bedeutende Entwicklungen der letzten Jahre, die detailliert vorgestellt werden müssen, bevor auf das Zusammenspiel von XML und Java eingegangen werden kann.
2.1 XML
XML steht für Extensible Markup Language und bedeutet frei übersetzt "erweiterbare Auszeichnungssprache". Erweiterbar bedeutet hier, dass XML keine fixe Sprache, wie beispielsweise HTML ist, sondern eine Metasprache, die zur Beschreibung einer anderen Sprache benutzt wird. Mit XML kann man also eine eigene individuelle markup language definieren, um damit in seinem eigenen Anwendungsgebiet Informationen auszutauschen.
Vereinfacht ausgedrückt, handelt es sich bei XML um ein System von Regeln, anhand derer Informationen gekennzeichnet oder "etikettiert" werden können. XML ist deshalb so wichtig, weil es den Austausch von Informationen vereinfacht und weil es auf syntaktischer Ebene einen branchenübergreifenden Standard bietet, der universell zur Verarbeitung und Verwaltung von Daten eingesetzt werden kann.
Die XML-Spezifikation bietet eine Sammlung verbindlicher Regeln, um sich für den eigenen Bedarf eine HTML-artige Syntax zu definieren. Dokumente in dieser Syntax sind insbesondere leicht auf deren korrekten formalen Einsatz verifizierbar und damit sehr gut für eine automatische Verarbeitung geeignet. Strukturierten Daten kann so eine Form gegeben werden, die sowohl von Menschen als auch von Maschinen "verstanden" werden kann.
Was heißt Metasprache?
Eine Metasprache ist eine formale Sprache zur Erzeugung (Konstruktion, Definition) von anderen Sprachen beliebigen Umfangs. Eine Metasprache bietet Werkzeuge u nd eine normierte Syntax zur Beschreibung von "Grammatiken".
Was heißt markup?
Markup-Sprachen dienen dazu, durch in den Text eingestreute Tags, die automatische Verarbeitung von Texten zu steuern.
Es gibt zwei Arten von Markups [HIN]:
1. Prozedurale Markups sind Befehle zur Steuerung der Verarbeitung (z.B. Zeilenabstand,
Einrücktiefe, etc.). Ein großer Nachteil ist, dass dabei Information über die Rolle eines Objekts verloren geht (z.B. werden Überschriften nur durch Formatanweisungen wie Fettschrift ma rkiert).
- 7 -
Evaluation von XML und Java
2. Deskriptive Markups beschreiben nicht die Verarbeitung, sondern die Struktur und die
Attribute eines Dokuments. Sie sind so allgemein, dass sie von verschiedenen Verarbeitungssystemen eindeutig interpretiert und verschiedene Formatierungen erzeugt werden können. XML- und HTML-Dokumente enthalten deskriptive Markups. Diese heißen auch Generalized Markups.
XML ist ein Abkömmling (genauer gesagt: eine Teilmenge) der Standard Generalized Markup Language (SGML), der Urmutter aller Metasprachen. Im Vergleich zu SGML wurden bei XML die komplexeren und weniger benutzten Komponenten weggelassen, dafür ist XML leichter zu verstehen, leichter zu implementieren und als netzbasiertes Format besser geeignet.
XML wurde 1996 erstmals von einer Arbeitsgruppe des World Wide Web-Konsortiums (W3C) vorgestellt, deren Leitung Jon Bosak, ein Ingenieur der Firma SUN, übernommen hatte. Bosak hatte damals viel mit SGML gearbeitet und erkannte die Notwendigkeit für eine schlankere Metasprache. Er gilt deshalb auch als „Vater von XML“. 1998 wurde XML schließlich vom W3C als Standard verabschiedet [XML].
2.1.1 Dokumentenstruktur von XML
XML-Dokumente bestehen aus einem Vorspann, der nicht mit dem Headbereich eines HTML Dokuments verwechselt werden kann, da er außerhalb des Datenbereichs steht. Danach folgt der Inhalt des Dokuments in Form einer hierarchischen Ordnung der Elemente.
Tabelle 1: Aufbau eines XML-Dokuments
2.1.1.1 Deklaration
Der Prolog beginnt mit der Deklaration, dass es sich um ein XML-Dokument handelt, Informationen über die verwendete Version von XML und dem Hinweis, ob das Dokument autark ist.
Die Syntax sieht zwar aus, wie dies bei Tags mit Attributen der Fall ist, trotzdem handelt es sich hier nicht um Tags, sondern um die XML-Deklaration. Der Prolog kann zwar weggelassen werden, das Dokument ist für die Zukunft jedoch eventuell nicht mehr gültig. (Eine Definition dieses Begriffs befindet sich weiter unten unter dem Stichwort Konformität.)
§ version:
Bisher gibt es nur die Version 1.0, aber die Zukunft könnte auch höhere Versionen
- 8 -
Evaluation von XML und Java
bringen. Für diesen Fall muss die verarbeitende Software wissen, welche konkrete Version von XML verwendet wurde.
§ encoding :
Bei encoding wird der verwendete Zeichensatz angegeben, damit ein Ausgabegerät die Daten mit dem richtigen Zeichensatz darstellen kann. XML-Dokumente verwenden normalerweise den Unicode-Zeichensatz (8 oder 16 bit). Im Beispiel wird UTF-8 verwendet.
§ standalone :
Mit standalone wird angegeben, ob das Dokument für sich selbst steht, in diesem Fall wird "yes" als Attributwert eingetragen. Anderenfalls ist das Dokument über die Definition eines Dokumenttyps syntaktisch festgelegt (standalone="no").
Der Prolog wird durch allenfalls vorhandene Kommentare abgeschlossen. Im Anschluss folgen direkt die eigentlichen XML-Nutzdaten.
2.1.2 Konformität
Im Rahmen von XML wird zwischen wohlgeformten (engl.: well- formed) und gültigen (engl.: valid) Dokumenten unterschieden. Die Begriffe stehen in Bezug auf die korrekte Umsetzung der Spezifikation des W3C zur Erstellung von XML-Dokumenten, auch Konformität genannt. Die Überprüfung auf Gültigkeit und Wohlgeformtheit übernimmt ein Parser. Darauf wird in Kapitel 4 näher eingegangen.
Per Definition müssen alle XML-Dokumente wohlgeformt sein. Voraussetzung dafür ist, dass das Dokument eine Reihe von Regeln einhält:
§ Das Dokument besteht aus einem Prolog und mindestens einem Element.
§ Das gesamte Dokument ist in ein einzelnes Wurzel- Element eingeschlossen.
§ Die einzelnen Elemente sind korrekt ineinander verschachtelt. Wenn sich das Start- Tag eines Elements A im Inhalt eines anderen Elements B befindet, so muss sich auch das End-Tag von A im Inhalt des anderen Elements B befinden.
§
Für jedes Start-Tag muss ein End-Tag existieren. Eine Ausnahme dieser Regel bilden leere Elemente. Das Start- und End-Tag kann hier zu einem einzigen Tag zusammengefasst werden. (Beispiel: das aus HTML bekannte Break- Tag wird zu
).
§ Alle Attribut-Werte stehen in Anführungszeichen.
Gültig ist ein Dokument, wenn es auf eine DTD ausgerichtet wurde und die Vorgaben der DTD einhält. Drei Punkte bestimmen, ob ein XML-Dokument gültig ist, oder nicht:
§ Es handelt sich um ein wohlgeformtes Dokument.
§ Eine zugehörige interne oder externe DTD existiert und ist verfügbar.
§ Das Dokument ist in Bezug auf die in der DTD aufgestellten Regeln gültig.
- 9 -
Evaluation von XML und Java
Abbildung 1: Wohlgeformte und gültige Dokumente
2.1.3 Dokumenttyp
In XML kann jedes Dokument typisiert werden. In einer Dokumenttypdefinition (DTD) legt man die Struktur des Dokuments fest. Eine DTD ist also das Muster für potenziell beliebig viele verwandte Dokumente. Die DTD wird durch den Befehl DOCTYPE eingebunden. Bei einer Einbindung als externe Datei folgt hinter dem Namen des Wurzelknotens die Angabe SYSTEM, danach folgt die URI (Uniform Resource Identifier) der DTD in Anführungszeichen. Bei einer internen Einbindung steht die DTD direkt hinter dem Namen des Wurzelknotens.
Bei einer Einbindung als externe Datei:
Bei einer internen Einbindung:
steht die DTD ...]>
2.1.3.1 Aufbau der DTD
Die Komponenten, oder besser gesagt die Definitionen, die in einer Dokumenttypdefinition auftreten können, sind (aus [BEN]):
Auf diese Komponenten möchte ich nun näher eingehen.
- 10 -
Evaluation von XML und Java
2.1.3.1.1
Der Befehl ELEMENT beschreibt, welche Tags in einem XML Dokument verwendet werden dürfen, welche Struktur die einzelnen Elemente haben und wie oft sie auftreten dürfen.
Die Elementdefinition hat die folgende Form:
name ist der Name des Elements. Hinter diesem befindet sich das Content-Modell des Elements. Es steht grundsätzlich in Klammern und gibt an, welcher Inhalt sich im Element befinden kann.
Folgendes Beispiel beschreibt das Element buch:
Dies bedeutet, dass jedes buch-Element die Elemente titel, autor, verlag enthalten muss. Optional ist inhalt; es können mehrere Autoren vorkommen. Die Definitionen dieser Elemente folgen später mit ihren jeweiligen Content-Modellen und so weiter.
Tabelle 3: DTD-Wiederholungs-Modifier
Wenn ein Element Z eichendaten enthält, wird als sein Content-Modell das Schlüsselwort #PCDATA verwendet. PCDATA steht für parsed character data.
Wenn ein Element immer leer sein soll, wird das Schlüsselwort EMPTY verwendet.
2.1.3.1.2
Jedes Element kann innerhalb eines Tags noch zusätzliche Attribute haben, um das Element genauer zu charakterisieren. Im Prinzip könnte man auch ohne Attribute auskommen, manchmal ist es aber sinnvoll, zusätzliche Informatio n in dieser Form darzustellen. Ein gutes Beispiel hierfür sind die Attribute für Tabellen in HTML. Die gesamte Tabelle hat als mögliches Attribut die Breite, jede einzelne Zelle kann dieses Attribut für sich wiederholen. Immer wenn Informationen spezifisch zu einem Element gehören, ist die Verwendung eines Attributs sinnvoll.
- 11 -
Evaluation von XML und Java
Die Attributliste beschreibt alle Elemente, die später im
> Der Attributtyp kann Folgendes sein:
§ Eine Zeichenkette (Character Data, CDATA) oder
§ eine Zeichenkette, in der nur Ziffern, Buchstaben und einige Zeichen wie Punkt, Doppelpunkt und Bindestrich erlaubt sind (Name Token, NMTOKEN) oder eine durch Leerzeichen getrennte Liste von Name Tokens (NMTOKENS) oder
§ eine Identifikation eines Elements innerhalb des Dokuments (Identification, ID) oder
§ eine Referenzierung von einer Identifikation (Idetification Reference, IDREF) oder eine durch Leerzeichen getrennte Liste vo n Identification References (IDREFS) oder
§ ein Textbaustein (Entity, ENTITY) oder eine durch Leerzeichen getrennte Liste von Entities (ENTITIES) oder
§ eine mit NOTATION eingeleitete Aufzählung (Auswahlliste) oder
§ eine Auswahlliste, wo der Wert aus einer vordefinierten Menge genommen wird. Die einzelnen möglichen Werte werden dabei durch einen senkrechten Strich (|) getrennt.
Beispielsweise könnte man sich zwei Attribute zu einem Element buch vorstellen: Definition in der DTD:
Im XML-Dokument stünde dann:
2.1.3.1.3
Entities sind Textbausteine, die vom einzelnen Zeichen bis zum kompletten externen XML- Dokument reichen können.
Entities können ganz unterschiedlichen Zwecken dienen, wie z.B.:
- 12 -
Evaluation von XML und Java
i) der Ersetzung von mehrfach vorkommenden Zeichenfolgen. ii) der Ersetzung von Sonderzeichen aus anderen Sprachen im Dokument. iii) der modularen Zerlegung eines XML-Dokuments. iv) der modularen Zerlegung einer Dokumenttypdefinition.
i) Ersetzung von Zeichenfolgen
Eine Entity-Definition bezeichnet eine Zeichenfolge und einen Namen für diese. Wird der Entityname durch &entityname; zitiert, so wird er durch die damit bezeichnete Zeichenfolge ersetzt.
Beispiel:
...
ii) Ersetzung von Sonderzeichen
Entities können benutzt werden, um Sonderzeichen aus anderen Sprachen in das Dokument einzufügen. In der Entity-Definition wird der Name der Entity festgelegt und das Zeichen über seine Nummer im ISO Unicode Standard 10646 angegeben. Folgendes Beispiel definiert ein Entity für das °-Zeichen, um eine Temperatur anzugeben.
...
iii) Modulare Zerlegung eines XML-Dokuments
Im Gegensatz zu internen Entities, bei denen der Wert in der Definition auftritt, kann der Wert auch aus einer Datei geholt werden. In diesem Fall spricht man von externen Entities. Bei externen Entities wird mit dem Schlüsselwort SYSTEM auf eine externe Datei verwiesen, deren Inhalt dann als Ersetzung dient.
Beispiel:
Der Vorteil von externen Entities ist, dass sie eine Aufteilung eines Dokuments in mehrere Dateien erlauben. Dies ermöglicht die gleichzeitige Bearbeitung der einzelnen Teile eines Dokuments.
iv) Modulare Zerlegung einer DTD
Zur modularen Zerlegung von Dokumenttypdefinitionen benutzt man so genannte Parameter- Entities. Parameter-Entities können demnach nur in DTDs auftreten. Dies erlaubt dann, DTD-
- 13 -
Evaluation von XML und Java
Teile zu deklarieren, die an mehreren Stellen verwendet werden. Es können dabei keine Namenskonflikte mit allgemeinen Entities auftreten, denn Parameter-Entities werden durch ein Prozentzeichen eingeleitet und auch dadurch referenziert.
Nachfolgendes Beispiel zeigt, wie eine Sequenz (pkw | lkw | motorrad) in einer internen Parameter-Entity gespeichert werden kann. Anstatt diese Sequenz in einer DTD immer wieder zu wiederholen, kann sie referenziert werden.
2.1.3.1.4
Entities, deren Ersetzungstext XML ist, können von einem Parser interpretiert werden; sie heißen deshalb Parsed Entities. Entities, die kein XML sind, z.B. Bilder, Videos, Grafiken, Textverarbeitungsdokumente, können nicht von einem XML-Parser interpretiert werden und heißen deshalb Unparsed Entities. Diesen Entities muss eine Notation zugewiesen werden. Einer XML-Anwendung hilft dies, dann den passenden Prozessor für die jeweilige Notation (Art der Unparsed Entity) zu finden.
Eine Unparsed Entity muss in der Entity-Definition mit dem Schlüsselwort NDATA angezeigt werden, und ein entsprechendes Format muss angegeben werden. Dieser Formatbezeichner ist in einer so genannten NOTATION definiert. Diese Definition verweist in der Regel auf ein Programm, mit dessen Hilfe die Entities verarbeitet werden können.
Beispiel:
2.1.3.1.5 Kommentare
Innerhalb der DTD können außerhalb der anderen Vereinbarungen Kommentare eingefügt werden. Die Kommentare müssen mit enden. Innerhalb eines Kommentars darf kein doppelter Bindestrich stehen. Der Inhalt eines Kommentars wird in keiner Weise ausgewertet und dient nur zur Information.
2.1.4 Namensräume
XML-Namensräume dienen dazu, Namenskonflikte und Mehrdeutigkeiten in XML- Dokumenten zu vermeiden, die Elemente aus zwei (oder mehr) Dokumenttyp-Definitionen (DTD) enthalten. Durch die Bindung an einen Uniform Resource Identifier (URI) werden potentiell mehrdeutige Namen an einen Namensraum gebunden und auf diese Weise identifiziert. Ein Namensraum ist also nichts anderes als eine Sammlung von Namen für Elementtypen und Attribute, die über einen URI eindeutig identifizierbar ist. Namensräume, die in einem XML-Dokument verwendet werden, müssen deklariert werden. Dabei wird einem sogenannten Namensraum-Präfix der URI des Namensraums zugewiesen. Ein Element
- 14 -
Evaluation von XML und Java
oder Attribut aus dem Namensraum wird dann über das Namensraum-Präfix und seinem Namen identifiziert. Das Namensraum-Präfix dient dabei als Abkürzung des URI.
Mit folgendem Beispiel aus [NR] möchte ich den Sinn von Namensräumen verdeutlichen:
Listing 1: Beispiel für XML-Namensräume
Das XML-Dokument enthält neben den Namen und Adressen der Mitarbeiter einer Firma auch die Daten des Computers, mit denen der jeweilige Mitarbeiter arbeitet. Um den Namenskonflikt bezüglich der Elemente
2.1.5 Ausblick
XML wird zwar heute schon vereinzelt eingesetzt, die wahre Explosion wird vermutlich aber erst dann eintreten, wenn einige XML-basierte Sprachen definiert sein werden. So würde eine Sprache für die Finanzbranche es den Banken erlauben, leicht Daten miteinander auszutauschen. Ähnlich würde eine XML-Sprache für das Gesundheitswesen es Ärzten und Krankenhäusern mit proprietären EDV-Systemen ermöglichen, Patientendaten mit Leichtigkeit auszutauschen. Bis es aber soweit ist, kann man trotzdem XML benutzen, um eigene Sprachen zu definieren, um damit effizienter mit seinen Geschäftspartnern zu kommunizieren.
- 15 -
Evaluation von XML und Java
2.2 Die Programmiersprache JAVA
In diesem Abschnitt möchte ich auf die zweite wichtige Technologie dieser Arbeit eingehen, die Programmiersprache Java. Bei all den positiven Eigenschaften, die XML zweifelsohne hat, muss jedoch darauf hingewiesen werden, dass man damit eigentlich noch gar nichts anfangen kann. Erst mit einer Verarbeitungslogik kann der statische Zustand der XML-Daten aufgelöst werden. Und genau an dieser Stelle kommt Java ins Spiel.
2.2.1 Sprachmerkmale
Java ist eine relativ junge Programmiersprache, die von der Firma Sun [SUN] vollständig neu entwickelt wurde. Sie stellt einen Kompromiss dar zwischen den folgenden Anforderungen:
§ Einfachheit und Kompaktheit
§ Objektorientierung, Umsetzung moderner Konzepte
§ Robustheit
§ Sicherheit
§ Plattformunabhängigkeit, Portabilität der Anwendungen
§ Leistung
Die Sprache sollte einfach und leicht erlernbar sein, so dass sich die Programmierung einem möglichst großen Kreis von Menschen erschließt. Java ist eine Weiterentwicklung von C++, wobei hier auf fehlerträchtige Konstrukte und bekannte Fallstricke dieser älteren Sprache verzichtet wurde. Aus diesem Grunde ist der Lernaufwand gerade für C/C++ - Programmierer besonders gering.
Das objektorientierte Programmierparadigma hat sich in der Softwareentwicklung längst durchgesetzt. Im Idealfall erzeugt man mit objektorientierter Programmierung wiederverwendbare Klassen. Ein Satz Klassenbibliotheken für Standardaufgaben wird zur Sprache Java mitgeliefert.
Durch den Verzicht auf die fehlerträchtigen Teile der Sprache C++ und durch die Möglichkeiten eines mächtigen Laufzeitsystems wird Java robust, das heißt die Einhaltung der Programmspezifikation ist leichter zu erreichen und vorhandene Programmierfehler haben weniger katastrophale Auswirkungen.
Java bietet neben der Robustheit durchdachte Sicherheits- und Schutzmechanismen, mit denen sich die Ausführung „gefährlicher“ Anweisungen verhindern lässt.
Fertig kompilierte Java-Programme sind portabel, sie laufen auf vielen verschiedenen Zielmaschinen. Dies wird dadurch ermöglicht, dass diese nicht als Programmcode einer bestimmten Architektur sondern in Form von allgemeinem, sogenanntem Bytecode gespeichert werden. Dieser Bytecode wird dann zur Laufzeit interpretiert.
Bytecode kann natürlich nicht so schnell ausgeführt werden wie nativer Code. Eine Gemeinsamkeit mit XML: Auch hier wird eine höhere Komplexität in Kauf genommen mit der Hoffnung, dass sich dieser Nachteil durch die fortschreitende technische Entwicklung relativiert. Auch optimierende und dynamisch kompilierende Interpreter helfen, sich der Geschwindigkeit nativer Hochsprachenprogramme anzunähern.
- 16 -
Evaluation von XML und Java
2.2.2 Applets
Eine der am meisten gebrauchten Erklärungen für den überraschenden Erfolg von Java ist die enge Verbindung der Sprache zum Internet und zum World Wide Web. Mit Hilfe von Java ist es möglich, Programme zu entwickeln, die über das Web verbreitet und mit Hilfe eines Browsers gestartet werden können.
2.2.3 Grafikprogrammierung
Die Java-Laufzeitbibliothek bietet umfassende grafische Fähigkeiten. Diese sind im wesentlichen plattformunabhängig und können dazu verwendet werden, portable Programme mit GUI-Fähigkeiten auszustatten. Seit der Version 1.2 des JDK werden diese Fähigkeiten unter dem Begriff Java Foundation Classes (kurz JFC) zusammengefasst, deren drei wichtigste Komponenten die folgenden sind (aus [JAV]):
§ Das Abstract Windowing Toolkit (kurz AWT) stellt elementare Grafik- und Fensterfunktionen auf der Basis der auf der jeweiligen Zielmaschine verfügbaren Fähigkeiten zur Verfügung.
§ Das Swing Toolset stellt darüber hinaus eine Reihe zusätzlicher Dialogelemente zur Verfügung und ermöglicht die Konstruktion sehr komplexer grafischer Oberflächen. Mit seinem Pluggable Look-and-Feel bietet es die Möglichkeit, das Look-and-Feel eines Programms zur Laufzeit umzuschalten und den Bedürfnissen des jeweiligen Be nutzers und den Fähigkeiten der Systemumgebung anzupassen.
§ Die dritte wichtige Komponente ist die Java 2D API, welche komplexe Grafikoperationen und Bildbearbeitungsroutinen zur Verfügung stellt.
2.2.4 Umfangreiche Klassenbibliothek
Die Java-Klassenb ibliothek bietet mit einer ganzen Reihe nützlicher Klassen und Interfaces die Möglichkeit, sehr problemnah zu programmieren.
Seit dem JDK 1.1 werden mit jedem Release weitere spezialisierte (und teilweise sehr aufwendige) Bibliotheken zur Verfügung gestellt. So bietet beispielsweise JDBC (Java Database Connectivity) den Zugriff auf relationale Datenbanken, JavaBeans stellt eine portable Komponentenarchitektur zur Verfügung, und mit dem Networking-API, RMI (Remote Method Invocation) und der Java-eigenen CORBA-Implementierung Java IDL (Interface Definition Language) kann unternehmensweit auf Netzwerkressourcen und verteilte Objekte zugegriffen werden. Mit dem Reflection-API kann der Aufbau von Objekten und Klassen zur Laufzeit untersucht und dynamisch darauf zugegriffen werden, und per Serialisierung können Objekte persistent gemacht werden.
Was ist mit dem Begriff Serialisierung gemeint?
Bei der Serialisierung geht darum, ein Java-Objekt, welches im Hauptspeicher existiert, in ein Format zu konvertieren, das es erlaubt, das Objekt in eine Datei zu schreiben oder über eine Netzwerkverbindung zu transportieren. Auf XML bezogen, bezeichnet der Vorgang die
- 17 -
Evaluation von XML und Java
Konvertierung einer Java-Struktur, beispielsweise eines DOM-Baums, in ein wohlgeformtes XML-Dokument in Textformat.
Seit dem JDK 1.2 gibt es in Java eine Bibliothek für Container-Klassen, die Collection-API. Darin enthalten ist beispielsweise die Vector-Klasse. Ein Vector in Java ist eine lineare Liste, die jede Art von Objekt aufnehmen kann und auf deren Ele mente sowohl sequentiell als auch wahlfrei zugegriffen werden kann. Neben Vector gibt es weitere Container-Klassen. So bietet beispielsweise Hashtable die Möglichkeit, Schlüssel-Wert-Paare zusammenhängend zu speichern und bei gegebenem Schlüssel den zugehö rigen Wert effizient wieder aufzufinden. Die Collection-API stellt eine umfassende Sammlung an Interfaces für Container-Klassen zur Verfügung und bietet unterschiedliche Implementierungen für verschiedene Anwendungsfälle. Die API stellt daneben einige Algo rithmen zur Verarbeitung von Containern zur Verfügung (z.B. Sortieren).
Seit der Version 1.4 des Java 2 SDK ist die Java API for XML Processing (JAXP) fester Bestandteil des Development Kits. JAXP werde ich in einem späteren Kapitel besprechen.
2.2.5 JAVA-Softwarepakete
Von der SUN-Website [SUN] können mehrere Softwarepakete herunter geladen werden. Am bekanntesten sind sicherlich das Software Development Kit (SDK) (früher: Java Development Kit) und die Java Runtime Environment (JRE). Darüber hinaus gibt es eine große Anzahl von Paketen, die für spezielle Anwendungsbereiche geeignet sind.
Man kann diese Pakete in zwei Kategorien unterteilen: In der ersten Kategorie befinden sich APIs, die XML-Dokumente direkt manipulieren, in der zweiten solche, die X ML nur beiläufig benutzen. Ich beschränke mich in dieser Arbeit auf die erste Kategorie. Die APIs dieser Kategorie hat SUN zusammengefasst und sie unter dem Namen JAX-Pack veröffentlicht.
2.2.5.1 Java Runtime Environment (JRE)
Da Java-Programme nur im s ogenannten Bytecode (einer Art Java-Maschinensprache) vorliegen, muss für die Ausführung ein Java-Interpreter benutzt werden, der im JRE zu finden ist.
2.2.5.2 Software Development Kit (SDK)
Das (Java)-Software Development Kit stellt die gesamte Java-Umgebung für den Programmierer zur Verfügung. Man braucht ein SDK lediglich dann, wenn man auch selbst Java-Programme entwickeln möchte. Falls ein Development Kit vorhanden ist, braucht man keine separate JRE, um Programme auszuführen, denn das SDK beinhaltet bereits alle Funktionen des JRE.
Die folgende Abbildung verdeutlicht diesen Zusammenhang. Sie zeigt auch die verschiedenen Komponenten des Software Development Kits von Sun:
- 18 -
Evaluation von XML und Java
Abblidung 2: Die Bestandteile der J2SE (Quelle: [SUN])
2.2.5.3 JAX-Pack
JAX steht für Java API for XML. SUN bezeichnet damit eine Reihe von Java-Paketen zur Verarbeitung von XML-Daten. Folgende APIs sind Teil des JAX-Pack:
§ Java API for XML Processing (JAXP)
§ Java API for XML Binding (JAXB)
§ Java API for XML Messaging (JAXM)
§ Java API for XML Registries (JAXR)
§ Java API for XML-based RPC (JAX-RPC)
Im Verlauf dieser Diplomarbeit werde ich auf diese Pakete zu sprechen kommen.
- 19 -
Arbeit zitieren:
Mirko Beutel, 2002, Evaluation von XML und Java, München, GRIN Verlag GmbH
Dieser Text kann über folgende URL aufgerufen und zitiert werden:
Einbetten
DOI
BWL - Marketing, Unternehmenskommunikation, CRM, Marktforschung
Hausarbeit, 19 Seiten
Die Positionierungsstrategie - Inhalt, Bedeutung, Beispiele -
BWL - Marketing, Unternehmenskommunikation, CRM, Marktforschung
Seminararbeit, 28 Seiten
Potentiale der Old Economy durch E-Commerce und daraus resultierende O...
Geowissenschaften / Geographie - Wirtschaftsgeographie
Magisterarbeit, 139 Seiten
Analyse von Web-Services in Wertschöpfungsprozessen, insbesondere Konf...
Informationswissenschaften, Informationsmanagement
Diplomarbeit, 124 Seiten
Mirko Beutel hat den Text Evaluation von XML und Java veröffentlicht
Mirko Beutel hat einen neuen Text hochgeladen
Programming Converged Networks: Call Control in Java, XML, and Parlay/...
John-Luc Bakker, Farooq Anjum, Ravi Jain
Comparative Evaluation of XML Information Retrieval Systems
5th International Workshop of ...
Norbert Fuhr, Mounia Lalmas, Andrew Trotman
0 Kommentare