Jenseits dynamischer Websites

(Auszug aus "Java und XSLT" von Eric M. Burke)

Vermutlich werden Sie bereits ein wenig über Servlets wissen. Im wesentlichen sind das Java-Klassen, die auf der Serverseite laufen und dabei eine hochperformante, portierbare Alternative zu CGI-Skripten darstellen. Java-Servlets sind hervorragend geeignet, um Daten aus einer Datenbank zu holen und daraus XHTML für einen Browser zu erzeugen. Sie sind auch gut zur Verarbeitung von HTTP POST- oder GET-Requests von Browsern, die beispielsweise Online-Buchbestellungen ermöglichen. Wesentlich mächtigere Technologien sind jedoch gefordert, wenn Sie echte Web-Anwendungen erschaffen möchten, und nicht nur simple Web-Sites.

Herausforderungen der Webentwicklung

Verglichen mit graphischen Swing- oder AWT-basierten Anwendungen, kann die Entwicklung von Anwendungen für das Web wesentlich schwieriger sein. Die meisten Schwierigkeiten, denen Sie begegnen werden, können auf einen der folgenden Punkte zurückgeführt werden:

  • Hypertext Transfer Protocol (HTTP)
  • HTML-Beschränkungen
  • Browser-Kompatibilitätsprobleme
  • Parallelverarbeitung

HTTP ist ein ziemlich simples Protokoll, das einem Client ermöglicht, mit einem Server zu kommunizieren. Webbrowser verwenden fast immer HTTP, um mit Webservern zu kommunizieren, obwohl sie andere Protokolle verwenden können, beispielsweise HTTPS für verschlüsselte Kommunikation oder sogar FTP für Datei-Downloads. HTTP ist ein Anfrage-Antwort-Protokoll, bei dem der Browser die Anfrage stellen muß. Jedesmal wenn Sie auf einen Hyperlink klicken, stellt der Browser eine neue Anfrage an den Webserver. Der Server verarbeitet die Anfrage und sendet eine Antwort, mit der er den Datenaustausch beendet.

Dieser Anfrage-Antwort-Zyklus ist leicht verständlich, macht es aber mühselig, eine Anwendung zu entwickeln, die Statusinformationen verwaltet, während der Benutzer durch eine komplexe Webanwendung navigiert. Wenn beispielsweise ein Benutzer Artikel in einen Warenkorb legt, muß ein Servlet die Daten irgendwo abspeichern, während es darauf wartet, daß der Client eine neue Anfrage sendet. Wenn diese Anfrage ankommt, muß das Servlet die Beziehung zwischen einem Warenkorb und dem anfragenden Client herstellen, denn das Servlet könnte es ja mit hunderten oder tausenden gleichzeitig anfragenden Clients zu tun haben. Ohne einen Timeout festzulegen kann das Servlet auch nicht feststellen, wenn der Client seinen Warenkorb einfach »stehen läßt« und beispielsweise zu einer Website der Konkurrenz wechselt. Das HTTP-Protokoll macht es dem Server unmöglich, eine Konversation mit dem Client zu starten, weswegen das Servlet den Client nicht einfach periodisch anpingen kann, wie es in einer »normalen« Client-Server-Anwendung der Fall wäre.

HTML selbst kann ein weiteres Hindernis für die Anwendungsentwicklung im Web sein. Es wurde nicht entwickelt, um mit umfangreich ausgestatteten GUI-Toolkits mitzuhalten, dennoch fordern Kunden zunehmend, daß Anwendungen »webfähig« werden. Dies stellt eine signifikante Herausforderung dar, denn HTML bietet nur einen kleinen Satz primitiver GUI-Komponenten. Die Erstellung von hochentwickeltem HTML ist natürlich nicht das Thema dieses Buches, aber wir werden sehen, wie man mit XSLT den Code zur HTML-Generierung von der zugrundeliegenden Programmlogik und dem Servlet-Code trennen kann. Mit wachsender Komplexität von HTML werden die Vorzüge einer klaren Trennung immer offensichtlicher.

Wahrscheinlich werden Sie sehr gut wissen, daß die gängigen Webbrowser untereinander nicht vollständig kompatibel sind. Für Web-Anwendungsentwickler heißt das generell, daß auf einer Vielzahl von Plattformen getestet werden muß. XSLT bietet hier Unterstützung an, denn Sie können wiederverwendbare Stylesheets für die gleichbleibenden HTML-Teile schreiben und browserspezifische Stylesheet-Fragmente importieren oder einbinden, um sich an den Browser-Inkompatibilitäten vorbeizuarbeiten. Natürlich bleiben die XML-Daten und die Programmlogik für alle Browser gleich, auch wenn Sie mehrere Stylesheets einsetzen.

Zu guter Letzt haben wir das Thema »Parallelverarbeitung«. Im Servlet-Modell muß ein einzelnes Servlet verschiedene, gleichzeitige Anfragen bearbeiten können. Obwohl man Zugriffe auf ein Servlet explizit synchronisieren kann, resultiert das oftmals in Performance-Verlusten, da die einzelnen Anfragen dann »Schlange stehen« und auf ihren Abruf warten. Die Parallelverarbeitung von Anfragen wird ein wichtiger Teil unseres XSLT-basierten Servlet-Designs in späteren Kapiteln sein.

Webanwendungen

Der Unterschied zwischen einer »Website« und einer » Webanwendung« ist subjektiver Natur. Obwohl einige der Technologien dieselben sind, sind Webanwendungen meist reicher an interaktiven Elementen und damit schwieriger zu erstellen als typische Websites. Websites dienen beispielsweise meistens nur der Darstellung von Informationen und bieten nur gelegentlich Formulare an, mit denen auch Informationen versandt werden können. Hier reichen einfache Technologien, wie HTML in Verbindung mit einfachen CGI-Programmen, vollkommen aus. Eine Webanwendung andererseits ist typischerweise eine benutzerdefinierte Anwendung, erstellt in der Absicht, eine spezielle geschäftliche oder technische Funktion zu übernehmen. Webanwendungen werden oft als Ersatz für bestehende Systeme geschrieben, mit dem Ziel, den Zugriff mit einem Webbrowser zu ermöglichen. Wenn existierende Systeme ersetzt werden, wird von den Entwicklern oft gefordert, die existierende Funktionalität in HTML für die Verwendung mit einem Webbrowser zu duplizieren. Das gestaltet sich jedoch außerordentlich schwierig, denn die Möglichkeiten, mit HTML ein GUI zu bilden, sind äußerst begrenzt. Die meisten Bildschirmansichten in einer Webanwendung werden dynamisch generiert und für jeden Nutzer angepaßt, während der Großteil der Seiten einer Website statisch ist.

Java, XML und XSLT sind aufgrund ihrer größeren Modulariät für Webanwendungen geeignet. Während ein Programmierer den Code für den Backend-Datenzugriff entwickelt, kann ein Screendesigner an der HTML-Benutzeroberfläche arbeiten. Ein weiterer Servlet-Experte kann am webseitigen Teil der Anwendung arbeiten, während jemand anders die XML-Daten definiert und erstellt. Programmierer und Screendesigner werden typischerweise zusammen die XSLT-Stylesheets definieren, obwohl das Fehlen von diesbezüglichen, interaktiven Tools das Ganze mehr zu einer Programmieraufgabe werden läßt.

Einen weitereren Grund, warum XML für Webanwendungen so geeignet ist, liefert seine Fähigkeit, mit Business-Systemen und Datenbanken zusammenzuarbeiten. Ist eine XML-Schicht einmal dem für den Datenzugriff zuständigen Teil hinzugefügt, kann der webseitige Teil Daten in XML-Form entnehmen, egal welches Betriebssystem oder welche Hardware-Plattform verwendet wird. XSLT kann XML dann ohne viel benutzerdefinierten Code nach HTML umwandeln und Ihrem Entwicklerteam eine Menge Arbeit sparen.

Nicht-Browser-Clients

Während Websites hauptsächlich HTML an Browser liefern, könnte an eine Webanwendung die Anforderung bestehen, mit Anwendungen anstelle von Browsern zu kommunizieren. Innerhalb des Unternehmens ist es gang und gäbe, detailgespickte graphische Swing-Clients anzubieten, während externe Arbeiter über eine XHTML-Bedienoberfläche in einem Browser auf das System zugreifen. In dieser Umgebung läuft alles auf eine XML-Lösung hinaus, denn die XML-Rohdaten können an den Swing-Client gesendet werden, und mittels XSLT können XHTML-Ansichten derselben Daten generiert werden.

Wenn Ihr XML nicht im korrekten Format vorliegt, kann XSLT auch eingesetzt werden, um es in eine andere XML-Variante zu transformieren. Beipielsweise könnte eine Clientanwendung die folgende Form erwarten:

<name>Eric Burke</name>

Aber die XML-Daten aus dem Web liegen wie folgt vor:

<vorname>Eric</vorname><nachname>Burke</nachname>

In diesem Fall kann XSLT die XML-Daten in die vom Client erwartete, vereinfachte Form umwandeln.

SOAP

XML als Rohdaten an die Clients zu versenden ist eine gute Methode, weil sie mit jedem Betriebssystem, jeder Hardware-Plattform und jeder Programmiersprache funktioniert. Erlaubt man Visual Basic-Clients, XML-Daten aus einer Webanwendung zu entnehmen, kann die existierende Clientsoftware unverändert bestehen bleiben, während der Fernzugriff auf die Unternehmensdaten mit einer besser portierbaren Lösung z.B. in Java realisiert wird. Die Definition eines benutzerspezifischen XML-Formats ist jedoch mühselig, weil es erfordert, daß Sie den Code zur En- und Decodierung der Nachrichten zwischen Client und Webanwendung selbst schreiben.

Das Simple Object Access Protocol (SOAP) ist ein standardisiertes Protokoll zum Datenaustausch mittels XML-Nachrichten. SOAP wurde ursprünglich von Microsoft eingeführt, dann aber zur Standardisierung an das W3C übergeben und inzwischen von vielen Firmen angenommen. SOAP ist recht einfach aufgebaut und erlaubt Anbietern so, schnell Hilfsmittel zur Vereinfachung des Datenaustauschs zwischen Webanwendungen und jeder Art von Client zu erstellen.

Da SOAP-Nachrichten unter Verwendung von XML implementiert sind, können sie mit XSLT-Stylesheets erstellt und modifiziert werden. Das bedeutet, daß Daten als XML aus einer relationalen Datenbank geholt, mit XSLT in eine Standard-SOAP-Nachricht umgewandelt und dann an eine in beliebiger Sprache erstellte Clientanwendung ausgeliefert werden können. Für mehr Informationen zum Stand der Dinge der SOAP-Standardisierung werfen Sie einen Blick auf: SOAP Specifications.

Drahtlose Anwendungen

Handys, persönliche digitale Assistenten (PDAs) und andere mobile Geräte scheinen ganz groß im Kommen zu sein. Aus Marketingsicht ist es nicht abschließend geklärt, wie sich das Geschäftsmodell des Webs in die drahtlose Welt übersetzen läßt. Es ist ebenfalls unklar, welche Technologien für diese neue Gerätegeneration genutzt werden. Eine gegenwärtig sehr populäre Technologie ist WAP (Wireless Application Protocol), das eine XML-Auszeichnungssprache mit Namen WML (Wireless Markup Language) einsetzt, um Seiten darzustellen. Andere Sprachen sind vorgeschlagen, so beispielsweise CHTML (Compact HTML), aber die wahrscheinlich vielversprechendste Aussicht auf Erfolg hat XHTML Basic. Es wird vom W3C unterstützt und basiert im wesentlichen auf verschiedenen XHTML-Modulen. Seine Designer hatten das Glück, durch das zeitliche Erscheinen nach WML auf dessen Konzepte und die Erfahrung damit aufbauen zu können.

Da die zukünftigen Entwicklungen im Bereich der drahtlosen Anwendungen zur Zeit noch nicht abzusehen sind, ist die Verwendung von XML und XSLT der derzeit gängigste Ansatz. Die XML-Kodierung Ihrer Daten bietet die Flexibilität, jegliche Auszeichnungssprache oder jegliches Protokoll im Client zu unterstützen, möglichst ohne große Stücke von Java-Code neu zu schreiben. Stattdessen werden neue XSLT-Stylesheets zur Unterstützung neuer Geräte und Protokolle geschrieben. Ein zusätzlicher Vorteil von XSLT ist seine Fähigkeit, sowohl traditionelle Browserclients als auch neuere, mobile Clients mit denselben zugrundeliegenden XML-Daten und derselben Java-Programmlogik zu bedienen.

   

<< zurück vor >>

 

 

 

Tipp der data2type-Redaktion:
Zum Thema Java & XSLT bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

Copyright © 2002 O'Reilly Verlag GmbH & Co. KG
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "Java und XSLT" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

O’Reilly Verlag GmbH & Co. KG, Balthasarstraße 81, 50670 Köln, kommentar(at)oreilly.de