AJAX - Internet-Revolution oder Hype?
Von Ralph Steyer
Die Kerntechniken von AJAX | Die Ausgangssituation: Client, Server und interaktive Web-Applikationen | Wie kommt AJAX ins Spiel? | Wo stellen sich Probleme?
(03.04.2006) Die AJAX-Technologie spaltet derzeit die Web-Welt: "Revolution" meinen die einen; "Hype" sagen die anderen. Doch worum geht es eigentlich genau?
AJAX steht für 'Asynchrones JavaScript und XML' - und ermöglicht Webapplikationen wie Google Suggest
oder Flickr
, die so schnell sind, dass sie mit ihren Anwendern nahezu in Echtzeit interagieren können. Denn mit AJAX werden bei einer Anfrage durch die Nutzer einer Webseite nur die gerade benötigten Teile der Seite nachgeladen, statt sie komplett neu zu laden. So verkürzen sich Lade- und Wartezeiten dramatisch. Das ist besonders für Webanwendungen entscheidend, für die sehr viele Daten dynamisch zur Verfügung stehen müssen.
Der eigentliche AJAX-Kick für das WWW ist also "Speed": Lange Wartezeiten bei einfachen Änderungen der Webseite gehören der Vergangenheit an, wenn sich AJAX so durchsetzt, wie es derzeit aussieht.
Webanwendungen, die sofort und ohne Seiten-Neuladen auf die Aktionen ihrer Besucher reagieren, machen Websites erfolgreich. Kein Wunder, sparen sie doch Zeit und Nerven: zwei der kostbarsten Güter im WWW! Wie Sie mit AJAX solche "Web 2.0"-Anwendungen programmieren, zeigt Ihnen Ralph Steyer in diesem Online-Workshop.
Der von Ralph Steyer geleitete Online-Workshop startet am 22.06.2010.
mehr...
Die Kerntechniken von AJAX
Die Kerntechniken von AJAX sind dabei nicht neu: HTML beziehungsweise XHTML, JavaScript, Stylesheets, XML sowie eine im Grunde beliebige Programmiertechnik auf dem Server.
HTML beziehungsweise XHTML, JavaScript und Stylesheets firmieren dabei zusammen als eine Technik mit Namen DHTML. DHTML steht für dynamisches HTML. Der Begriff ist jedoch nicht standardisiert und verschiedene Leute verstehen darunter teilweise unterschiedliche Dinge. In jedem Fall geht es aber darum, eine Webseite zu verändern nachdem sie bereits in den Browser geladen wurde. Als Technik für Stylesheets werden im Web fast ausschließlich die so genannten Cascading Stylesheets oder kurz CSS verwendet.
Das 'X' in AJAX steht für XML. Dieses Datenformat gestattet den Austausch von Informationen, die über den Text hinausgehende Metainformationen beinhalten. Allerdings kann der Datenaustausch zwischen Server und Client auch andere Datenformate nutzen. So können beispielsweise reine Textinformationen, HTML- Fragmente oder andere Klartexte verwendet werden. XML bietet jedoch die am weitesten gehenden Möglichkeiten.
Viele so genannte Experten kritisieren, dass AJAX im Grunde nur Technologien beschreibt, die es bereits seit geraumer Zeit im Web gibt. HTML gibt es bereits seit 1990, aber auch JavaScript, Stylesheets und XML sind seit Mitte der neunziger Jahre verfügbar. Sogar die asynchrone Nachforderung von Daten, die erst später in ein Dokument integriert werden sollen, gibt es bereits seit ungefähr 1998.
Allgemein wurde das Verfahren zur asynchronen Nachforderung von Daten bis vor kurzem mit dem Begriff XMLHttpRequest beschrieben. Diese Technik geht auf das "Outlook Web Access"-Team von Microsoft zurück und wurde zu der Zeit bereits in den Microsoft-Exchange-Server und den Internet Explorer integriert. Obwohl später weitere isolierte Anwendungen folgten, konnte sich diese Technologie nicht flächendeckend durchsetzen. Erst mit dem Begriff AJAX, den ein Mitarbeiter der Agentur Adaptive Path mit Namen Jesse James Garrett bekannt gemacht hatte, wurde diese Technologie populärer. Und vor allen Projekte von Google wie "Google Groups", "Google Maps" und "Google Suggest" trugen im Jahr 2005 zur explosionsartigen Verbreitung des Begriffs bei.
Das Argument, dass AJAX im Grunde nur kalter Kaffee sei, ist jedenfalls nicht zwingend negativ. Genauso gut kann man es umgekehrt sehen: AJAX erfordert keine neue Technologie und kann sich damit sehr einfach und schnell in das bestehende World Wide Web integrieren. Wahrscheinlich ist die Verbindung bekannter Techniken tatsächlich auch der Hauptfaktor für den rasanten Durchbruch von AJAX.
Unter dem im Schlagwort AJAX formiert sich ein Standard, auf den sich in kürzester Zeit alle Beteiligten der Entwicklungen rund um das World Wide Web einigen werden und müssen.
Die Ausgangssituation: Client, Server und interaktive Web-Applikationen
Derzeit interessieren sich sehr viele Leute für AJAX. Um die immense Bedeutung von AJAX für die Zukunft des Webs zu verstehen, muss man sich nur die Arbeitsweisen und vor allem die Probleme der konventionellen Webprogrammierungvor Augen führen. Dann sieht man schnell, wie AJAX hilft, diese Probleme zu lösen.
Bereits das WWW war seinerzeit ein riesiger Fortschritt, es machte aus dem bis dahin rein textbasierten Internet mit isolierten Daten eine multimediale Welt. In WWW ließen sich Inhalte miteinander verknüpfen und optisch interessant aufbereiten. Damit wurde auch für technisch nicht versierte Anwendern die Möglichkeit geschaffen, in einem weltweiten Netzwerk auf Informationen zuzugreifen.
Protokoll-Fragen: TCP/IP, HTTP und die Verbindung
Die technische Basis des WWW ist aber die gleiche wie die des Internets. Der gesamte Datenaustausch basiert auf TCP/IP. Dies steht für 'Transmission Control Protocol / Internet Protocol' und bezeichnet eine Paketvermittlung bei der Datenübertragung. Die Daten zwischen den Kommunikationspartnern werden in kleine Dateneinheiten zerlegt und diese unabhängig voneinander vom Sender zum Empfänger geschickt. Zwischen den Kommunikationspartnern gibt es keine permanente Verbindung.
Die auf TCP/IP aufsetzenden Dienstprotokolle des Internets realisieren zwar teilweise eine virtuelle Verbindung, aber das ist nicht bei allen Dienstprotokollen des Internets der Fall. Insbesondere das Protokoll des WWW - HTTP - ist ein verbindungs- oder zustandsloses Protokoll. Während der Kommunikation zwischen einem Webserver und einen Browser wird also keine Verbindung aufrechterhalten. Wenn ein Browser von einem Server eine Webseite anfordert, und in einem zweiten Schritt der gleiche Browser eine weitere Seite von diesem Server anfordert, kann der Webserver nicht erkennen, dass die Anforderung von dem gleichen Client kam.
Sie kennen aus Ihrer Erfahrung im World Wide Web natürlich Situationen, in denen der Webserver erkennen kann, ob ein Client bereits vorher Seiten angefordert hat. Dies ist in allen Situationen der Fall, in denen man sich legitimieren muss, um in einem geschlossenen Bereich Webseiten zu sehen. Dies wird aber nicht über TCP/IP beziehungsweise HTTP gewährleistet, sondern mit Anwendungstechniken, die darauf aufsetzen, zum Beispiel Cookies.
Anfordern & Versenden von Daten
In der Anfangsphase des Webs war ein Anfordern einer Webseite durch einen Client und deren Darstellung nach Erhalt der Antwort vollkommen ausreichend. Aber bereits nach einigen Jahren genügten vielen Leuten rein statische Webseiten nicht mehr. Die mangelnden Möglichkeiten der Interaktion mit einem Betrachter einer Webseite führten dazu, dass Technologien wie JavaScript, Java-Applets, VBScript, oder diverse weitere Techniken entstanden. Diese Technologien werden allesamt in Client ausgeführt. So genannte clientseitige Programmierung ist als erste Optimierung des Webs zu verstehen.
Allerdings kann clientseitige Programmierung selbstverständlich nicht alle Aufgaben des Webs übernehmen. Das Versenden neuer Daten ist natürlich immer noch Aufgabe des Servers. Ebenso werden sicherheitsrelevante Dinge wie die Überprüfung von Zugangsdaten nicht auf den Client verlagert, wenn man nicht ein großes Risiko eingehen will.
Clientseitige Programmierung hat aber darüber hinaus noch weitere Nachteile. Es muss gewährleistet sein, dass die clientseitige Technologie im Rahmen einer Webseite beim Client auch unterstützt wird. Und aufgrund unterschiedlichster Gegebenheiten wurde etwa ab dem Jahr 2000 die clientseitige Programmierung im Web mehr und mehr zurückgedrängt. Zum Teil waren es Sicherheitslücken in clientseitigen Programmiertechniken, zum Teil waren es marktpolitische Überlegungen. Und zum Teil hatten Anwender bestimmte Techniken einfach nicht in dem Client installiert. Dies betraf vor allem proprietäre Standards.
Die Probleme bei clientseitiger Programmierung bewirkten etwa ab dem Jahr 2000 die zunehmende Rückverlagerung von Aktivität auf den Webserver. Mittlerweile jedoch hat sich die Situation normalisiert. Bei komplexeren Webapplikationen ist inzwischen weder das eine Extrem (möglichst viel Aktivität bereits auf dem Client auszuführen) noch das andere Extrem (die komplette Verlagerung auf den Webserver) mehr üblich. Die Aufgaben werden statt dessen mehr und mehr so verteilt, wie sie sinnvoller Weise erledigt werden sollten. Was im Client sinnvoll gemacht werden kann, wird bei allen populären Webseiten heutzutage dort erledigt. Und was sinnvoller Weise auf dem Server zu machen ist, macht man dort, mittels einer geeigneten Programmiertechnik. Insbesondere das Open Source-Projekt PHP hat viel zu der steigenden Popularität von serverseitiger Programmierung beigetragen. In Verbindung mit dem Webserver Apache, der ebenfalls Open Source ist, hat sich der Begriff 'LAMP' beziehungsweise 'WAMP' etabliert und viele Anwender programmieren mittlerweile auch auf den Server.
Wenn Sie sich heute populäre Webseiten ansehen, kommt keine einzige dieser angesagten Seiten ohne JavaScript oder Stylesheets daher. Entsprechend verschwindet auch mehr und mehr die Empfehlung, dass Anwender JavaScript im Browser deaktivieren sollen. Kaum ein Anwender möchte auf den Nutzen populärer Webangebote wie Google, Amazon, eBay, Wikipedia oder ähnlichen Smashern verzichten. Allerdings haben die Probleme der clientseitigen Programmierung in der Vergangenheit dazu geführt, dass es als einzige clientseitige Programmiertechnik im Web heutzutage nur noch JavaScript gibt.
Wie kommt AJAX ins Spiel?
Wenn man heutzutage bei jeder aufwändigeren Webapplikation eine vernünftige Aufteilung zwischen der Arbeit auf dem Webserver und dem Ausführen von Programmierung auf dem Client sieht, wozu braucht man dann noch AJAX?
Nun, das Problem von HTTP ist weder durch clientseitige Programmierung noch durch Programmierung auf Serverseite zu lösen: die Notwendigkeit, bei der Reaktion auf eine Anfrage durch einen Webbrowser immer eine vollständige Webseite als Antwort zu senden. Dies berührt diese Arbeitsteilung überhaupt nicht.
Überlegen Sie als Beispiel ein Webformular, in dem der Anwender eine Postleitzahl eingeben soll. Je nach eingegebener Postleitzahl soll dem Anwender in der Webseite eine ergänzende Information angezeigt werden, und zwar der Name der Stadt, die zu der Postleitzahl passt. Sie können nun bereits beim Anfordern des Webformulars auf Vorrat alle zusammengehörenden Postleitzahlen und Städte zum Client senden und diese Information für JavaScript vorhalten. Dann können Sie aufgrund der Auswahl des Anwenders diese Information mit DHTML-Techniken in der Webseite anzeigen.
Es ist aber offensichtlich, dass so zuerst viele überflüssige Daten zum Client geschickt werden müssen, die später niemals verwendet werden. Das Verschicken von Daten auf Vorrat ist also ineffektiv. Vor allem, wenn das in mehreren Situationen für eine Webseite notwendig ist oder allgemein große Datenmengen betroffen sind. Stellen sich vor, Google sollte seinen gesamten Datenbestand zum Client schicken, um bei Bedarf ergänzende Informationen in der Webseite anzuzeigen. Das ist vollkommen illusorisch.
Hier betritt AJAX die Bühne! Mit AJAX hat man eine zunehmend standardisierte Vorgehensweise zu Verfügung, wie man ohne Vorratshaltung von Daten auskommt und dennoch eine Reaktion der Webapplikation nahezu in Echtzeit gewährleisten kann. Und dies, obwohl neue Daten vom Webserver angefordert werden. Statt der Anforderung einer vollständigen Webseite wird eine AJAX-Datenanfrage dazu führen, dass nur die neuen Daten vom Webserver geschickt und diese dann in die Webseite eingebaut werden, die bereits im Browser geladen ist. Es ist offensichtlich, dass so eine Vorgehensweise die versendete Datenmenge erheblich reduziert und eine Webapplikation gigantisch beschleunigen kann.
Anmerkung: Datenanforderung mit AJAX
Mit AJAX fordert man Daten erst dann an, wenn sie benötigt werden. Sie werden dann für den Zugriff auf JavaScript verfügbar gemacht und anschließend mit DHTML-Techniken in einer Webseite eingebaut.
Bei AJAX kommunizieren nicht mehr nur der Browser und der Server direkt miteinander, vielmehr kann unabhängig von dieser Interaktion ein Objekt in der Webseite mit dem Server asynchron kommunizieren. Und auf dieses Objekt greift man per JavaScript zu. Etwa dann, wenn in einem Eventhandler eine Funktion aufgerufen wird.
Wo stellen sich Probleme?
AJAX ist ohne Zweifel eine Revolution im Web. AJAX bringt das Web voran und wird viele Probleme lösen. Aber AJAX ist weder Selbstzweck noch die Lösung für alle Probleme im Web. Im Gegenteil - es gibt eine Reihe von Problemen, die unmittelbar mit AJAX zusammenhängen.
-
Auf der einen Seite wird AJAX das Anwenderverhalten verhindern.
Je mehr AJAX-Applikationen entstehen, desto mehr werden Anwender von Webapplikationen ein Antwortverhalten erwarten, wie Sie es von einer Desktop-Applikation kennen. Das kann je nach Qualität der Netzwerkverbindung oder der Auslastung des Servers aber nicht garantiert werden. Das muss der Ersteller einer Webseite einkalkulieren. Insbesondere werden Webentwickler neue Formen der Benutzerführung zu entwickeln haben.
-
Ein weiteres Problem wird sein, dass viele Leute auf den AJAX-Zug aufspringen und Applikationen entwickeln, die AJAX überhaupt nicht notwendig haben.
Wie bei jeder neuen Technologie wollen sehr wahrscheinlich viele Leute unter Beweis stellen, dass sie etwas davon verstehen - unabhängig davon, ob es sinnvoll ist oder nicht. Die Entwicklung von Flash ist eines der wohl bekanntesten Beispiele, wie eine im Grunde sehr gute Technologie durch massenhaften Missbrauch in Verruf geraten ist. Erst in der letzten Zeit wird Flash mehr und mehr auf die Anwendungen reduziert, in der die Technik sinnvoll ist. Das wird wahrscheinlich auch mit AJAX geschehen. AJAX wird durch einen Zyklus gehen müssen, indem eine Spielphase irgendwann durch eine produktive Phase abgelöst wird.
Aber es gibt auch rein technische Probleme von AJAX.
-
Ein Stichwort ist das barrierefreie Web. Un da bei AJAX Inhalte dynamisch generiert werden, haben auch Suchmaschinen Probleme, die Inhalte von AJAX-Webapplikationen zu indizieren.
-
Weiterhin ist problematisch, dass der Browser von dem Datenaustausch per AJAX nicht direkt etwas mitbekommt. Das führt dazu, dass die Funktionalität der 'Zurück'-Schaltfläche im Browser ausgehebelt wird. Das Drücken dieser Schaltfläche stellt bei einer konventionellen Applikationen den vorherigen Zustand der Anwendung wieder hier. Dies wird bei AJAX-Applikationen nicht der Fall sein. Entwickler werden neue Lösung entwickeln müssen, diese Verhaltensweise zu gewährleisten. Hier bieten so genannte AJAX Frameworks eine gewisse Unterstützung. Auch gibt es bei AJAX-Anwendungen unter Umständen Probleme mit Lesezeichen. Aus genau den gleichen Gründen.
-
Das größte Problem hat AJAX offensichtlich dann, wenn im Client eine bestimmte vorausgesetzte Technologie nicht aktiviert oder verfügbar ist. Entweder wenn JavaScript deaktiviert ist, ein alter Browser benutzt wird oder aber Sicherheitseinstellungen bestimmte Dinge einfach verhindern.
Die Entwicklung im Web bleibt also spannend - AJAX wird seinen Teil dazu beitragen.
Über den Autor
Ralph Steyer ist seit 1996 selbstständig im Bereich Schulung, Programmierung und Beratung. Seine Spezialgebiete sind die Internet-Programmierung und objektorientierte Software-Entwicklung. Ralph Steyer schreibt außerdem regelmäßig für verschiedene Computermagazine und ist Autor zahlreicher Fachbücher zu Themen von JavaScript über Linux bis zum Intranet-Management. Im März 2006 ist sein Buch Ajax mit PHP
im Addison-Wesley-Verlag erschienen.
Durchschnittliche Bewertung: 
Anzahl der Bewertungen: 14
Leser haben folgende Kommentare abgegeben:
Am 23.01.2007 11:36:21 schrieb <Anonym>:
Kurzer Kommentar zu TCP vom Autor: Die Kritik ist zum Teil berechtigt, wenn man den reinen Zyklus Senden-Empfangen betrachtet. Allerdings soll hier mit Verbindungsorientierung eine permanente Verbindung zwischen Server und Client über einen solchen Einzelzyklus hinaus bezeichnet werden. Und dieser besteht nicht. Das Missverständnis ist aber naheliegend, da die Formulierung zweideutig ist.
Am 23.01.2007 11:03:02 schrieb <Anonym>:
Die Beschreibung des TCP-Protokolls ist so nicht richtig. TCP an sich ist ein verbindungsorientierte Protokoll. Der Client baut eine Verbindung mit dem Server auf (per Handshaking, etc.). Die Segmente einer Web-Seite werden über diese Verbindung übertragen. Bei der Anforderung einer neuen Web-Seite baut der Client eine neue TCP Verbindung zum Server auf. (siehe z.B. Wikipedia)
Am 03.11.2006 18:04:45 schrieb <Anonym>:
Hey!
Ich wollte kein Bewertung abgeben und das System hat das trotzdem gemacht.
Mein Beitrag wertet in keiner Weise den obigen Text.
(Frechheit vom CMS)
.rd.
Am 03.11.2006 18:02:51 schrieb <Anonym>:
AJAX ist alter Wein in neuen Schläuchen. Ein Modewort (Buzzword). Ein Hirngespinst, dass nur eine bestimmte Art zu Denken und Programmieren beinhaltet. Also keine Technologie.
Den Browsern stand schon Mitte der 90er die JavaScript (ECMA-Skript währe korrekt und nicht "auch" dieser Marketing Gag) Funktion HttpRequest zur Verfügung. Ich hatte damals schon Experimente in diese Richtung gemacht, bin aber immer wieder an der Implementierung des DOM der einzelnen Browser gescheitert. GOTT SEI DANK hat ENDLICH auch der IE diesen Standart zum Schluss auch noch ordentlich implementiert.
Früher nannte man das Dynamic HTML heute halt AJAX. Klingt, als hätte man mit einem Spühlmitte altes Silber aufpoliert.
Cheers
.rd.
Am 13.04.2006 18:12:43 schrieb <Anonym>:
Einen Gegensatz zwischen Speed und Interaktivität aufzubauen erscheint mir nicht sinnvoll - eher akademisch. Es geht nicht zuletzt darum, dass bislang eine Interaktivität (d.h. das, was man sieht, von den bisherigen Angaben abhängig ist) häufig ausblieb, weil das Applikationen im WWW bislang weitestgehend nicht in der Lage waren dem Nutzer den Eindruck zu vermitteln, dass sofort auf seine Angaben reagiert wurde. Stattdessen gab es ein mühsames "senden" und empfangen von neuen Seiten. Der "Kick" der Interaktivität, von dem mein Vorredner spricht, wird dadurch erreicht, dass Reaktionen auf Nutzerangaben (sprich Interaktivität) durch die AJAX-Technik SCHNELLER, d.h. scheinbar als Sofortreaktion erscheinen. Daher ist die Frage der Geschwindigkeit ein Schlüssel zur Interaktivität. Fazit: Speed ist die Voraussetzung für Interaktivität - kein Gegensatz!
Am 13.04.2006 17:59:06 schrieb fweber:
Ich fand den Beitrag sehr gut und informativ - für mich war er genau richtig!
Am 13.04.2006 10:23:45 schrieb <Anonym>:
Merkwürdige Ansichten. Der "Kick" hinter AJAX ist sicher nicht Speed, sondern Interaktion. Wer AJAX einsetzt, um Seiten erst mal "halb" zu laden, macht zweifellos etwas falsch. Und damit sind auch weitere Argumente des Autors hinfällig: Suchmaschinen konnten schon immer nur sehr eingeschränkt mit dynamischen, interaktiven Webpräsenzen umgehen - sie können ja das User-Verhalten nicht vorhersehen. Und es ist auch nicht AJAX anzulasten, wenn jetzt zig Anwendungen auftauchen, die ohne AJAX genauso (und unproblematischer) zu handhaben wären.
So ziehen sich halbgare Äußerungen durch den ganzen Artikel, aber konkrete Hinweise darauf, wenn AJAX sinnvoll eingesetzt wird (oder besser nicht), bleibt der Autor schuldig. Wenn es um Barierrefreiheit geht, wäre bspw. ein Hinweis auf die fehlende JS- und DHTML-Fähigkeit von Screenreadern angebracht. Oder man könnte die frage stellen, was denn eigentlich mit Mobile Web und exotischen Browsern abseits von MSIE, Firefox und Opera ist (wobei selbst letzterer mit mancher AJAX-Library schon Probleme erzeugt).
Zweifellos hat AJAX Stärken und Schwächen. Eine fundierte Auseinandersetzung hiermit habe ich in dem Beitrag aber leider vermisst.
Funktionen für diese Seite: Druckversion, empfehlen, Feedback etc.
Copyright: akademie.de 2010