AJAX schon angekommen?

Posted by Carsten Bormann Sat, 22 Oct 2005 18:46:00 GMT

Schlußfolgerungen aus Web-basierten Umfragen sind stets mit besonderer Vorsicht zu behandeln. Nichtsdestoweniger finde ich die Ergebnisse einer Web-Umfrage eines Burton-Group-Mitarbeiters unter AJAX-Entwicklern (angekündigt vor ein paar Tagen im Ajaxian Blog) beeindruckend.

Knapp ein Drittel der Teilnehmer berichten, sie hätten AJAX-Anwendungen bereits im Produktionsbetrieb. Ein weiteres Drittel entwickelt schon; ein weiteres Viertel probiert offenbar noch (und ein paar denken noch nach).

Was sind nun die Serverumgebungen, mit denen AJAX-Techniken umgesetzt werden? Die größte Gruppe benutzt PHP (über 40 %), dicht gefolgt von Java (35 %). Wer gedacht hätte, AJAX würde nur in hypermodernen Entwicklungs-Umgebungen wie Ruby on Rails eingesetzt (15 %), wird überrascht, selbst die .NET-Gruppe hatte mit 18 % mehr Antworten.

Schließlich war noch die Frage nach dem Client-seitigen Toolkit von Interesse. Die größte Gruppe (40 %) tinkert direkt mit XMLHttpRequest, eine Vorgehensweise, die wir im AJAX-Buch nicht empfehlen. Die zweitgrößte Gruppe (23 %) benutzt prototype, was gegenwärtig auch unsere Empfehlung ist, nicht zuletzt wegen script.aculo.us, der wunderbaren Zusatzbibliothek von Thomas Fuchs, die 18 % weitere Nennungen bekommen hat (ebenso wie Rails mit 10 %, was aber ja auch nichts anderes als prototype und script.aculo.us heißt). Auf über 10 % kamen auch noch die beiden Toolkits DWR (Java-Umgebung) und Dojo. Einen Ehrenpreis bekommt mit 8 % schließlich die deutsche Entwicklung Ajax.NET; danach kommt der long tail der anderen Toolkits.

Gibt es, wie im Buch vorhergesagt, schon so etwas wie eine Konsolidierung der Toolkits?

Posted in  | 3 comments | 432 trackbacks

Aus Alt mach Neu mit AJAX: Instant Messaging und Presence

Posted by Olaf Bergmann Fri, 21 Oct 2005 02:31:00 GMT

Anfang Oktober fand in San Francisco zum zweiten Mal die internationale Konferenz zum Web 2.0 statt. Wie bei Konferenzen zu aktuellen Modethemen üblich, waren unter den Ausstellern auch viele neu gegründete Unternehmen, die den Markt mit frischen Ansätzen bereichern. Beispiele für Startups, die auf AJAX-Technologie auf der Clientseite webbasierter Anwendungen setzen, sind Meebo und Zimbra. Beide Unternehmen haben sich im weitesten Sinne auf Messaging-Anwendungen mit Web-Interface spezialisiert, ein Feld, das auch Google Talk besetzen möchte.

Mit Instant Messaging (IM) wird ein Modethema der vergangenen Jahre aufgegriffen und ajaxifiziert. Ein wesentliches Merkmal von klassischen IM-Anwendungen ist der eingebaute Presence-Dienst, der Auskunft über die Verfügbarkeit von eingetragenen Nutzern erteilt. Für jeden Kontakt im Adreßbuch der IM-Anwendung (oft Roster oder Buddy-List genannt) kann man sofort sehen, ob diejenige Person gerade erreichbar ist oder nicht gestört werden möchte.

Klassische IM-Protokolle wie Jabber/XMPP oder SIMPLE unterscheiden sich von webbasierten Ansätzen durch ihre push-basierte Architektur; da jeder Teilnehmer einen eigenen Serverprozeß aufsetzt, können Nachrichten bei Bedarf an den betreffenden Teilnehmer gesendet werden. In einer Client/Server-Architektur hingegen müssen die Clients regelmäßig Anfragen stellen, um neue Informationen zu erhalten.

Dies ist auch der Ansatz, der im AJAX-Buch angedeutet wird. Mit dem Ajax.PeriodicalUpdater aus der Bibliothek Prototype lässt sich eine Buddy-List sehr einfach aktualisieren. Alternativ ließe sich auch der PeriodicalExecuter dafür einsetzen, allerdings lässt sich dieser nicht so ohne weiteres stoppen, wenn er erst einmal läuft – der Browser wird dann sehr schnell zum Speicherfresser.

Auf den ersten Blick erscheint das Polling gegenüber den push-basierten Lösungen nicht sehr attraktiv. Doch die Ende-zu-Ende-Kommunikation hat einen großen Nachteil: Sie harmoniert nicht gut mit Middleboxes, also Geräten, die sich zwischen Sender und Empfänger einer Kommunikationsbeziehung befinden und den normalen Protokollablauf beeinflussen können. Die bekanntesten Vertreter dieser Art sind NATs und Firewalls. Beide haben ihre Berechtigung, machen eine reibungslose Kommunikation aber sehr schwer. Das Ergebnis sind Keep-Alive-Mechanismen und Verrenkungen wie STUN, um von außerhalb erreichbar zu sein.

Webbasierte Anwendungen können dieses Problem getrost vernachlässigen: Sobald Web-Traffic durch die Firewall gelassen wird, was selbst in den meisten Unternehmen heutzutage übliche Praxis ist, kann die bidirektionale Kommunikation über TCP beginnen. Bereits vor einigen Jahren haben Web-Services diese asymmetrische Kommunkationsbeziehung genutzt, um Schwierigkeiten mit Firewalls und NATs zu umgehen. Und das ist auch der Grund, warum SOAP fast ausschließlich über HTTP transportiert wird…

Keine Frage, Polling über HTTP gibt es schon lange und wird es immer geben. Das XMLHttpRequest-Objekt wird diesen Aspekt aber wieder stärker in den Vordergrund rücken. Mit welchen Lasten muss ein Server-Betreiber nun plötzlich rechnen? Wie viele Filedeskriptoren sind gleichzeitig offen zu halten? Welche Bandbreite erfordern die Antworten? Wie unterscheidet man das erwünschte Polling von einer DOS-Attacke?

Posted in  | Tags , ,  | no comments | 434 trackbacks

S6: Folienpräsentationen mit Echtzeitsynchronisation

Posted by Carsten Bormann Tue, 18 Oct 2005 07:05:00 GMT

Wer kennt das Problem nicht: Man telefoniert mit jemandem (oder gleich mit einer ganzen Telefonkonferenz) und möchte seine Ausführungen mit ein paar Folien untermalen. Wie bekommt man es hin, daß die Gesprächspartner im Laufe der Präsentation immer jeweils dieselbe Folie sehen wie man selbst?

Einsatz für AJAX.

Man nehme:

  • S5, die Web-Präsentationslösung von Eric Meyer (ja, der bekannte CSS-Guru);
  • etwas AJAX-Code (natürlich unter Benutzung einer AJAX-Bibliothek wie prototype), und
  • 75 Zeilen Ruby als Server für die Synchronisation.

Ergebnis: S6, Synchronized Simple Standards-based Slide Show System.

Die Benutzungsschnittstelle folgt der bewährten Alternative:

  • Führe (Lead)

    Der Browser des Vortragenden teilt dem Synchronisationsserver jeden Folienwechsel mit.

  • Folge (Follow)

    Browser von Zuhörern werden vom Synchronisationsserver sofort benachrichtigt, sobald der Vortragende auf eine andere Folie schaut als sie selbst, und schalten dann ebenfalls auf diese Folie um.

  • Geh aus dem Weg (Get out of the way)

    Will man unabhängig vom Vortragenden blättern, kann man „aus dem Weg gehen“ — die Aktionen des Vortragenden haben dann keinen Einfluß mehr auf den Browser.

Lädt man eine S6-Präsentation in den Browser, ist man zunächst in letzterem Modus (das ist aber mit einer Zeile JavaScript konfigurierbar). Tippt man ein „L“, dann betritt man den Führungsmodus, mit „F“ kommt man in den Folgemodus (meine Folien haben diese Information als Hilfetext auf der ersten Seite). Mit „G“ geht man (wieder) aus dem Weg. (Das ganze probiert man am besten vor der Telefonkonferenz mit ein paar Browserfenstern aus. Getestet in IE6, Firefox, Safari. Opera hat seinen eigenen merkwürdigen Slideshow-Modus, mit dem ich noch nicht ganz klar komme.)

Der Synchronisationsserver kann mehrere Folienpräsentationen gleichzeitig synchronisieren — der URI der Präsentation dient als eindeutiger Bezeichner einer Gruppe (notfalls kann man mit unterschiedlichen Fragmentbezeichnern, die von S5 im allgemeinen ignoriert werden, mehrere Sitzungen mit demselben Foliensatz voneinander trennen).

Die Idee, S5 um Synchronisation zu erweitern, ist übrigens so gut, daß auch jemand anders sie inzwischen gehabt hat. Im Vergleich zu S6 fehlt der Echtzeitaspekt (der Server wird einfach alle 2.5 Sekunden angefragt), das Multiplexing über den URI, und die klare Trennung der verschiedenen Betriebsarten. Dafür hat Teemu Arina auch den inkrementellen Aufbau der Folien in S5 adressiert, wozu ich noch nicht gekommen bin, und seine Version läuft auch in einem normalen Web-Server wie Apache.

Eric, Teemu und ich sind jetzt dabei, das alles zu sortieren. Vielleicht kann ich demnächst über eine Release berichten…

(Update: Die Links auf den experimentellen Web-Server stimmen jetzt. Danke, Oliver. Mental note: Niemals 10 Minuten vor einer Vorlesung bloggen :-)

Posted in  | Tags  | 9 comments | 498 trackbacks

X für ein U

Posted by Olaf Bergmann Fri, 14 Oct 2005 23:51:00 GMT

AJAX schwimmt gerade auf einer Hype-Welle, wie wir sie in vielen Bereichen der Informationstechnologie in den letzten Jahren häufig gesehen haben (von verteilten Datenbanken über Mbone-Konferenzen zu DHTML, Web-Services, usw). Bei diesem natürlichen Prozess wird ein Schlagwort gern stellvertretend für eine ganze Klasse von Konzepten, Technologien oder neuen Denkansätzen verwendet. Der Begriff selbst beschreibt dann nicht immer genau das, was damit gemeint ist. So entbrannte im Blog von Simon Willison im April eine längere Diskussion darüber, ob der Begriff AJAX zweckdienlich sei — zwei Monate nach dem Essay von Jesse James Garrett. Matthew Haughey spricht dann auch ziemlich deutlich aus, was technologiezentrierte Entwickler häufig verdrängen: Die Marketing-Abteilung weiß am besten, wie sich Technologie verkaufen läßt — selbst wenn es sich um altbekannte Technologien handelt, die die Entwicklergemeinde für sich neu entdeckt hat.

Was AJAX angeht, zeigt sich gerade das “X” nur als bedingt belastbar. Vielfach setzen AJAX-basierte Anwendungen asynchrone Kommunikation und JavaScript ein, aber es wird weit und breit kein XML verwendet. Der Grund dafür sind die Anforderungen an die Plattformunabhängigkeit: Auch im Jahr 2005 kann XML-Unterstützung nur bei sehr wenigen Browsern vorausgesetzt werden. Mit HTML (nicht XHTML) oder auch einfach zu parsierenden Legacy-Formaten ist man immer auf der sicheren Seite und muß sich nicht in die Abhängigkeit bestimmter Browser-Eigenschaften begeben, die wiederum Feature-Sniffing voraussetzen würden.

Posted in  | Tags ,  | no comments | 434 trackbacks

Stimmen aus dem Nachbarland

Posted by Carsten Bormann Fri, 14 Oct 2005 20:14:00 GMT

An einem Artikel aus dem Online-Auftritt der österreichischen Zeitung „Der Standard“ hat sich eine heiße Diskussion über den Sinn und Unsinn von AJAX entzündet. Hier meine kurze Zusammenfassung der Standpunkte der AJAX-Kritiker:

  • Flash konnte das schon immer

    Ja. Allerdings eben nicht mit dem standardisierten Web zusammen, sondern immer in der schönen bunten Flash-Welt isoliert. Meine Reaktion, wenn ich mich auf einer Site im Flash-Käfig wiederfinde: Ich will meinen Browser wieder haben! Der Versuch, die Flash-Welt mit AJAX unter dem Begriff „Rich Internet Applications“ über einen Kamm zu scheren, demonstriert schon ein wenig den Bedarf, diesen Nachteil durch geeignete Wortschöpfungen zu verschleiern.

    Im AJAX-Buch diskutieren wir aber auch durchaus eine Flash-basierte Alternative zur reinen AJAX-Lehre. Beispielcode dafür, daß sich AJAX und Flash sogar hervorragend vertragen können, findet sich hier, mit einer Demo dazu. Andererseits wird dieser Rückgriff auf eine proprietäre Technologie durch die zunehmende Verbreitung von SVG, z.B. in Firefox und Safari, in Zukunft vielleicht seltener erforderlich sein. Für die Interaktion mit Ton und Video in Webseiten ist Flash allerdings noch Stand der Technik; auch hier hilft AJAX drumherum dabei, eine Web-Anwendung zu behalten.

  • Browser konnten das schon lange, es hieß nur DHTML etc.

    Ja. Allerdings haben wir in den letzten 12 Monaten viel darüber dazugelernt, wie man mit AJAX eigentlich sinnvoll arbeitet. Es gibt jetzt design patterns (Entwurfsmuster), an die vor einem Jahr niemand gedacht hat. Sehr schöne Bibliotheken wie Prototype und Scriptaculous sind entstanden und haben eine erstaunliche Reife entwickelt. Neue Anwendungen, die sich so gänzlich anders anfühlen als das „alte Web“, sprießen wie Pilze aus dem Boden.

    Es lohnt sich auch für ausgefuchste Web-Entwickler, zu verfolgen, was in AJAX-Land passiert.

  • AJAX ist kein Allheilmittel, bringt auch Nachteile, …

    Ja. Vor allem ist eine Überdosierung schädlich (wie damals bei Flash). Auch dazu mehr im Buch.

Und nein, man braucht keine neuen Browser (oder Plugins), man muß (trotz des irreführenden Namens) durchaus nicht mit XML AJAXen, etc. Auch das erklärt natürlich alles das Buch. (Kann es sein, daß ich mich wiederhole?)

Posted in  | Tags ,  | no comments | 764 trackbacks

Amazon.de-Verkaufsrang: 331

Posted by Carsten Bormann Wed, 12 Oct 2005 14:56:00 GMT

Vielen Dank für die Blumen :-)

Um den Kaufrausch weiter zu befördern, hier ein paar Links zu weiteren lieferbaren Büchern, die in nicht unwesentlichem Umfang das Thema AJAX behandeln:

  • DHTML Utopia: Modern Web Design Using JavaScript & DOM

    Eine sehr gut lesbare Einführung in DHTML (JavaScript/DOM + HTML/CSS). Kapitel 8 und 9 beschreiben auf 90 Seiten unter dem Namen „Remote Scripting“ AJAX-Techniken. Aber auch die JavaScript- und DOM-Grundlagen drum herum sind für Ajaxianer nützlich.

  • Agile Web Development with Rails

    Eine lebensnahe Einführung in das zur Zeit buzzwordkompatibelste neue Framework für die Web-Entwicklung, Ruby on Rails. Allein schon lesenswert als Benchmark dafür, wie gut ein Buch zu einem Informatik-Thema überhaupt sein kann. Kapitel 18, „The Web, V2.0“ widmet sich auf 26 Seiten der Benutzung der AJAX-Funktionen von Rails. Das Kapitel ist von Thomas Fuchs, dem Scriptaculous-Meister höchstselbst.

Es ist allerdings zur Zeit nichts auf Deutsch dabei, nichts in einem zum AJAX-Buch vergleichbaren Preisbereich, und auch keine etwas ausführlichere Abhandlung. (Irgendeinen Grund mußte es ja geben, unser Buch zu schreiben.)

Ich werde den Markt sicher weiter aufmerksam verfolgen; es sind viele neue (englischsprachige) Bücher angekündigt.

Posted in  | Tags  | 3 comments | 367 trackbacks

Spätblogger

Posted by Carsten Bormann Mon, 10 Oct 2005 21:08:00 GMT

Darf man als informiertes Mitglied der Web-Gemeinde im Oktober 2005 überhaupt noch einen Blog anfangen? Hätte man sich nicht schon seit Jahren die Seele aus dem Leib bloggen müssen? Fragen über Fragen.

Dieser Blog entstand aus dem Anlaß, ein spezifisches Problem zu lösen: Buchinhalte sind statisch, die Welt aber sehr dynamisch (und das gilt allemal für die Welt des AJAX-Buches). Vielleicht gelingt es uns, für unsere Leser in diesem Blog einen kleinen Mehrwert zu schaffen (und, wenn wir Glück haben, das nächste Buchprojekt vorzubereiten).

Ich bin jedenfalls gespannt auf dieses Experiment — ein Buch mit kleinen Updates und Feedback-Funktion.

Die noch etwas nervenden Fehler der Plattform bitte ich zu entschuldigen; ich habe mich für ein Cutting-Edge-System entschieden (Typo in der SVN-Version) — Kommentare erwünscht. Die fehlende Barrierefreiheit bei der (AJAX-unterstützten) Eingabe von Kommentaren ist vielleicht strenggenommen inakzeptabel, aber gleichzeitig ein nützlicher Beitrag zur Abwehr von Kommentar-Spam. Ich hoffe, es macht trotzdem Spaß.

Posted in  | Tags  | no comments | 742 trackbacks

AJAX-Buch kommt am 14.10.2005

Posted by Carsten Bormann Mon, 10 Oct 2005 20:43:00 GMT

Am 14.10.2005 ist es soweit: Das erste deutschsprachige Buch zum Thema AJAX wird ausgeliefert.

Warum AJAX? Das Web wird sich in den nächsten Monaten und Jahren ändern („Web 2.0“). AJAX spielt eine wichtige Rolle dabei, das Interaktionsdesign vom Hypertext-Paradigma zur Web-basierten Anwendung weiterzuentwickeln.

Warum ein Buch? Es gibt natürlich viel Information im Web. Das gute alte Medium Buch ist aber zum Einarbeiten in neue Themen immer noch schwer zu schlagen.

Warum auf deutsch? Das ist in einer Web-Welt, die fast nur noch auf englisch arbeitet, schon schwerer zu beantworten. Ich selbst arbeite gerne in beiden Sprachen. Für die Lehre (und das ist eben eine meiner Aufgaben) ist die Muttersprache der Lernenden aber immer noch am besten geeignet. Englischsprachige Bücher zu AJAX kommen gerade auf den Markt, warum also nicht ein deutschsprachiges schreiben?

Posted in ,  | Tags , ,  | 2 comments | 3852 trackbacks