Ajax verleiht Web-Anwendungen Flügel

01.03.2006
Von   
Bernhard Steppan arbeitet als IT-Chefarchitekt bei DB Systel GmbH (Deutsche Bahn) in Frankfurt am Main. Er hat 100+ Artikel und zahlreiche Bücher über C++ und Java verfasst. Er betreibt mehrere Blogs, unter anderem http://steppan.net, http://artouro.org und http://tourbine.com
Hinter der Fassade vieler Websites findet unter dem Namen "Ajax" eine Revolution statt. Mit Hilfe der Technik lassen sich die Seiten deutlich beschleunigen und so ergonomisch wie Desktop-Anwendungen bedienen.
Ajax setzt auf asynchrone Datenkommunikation.
Ajax setzt auf asynchrone Datenkommunikation.

Eigentlich sind klassische Web-Anwendungen schon lange anachronistisch. Im Gegensatz zu Desktop-Anwendungen müssen sie ihre HTML-Seiten bei jeder Anfrage stets komplett neu aufbauen. Sie sind daher meist zäh zu bedienen und verursachen überflüssige Netzwerklast. Sie flackern bei jedem Bildschirmaufbau und geben dem Benutzer schon dadurch nicht das Gefühl, mit einer zeitgemäßen Web-Anwendung zu arbeiten. Aber die Ära konventioneller Web-Seiten neigt sich dem Ende zu.

Ajax im Überblick

-- Beschleunigt Web-Anwendungen;

- vereinfacht es, Fehl- eingaben der Anwender abzufangen;

- verhindert, dass Seiten stets komplett neu geladen werden müssen;

- Programmierung wird durch viele Frameworks unterstützt.

- Läuft nur mit modernen Web-Browsern;

- setzt Javascript-fähige Browser voraus.

Literatur und Links

• Garrett, Jesse James: Ajax - A New Approach to Web Applications http://www.adaptivepath.com/publications/essays/ archives/000385.php/

• Mauerer, Jürgen: Ajax und Asp.net; http://www.microsoft.com/germany/msdn/library/web/ AJAXUndASPNET.mspx

• Dojo - DojoToolkit.org; http://www.dojotoolkit.org/

• Ajax Test Page: http://smirnov.org.ru/myfaces-ajax/ajax.jsf

• Murray, Greg: http://java.sun.com/developer/technicalArticles/J2EE/AJAX/Ajax with Java 2 Platform, Enterprise Edition

• Open Ajax soll AJAX populärer machen, http://www.computerwoche.de/produkte_technik/software/571671

• The AJAX Toolkit Framework (ATF) Project: http://www.eclipse.org/proposals/atf/

Ajax und Eclipse

Auch das Eclipse-Projekt, das schon viele Frameworks konsolidierte, hat sich des Themas Ajax angenommen. Im Rahmen einer Ajax-Initia- tive wollen neben IBM auch andere Firmen wie Bea, Borland und die Dojo Foundation den zersplitterten Ajax-Markt wieder ordnen. Für den Entwickler, der mit Eclipse arbeitet, bedeutet das, dass er wahrscheinlich bald mit einer Erweiterung des Eclipse-Projekts Web Tools Platform (WTP) und einer besseren Ajax-Unter-

stützung innerhalb der Entwicklungsumgebung rechnen kann.

Glossar

• Asynchrone Datenübertragung: Die Datenübertragung verläuft ungleichmäßig ohne Taktsignal, aber mit Hilfe von Steuersignalen, die den Anfang und das Ende einer Kommunikation festlegen. Während sich bei der synchronen Kommunikation einer Web-Anwendung Browser und Server im Takt befinden, verläuft die asynchronen Kommunikation mit einem zeitlichen Versatz.

nDOM: DOM ist eine Abkürzung für das (XML) Document Object Model. Es beschreibt eine Standardschnittstelle für den objektorientierten Zugriff und die Manipulation von XML-Daten zum Beispiel für die Verwendung von einer OO-Sprache wie Java aus.

nJ2EE: J2EE steht für Java 2 Enterprise Edition und ist eine von Sun Microsystems initiierte Sammlung von Java-Frameworks zur Entwicklung Server-seitiger Java-Anwendungen. Im Wesentlichen sind dies Enterprise Javabeans (EJBs), Servlets, Java Server Pages und JDBC.

nJSF:Java Server Faces (JSF) ist ein Java-Framework für die Server-seitige Programmierung von Web-Anwendungen. Es erleichtert die Trennung und Synchronisation von einem Datenpool (Model) und mehreren Ansichten (Views) bei Web-Anwendungen.

nJSP:JSP bedeutet Java Server Pages und ist eine Java-Technik zur Erzeugung dynamischer Web-Seiten. Im Gegensatz zu Servlets trennen JSPs Präsentation und Logik relativ sauber.

nSynchrone Datenübertragung:Diese Form der Datenübertragung verläuft gleichmäßig mit Hilfe eines Taktsignals. Bei einer Web-Anwendung bedeutet das, dass Browser und Server mit der gleichen Taktfrequenz kommunizieren.

nWTP:Das Eclipse-Projekt Web Tools Platform erweitert Eclipse um die Funktionen zur Programmierung von J2EE-Server-Anwendungen. Darunter fallen sowohl Datenbankanwendungen als auch Servlets.

Fazit

Ajax erlaubt es, auf Basis von Standardtechniken Web-Anwendungen zu entwickeln, die erstmals agilen Desktop-Anwendungen Paroli bieten können. Die Web-Technik ist derzeit eines der wichtigsten Verfahren, um lahmen Web-Anwendungen Flügel zu verleihen.

Techniken neu kombiniert

Zu dieser Entwicklung hat eine Reihe von Techniken rund um Javascript beigetragen, mit deren Hilfe eine neue Generation von agilen, ergonomischen Web-Anwendungen entsteht. Sie können ähnlich komfortabel bedient werden wie Desktop-Programme, bauen auf Standards auf und kommen daher beispielsweise im Gegensatz zu Flash ohne spezielle Plug-ins für den Browser aus. Eine der neuen Technologien, mit denen man Web-Anwendungen auf die Sprünge helfen kann, ist im vergangenen Jahr unter dem Namen des griechischen Sagenhelden Ajax populär geworden.

Damals veröffentlichte Jesse James Garrett einen Artikel über die Verwendung von A_synchronem J_avascript sowie X_ML und nannte die Neuschöpfung Ajax. Diese Kombination ist im Grunde nichts Neues, sondern vereint lediglich eine Rei- he bekannter Technologien wie das Document Object Model (DOM), Javascript und XML. Web-Seiten, die mit dieser Art von Datenübertragung arbeiten, können Eingaben umgehend überprüfen und Teile einer Web-Seite im Hintergrund automatisch aktualisieren. Damit stellen sie jede konventionelle Web-Anwendung in den Schatten.

Das große Problem klassischer Web-Anwendungen ist, dass sie ihre Daten synchron übertragen: Wenn ein Anwender beispielsweise eine Bestellung zusammengestellt hat und die Transaktion mit der Eingabe seiner Zahlungsinformationen abschließen möchte, passiert folgendes: Der Browser sendet eine Anforderung (HTTP-Request) an den Web-Server. Dieser empfängt die Nachricht, wertet die darin enthaltenen Zahlungsinformationen aus und schickt beispielsweise eine Fehlermeldung mitsamt einer kompletten Seite mit den Eingaben wieder an den Browser zurück. Danach beginnt der Vorgang mit der Korrektur der Daten erneut, bis diese gültig sind.

Javascript im Hintergrund

Um solche langatmigen Aktionen abzukürzen und viele Fehleingaben schon im Ansatz auszusieben, lassen sich für Standardfälle wie die Plausibilisierung einer Kreditkartennummer kleine Javascript-Programme einsetzen. Dabei überträgt der Web-Server eine Internet-Seite, die mit einem Javascript-Validator versehen ist. Gibt der Benutzer beispielsweise seine Visa-Kreditkartennummer ein, prüft die Seite vor dem Absenden mit Hilfe dieses Javascript-Programms, ob die Nummer überhaupt dem gängigen Format des speziellen Kartenanbieters entspricht. Ist das nicht der Fall, erfolgt unmittelbar eine Fehlermeldung, ohne dass eine Web-Server-Kommunikation notwendig wäre.

Das gerade beschriebene Javascript-Verfahren ist eine der Hauptideen, auf denen Ajax aufsetzt: Auch hier lädt der Browser statt einer konventionellen, vollkommen statischen Seite eine solche, in der Programmlogik in Form eines speziellen Javascripts eingebettet ist. Dieses Programm ist aber deutlich mächtiger als der vorher beschriebene einfache Validator und nennt sich demzufolge auch Ajax-Engine. Die Ajax-Engine wird in einem versteckten Rahmen der Web-Seite untergebracht und ist nicht nur für Ad-hoc-Validierungen, sondern auch für eine neue Art der Kommunikation zwischen Web-Browser und Web-Server verantwortlich.

Während normalerweise jede Aktion eines Anwenders einen HTTP-Request zur Folge hat, zügelt die Ajax-Engine dieses langatmige und ressourcenfressende Verhalten. Sie entscheidet autark, ob eine solche Server-Anfrage überhaupt notwendig ist oder eine Aktion der Ajax-Engine ausreicht. Der Clou an diesem Verfahren ist nicht nur, dass damit die Leitungen und der Web-Server wie beim vorher beschriebenen Validator geschont werden. Diese Methode hat auch den großen Vorteil, dass sie Daten im Hintergrund nachladen kann, während sich der Anwender noch mit weiteren Eingaben auf der Seite beschäftigt.

Kontinuierliche Kommunikation

Um Daten dynamisch vom Web-Server nachzuladen, setzt Ajax auf eine Datenschnittstelle namens "XMLHttpRequest". Diese XML-Schnittstelle geht ursprünglich auf Microsoft zurück und fand im Internet Explorer 5 erstmals Verwendung. Sie verleiht Ajax die Fähigkeit, asynchron XML-Daten vom Web- Server anzufordern, ohne dass dazu die Seite komplett neu aufgebaut werden muss. Die Kommunikation verläuft hier nicht mehr in starren Intervallen, in denen ein Partner agiert und der andere auf ihn wartet. Stattdessen können beide Teile asynchron agieren - der Datenfluss erfolgt nach Bedarf nahezu kontinuierlich und nicht sprunghaft wie bei konventionellen Anwendungen.

Datenaustausch

Die XML-Daten, die der Browser vom Server via XML HTTP Request erhält, nutzt die Ajax-Engine dazu, nur die Teile einer Web-Seite zu aktualisieren, deren Austausch erforderlich ist. Um herauszufinden, welche das sind, bedient sich Ajax des Document Object Models. Mit Hilfe dieses Datenmodells lässt sich jede Web-Seite als objektorientierte Baumstruktur darstellen und ein einzelner Bestandteil wie eine Datentabelle auf objektorientierte Weise manipulieren - beispielsweise um einen Teil der Daten auszutauschen. Was Ajax dazu benötigt, ist lediglich ein DOM-fähiger Browser wie beispielsweise der aktuelle Internet Explorer oder Mozillas Firefox, der auch einen DOM-Inspektor zur Anzeige der Baumstruktur besitzt.

Zu welcher drastischen Beschleunigung eine geschickte Verwendung von Ajax bei Web-Seiten führt, beweisen eindrucksvoll viele Demonstrationsseiten im Internet. Eine Anwendung zeigt zum Beispiel die Eingabevalidierung mit Hilfe einer konventionellen Web-Seite und mit Hilfe von Ajax im Vergleich. Während die konventionelle Seite rund drei Sekunden für die Abarbeitung einer Anforderung (Request), die Rücksendung der Daten und den erneuten Bildschirmaufbau benötigt, präsentiert die Seite, die mit Ajax ausgestattet ist, das Ergebnis in weniger als einer Sekunde.

Websites nachrüsten

Wie lassen sich vorhandene Web-Seiten mit Ajax ausstatten? Dazu gibt es verschiedene Verfahren und Bibliotheken, die sich entweder auf der Client-Seite (einer einzelnen Web-Seite) oder auch auf der Server-Seite (zum Beispiel mit Hilfe eines Java-Servlets) einsetzen lassen. Natürlich kann jede einzelne Seite mit einem entsprechenden Javascript-Programm auf der Client-Seite ausgestattet werden. Wer produktiver sein oder eine Programmierung zu Fuß vermeiden möchte, greift besser auf eine der vielen Erweiterungen eines Frameworks zur Client- oder Server-seitigen Programmierung zurück.

Wer auf Client-Seite Ajax programmieren will, kann eine ganze Reihe von Skriptsammlungen wie zum Beispiel das "Dojo Toolkit" heranziehen. Hier handelt es sich um ein DHTML-Framework, mit der sich eine Web-Seite aufwerten lässt. Für alle möglichen Anwendungsfälle wie etwa die Validierung und Verfolgung von Benutzereingaben stehen passende, leichtgewichtige Skripte kostenfrei bereit.

Wer Präsentation und Logik besser trennen möchte, entscheidet sich eher für ein Server-seitiges Framework. Hier gibt es beispielsweise Erweiterung der Servlet-, Java-Server-Pages- oder Java-Server-Faces-Techniken. Ohne die Anwendung vollkommen umkrempeln zu müssen, lassen sich Servlet-basieren- de Java-Anwendungen hiermit Stück für Stück mit Ajax-Technik ausstatten. Wer mit dem Sprung auf den Ajax-Zug noch etwas warten möchte, wird möglicherweise belohnt, denn eine Reihe von großen Herstellern hat das Potenzial der Technologie erkannt und möchte es unter dem Dach einer Ajax-Initiative konsolidieren (siehe Kasten "Ajax und Eclipse").

Prominente Beispiele

Bei den offensichtlichen Vorteilen von Ajax wundert es nicht weiter, dass viele prominente Web-Anwendungen wie Google Maps, Google Mail, die Groupware Zimbra oder die Bilddatenbank Flickr bereits seit langem auf Ajax setzen. Das geografische Informationssystem Google Maps erzielt zum Beispiel mit Hilfe von Ajax einen ähnlich schnellen Bildschirmaufbau, wie es andere Lösungen erst mit Hilfe eines Java-Applets erreichen, das bekanntlich nicht auf jedem Browser einwandfrei funktioniert und je nach Internet-Verbindung sehr lange Zeit benötigen kann, bis es geladen ist.

Dass die Ajax-Technik trotz ihrer Vorteile noch nicht weiter verbreitet ist, liegt an einigen nicht zu unterschätzenden Einschränkungen. Da Ajax unter anderem auf Javascript basiert, muss dieses im Browser vom Benutzer aktiviert werden, damit er in den Genuss der Vorteile kommt. Viele Anwender lehnen jedoch den Gebrauch von Javascript aus Sicherheitsgründen nicht ganz zu Unrecht ab. Auch funktionieren mit Ajax ausgestattete Web-Anwendungen nur auf modernen Browsern. Von der viel beschworenen Barrierefreiheit des Internets kann also bei Ajax-Anwendungen wirklich nicht mehr die Rede sein. (ue)