URL dieses Artikels:

zu Ausgabe: 05.2002
Attack of the Web Services
Die Early Access Release des WebService Developer Pack im Detail
von Andreas Holubek
Betrachtet man sich zur Zeit die IT-Gemeinde, kommt man um die WebServices nicht mehr herum. Jede Sprache und jedes System, sei es .NET, Java etc., versucht mit der bestmöglichen Implementierung aufzutrumpfen. Natürlich könnten wir uns an dieser Stelle fragen, wie die theoretisch optimale Lösung beschaffen sein sollte, aber für heute werden wir dem neuen Hype ein Stück in die reale Java-Welt folgen.

Pünktlich zur Java SE Version 1.4 liegt auch das Java Web Services Developer Pack (JWSDP) in einer ersten Version vor. Schon beim Download [1] oder der Installation wird einem die Dimension deutlich. So entpacken sich die ca. 26 MByte großen Installationsfiles auch auf 53 MByte Festplatte. Spätestens hier erahnt man zum ersten Mal, dass es sich wohl nicht um ein weiteres Standard API oder eine Sammlung von Bibliotheken handelt. Es handelt sich tatsächlich um eine vollständige Entwicklungsumgebung für WebServices und für dynamische Web-Inhalte. Abbildung 1 zeigt einen Überblick über die Bestandteile.


Abb. 1: Bestandteile des JWSDP

Betrachtet man sich den Inhalt genauer, fällt als Erstes sicherlich ein alter Bekannter - das XML-Pack - auf. Damit fängt aber auch die Verwirrung an. Leider wird nicht das XML-Pack als Ganzes mit hineingenommen (Fall, Winter, ... - 01 Release), sondern die einzelnen APIs werden speziell aufgezählt. Da aber derzeitig noch alle Versionsnummern synchron sind, bleibt zu hoffen, dass es sich lediglich um eine Ausschmückung der Inhalte im JWSDP handelt. Im Folgenden werden die einzelnen APIs des XML-Packs etwas genauer vorgestellt.

JavaTM API for XML Messaging ("JAXM") 1.0 EA 1
Das Java API for Messaging (JAXM) definiert einen Standard für Nachrichten und deren Austausch zwischen verschiedenen Systemen auf Basis von XML. Dabei wird das genaue Format der Nachricht und die möglichen Protokolle offen gelassen. Mögliche Formate sind zum Beispiel SOAP oder auch ebXML. Folgende Ziele werden mit JAXM verfolgt:
  • Unterstützung für Standard-Nachrichtenformate und Adressen

  • Sichere Auslieferung von Nachrichten, Verfolgung des Weges einer Nachricht

  • Unterstützung für Nachrichtentemplates

  • Definition der zu nutzenden Datentypen und Formate

  • Definition von Zugriffskontrolle, Sicherheitsmechanismen sowie Authentifikation und Autorisation

JavaTM API for XML Processing ("JAXP") 1.2 EA 1 (with XML-Schema support)
Das Java API for XML Parsing (JAXP) ermöglicht den Zugriff auf beliebige XML-Dokumente mittels DOM (Document Object Model), SAX (Simple API for XML) und XSLT (XSL Transformations). Anwendungen können die beliebigsten XML-Inhalte lesen, verändern und transformieren und im Anschluss weiterleiten oder abspeichern. Ein großer Vorteil des API ist die Möglichkeit, den XML-Prozessor dynamisch zu wechseln. Entwickler haben somit die Möglichkeit, sich aus der Menge der vorhandenen XML-Prozessor- Implementierungen den jeweils geeigneten heraussuchen zu können (Geschwindigkeit, Speicherverbrauch etc.) ohne den Anwendungscode zu ändern. Die aktuelle Release JAXP 1.1 enthält die aktuelle SAX-2 und DOM Level-2 Technologie sowie ein XSLT Framework basierend auf TrAX (Transformation API for XML).

JavaTM API for XML Registries ("JAXR") 1.0 EA 1
Das Java API for XML Registries (JAXR) [7] definiert einen Standard für den Zugriff auf XML Registries. Obwohl es dem JNDI-Mechanismus sehr ähnlich ist, wird es in den Anforderungen speziell Rücksicht auf XML nehmen. Der anfängliche Support sieht die Unterstützung von ebXML Registries und UDDI vor. Das JAXR API ermöglicht somit den Zugriff auf die verschiedensten Informationen rund um Dokumentstandards, Firmen und Organisationen, es ermöglicht aber auch die gemeinsame Nutzung von Web Services. Der Zugriff auf die Registry kann dabei sowohl lokal als auch über das Internet erfolgen.

JavaTM API for XML-based RPC ("JAX-RPC") 1.0 EA 1
Das Java API for Remote Procedure Call (JAX-RPC) [3] wird ein Framework zur Verfügung stellen, welches die Kommunikation zwischen zwei Systemen (zum Beispiel zwei Anwendungen auf verschiedenen Computern) ermöglicht. Ein Methodenaufruf wird in ein XML-Packet umgewandelt und zum Empfänger geleitet. JAX-RPC wird den Export von WSDL (Web Services Description Language) basierten Dokumenten unterstützen. Obwohl die Nähe zu XML vermuten lässt, dass auch andere Sprachen verwendet werden können, ist jedoch vorerst die Unterstützung von Java geplant.

JavaServer PagesTM Standard Tag Library ("JSTL") 1.0 EA 3
Ein wichtiger Bestandteil des JWSDP ist die Integration der Standard Tag Library aus dem Jakarta-Projekt. Diese Tag Library trennt die Programmlogik aus einer JSP-Seite heraus. Web Designer können somit ohne Java Code anspruchsvolle Seiten gestalten. Das Hauptziel der Standard Tag Library ist die Bereitstellung einer Script- freien Umgebung für den Designer. In der verfügbaren EA3 Version wird die Basis für die zukünftige Bibliothek gelegt. So sind neben den verschiedenen Iterator-Tags auch Elemente zur Bearbeitung von XML, zur Lokalisierung von Seiten und zum Datenbankzugriff via. JDBC enthalten.

Ant Build Tool 1.4.1
Ant ist ein make-ähnliches Tool. Die Prozesse, die zur Herstellung und Wartung einer Anwendung beitragen, werden in einem zentralen XML Script abgelegt. Im Gegensatz zu anderen Make-Philosophien wird bei Ant auf die Nutzung von Shell-Kommandos verzichtet. Die Erweiterungen werden durch Java-Klassen hinzugefügt. Das hat einerseits den Nachteil, dass einige mächtige Kommandos nicht zur Verfügung stehen (grep, find etc.), andererseits aber den Vorteil, dass unter allen Betriebssystemen die von Java gewohnte Kompatibilität genutzt werden kann.

Java WSDP Registry Server 1.0 EA 1
Ein Registry Service stellt einen Mechanismus zum Finden und Erkennen von Web-Services zur Verfügung. Der im Java WSDP enthaltene Registry Server implementiert die Version 1 des Universal Description-, Discovery- and Integration (UDDI)-Projektes. Er stellt eine UDDI-kompatible Registry für Web-Services in einem privaten Umfeld bereit. Primär ist er jedoch als Testumgebung (Test-Registry) für die Web-Service-Entwicklung gedacht. So kann er genutzt werden, um Anwendungen zu testen, welche das Java API for XML Registries (JAXR) nutzen. Im JSWDP ist zusätzlich ein Registry-Browser für Testzwecke enthalten. Informationen, welche in der Registry abgelegt sind, werden in einem Repository gespeichert. Das Repository für den JWSDP Registry Server ist die XML-Datenbank Xindice, welche Teil des Apache XML- Projektes ist.

Tomcat JavaTM Servlet und JavaServer PagesTM container 4.1-dev
Das Herzstück des Java Web Services Developer Pack ist die Tomcat Servlet- und JSP-Engine. In der Beschreibung wird hier zwar die Versionsbezeichnung 4.1-dev gewählt, jedoch ist der verwendete Tomcat weitestgehend mit der unter [2] erhältlichen Version identisch. Die verwendete Version unterstützt dann auch die neuesten Standards, wie JSP 1.2 und Servlet 1.3 API. Zu beachten ist allerdings, dass es sich nicht um einen vollständigen Tomcat handelt, zum Beispiel sind die Web-Server-Connectors für eine Verbindung zum Apache Web-Server nicht enthalten.

Offene Fragen und Offene Antworten
Mehr als bei anderen Bibliotheken oder Entwickler-Kits bleiben beim Java Web Services Developer Kit Fragen offen. Die Java Architecture for XML Binding (JAXB) befindet sich schon seit längerem in einem Early Access- Stadium, hat es aber bis heute weder in das XML-Pack noch ins JWSDP geschafft, obwohl das performante Lesen und Schreiben von XML-Dokumenten in und aus einer Objektstruktur nicht unterschätzt werden darf. Das zweite wichtige API betrifft die JavaServer Faces. Einmal fertiggestellt, werden die JavaServer Faces die Entwicklung von Webanwendungen deutlich positiv beeinflussen. Genau wie heute Clientanwendungen auf ein reiches Angebot an GUI-Komponenten zugreifen können (Swing), wird das in Zukunft auch für Web-Forms möglich sein. Mit der Standard Tag Library (JSTL) wurde ein erster Schritt getan, diese kann aber nicht an die Idee hinter dem JSR-127 (JavaServer Faces) heranreichen. Hier hat wahrscheinlich der Zeitplan für das JWSDP einen Strich durch die Rechnung gemacht. Ein anderer offener Punkt wird gern als Versionshölle' bezeichnet. So befindet sich ein XML Parser derzeitig in dem J2SE ab 1.4, dem XML Pack, dem Java Web Services Developer Pack, vielen J2EE- Implementierungen und vielen Client-Programmen, die noch vor Java 1.4 entwickelt worden sind, um nur einige zu nennen. Wenn jetzt Bug-Fixes, Erweiterungen etc. am Parser durchgeführt werden, ist es für den Entwickler nicht mehr ganz so einfach, diese neuen Archive einzuspielen (verschiedene Parser können jedoch über Umgebungseinstellungen bekannt gemacht werden - aber nur wenn diese verschiedene Namen haben). So ist im J2SE 1.4 der JAXP 1.1 (JSR-63) enthalten, im XML- und Web Services Pack jedoch schon JAXP 1.2EA. Eine geeignete Lösungsstrategie muss noch diskutiert werden.

Das Tutorial
Gut gelungen ist das zum JWSDP erhältliche Tutorial. Ein Doppelklick auf das bereitgestellte PDF-Dokument mit über 500 Seiten präsentiert eine unglaubliche Menge an Informationen. Parallel dazu existiert ein umfangreiches HTML-Dokumentationsset. Viele Beispiele demonstrieren sehr anschaulich die Nutzung von Web-Services in der Praxis. Wie wäre es zum Beispiel mal mit einem Übersetzungs-Service in ihrer Anwendung (siehe Abb. 2)?


Abb. 2: Nutzung des Altavista babelfish translation service

Fazit
Das Java Web Services Developer Pack in der Early Access Release macht schon einen sehr guten Eindruck. Man hat nicht das Gefühl, das hier nur einfach ein paar APIs kombiniert wurden, sondern mit Tutorial, Tomcat und Beispielen wird hier ein ordentliches Ergebnis präsentiert. Schöner wäre es natürlich mit integriertem JAXB oder den JavaServer Faces, aber so bleibt noch etwas für die nächsten Versionen offen. Positiv ist vor allem, dass die Suche nach den APIs für eine Web-Entwicklung ein Ende hat. Wenn ein Web-Service oder ein dynamischer Inhalt entwickelt werden sollen, kann man hier nach der Installation sofort loslegen und hat eine definierte Ausgangsbasis.

Links und Literatur
[1] java.sun.com/webservices/ - Java Technology und Web Services [2] jakarta.apache.org/ - Jakarta Tomcat

© 2004 Software & Support Verlag GmbH. Vervielfältigung nur mit Genehmigung des Verlags. Fragen?