Mobile Ajax FAQ - deutsche Version

Dies ist die Übersetzung der ersten Version der Mobile Ajax FAQ bei Horizon Channel (und hier).

Einführung

Die Mobile Ajax FAQ wurde erstellt von Ajit Jaokar , Rocco Georgi und Bryan Rieger und wird bei Horizon Channel gepflegt. Kommentare und Feedback sind jederzeit unter ajit.jaokar at futuretext.com willkommen.

Was ist Mobile Ajax?

Ajax ist eine Browser-basierte Technologie, die existierende Webstandards und Technologien (XML/XHTML, DOM, CSS, JavaScript, XMLHttpRequest) nutzt, um Webapplikationen zu implementieren, die besseres User-Feedback geben können, die die Bandbreitennutzung veringern, indem das Laden von ganzen Seiten vermieden wird und die sich ähnlich wie Desktop-Applikationen verhalten. Die Bezeichnung Ajax wurde von Jesse James Garrett in seinem grundlegenden Artikel bei Adaptive Path geprägt.

Die Anwendungen, die mit Ajax erstellt werden können, sind im Allgemeinen in der Kategorie der Rich Internet Applications (RIA) klassifiziert.

“Mobile Ajax” ist die Erweiterung der Ajax Prinzipien in der mobilen Welt, die neben Mobiltelefonen Geräte wie z.B. Gaming Konsolen oder Set-Top Boxen mit integrierten Webbrowsern beinhaltet. Obwohl es technisch gesehen das Gleiche ist, konzentriert sich Mobile Ajax auf einen besonderen Fall von Ajax. Mobile Ajax beschäftigt sich mit Problemen speziell im mobilen Bereich und dem Bereich von eingeschränkten Geräten und eingeschränkten Webbrowsern allgemein.

Gibt es eine Checkliste für Mobile Ajax bzw. Mindestanforderungen?

Ajax ist eine Technologie, die im Kern auf JavaScript beruht, die bloße Unterstützung von JavaScript im Browser reicht jedoch nicht aus. Es muss eine klare Unterscheidung zwischen JavaScript und Ajax Unterstützung geben. Es gibt viele Beispiele, wo ein Web Browser JavaScript sehr gut unterstützt, jedoch nicht die für Ajax notwendigen Techniken.
Die Mindestanforderungen für Mobile Ajax sind:

  • JavaScript Unterstützung
  • XMLHttpRequest object oder ein equivalentes ActiveX (Internet Explorer)
  • DOM Functionen (Document Object Model) oder innerHTML Unterstützung (um die Resultate der Anfragen anzuzeigen)

Wie sieht Mobile Ajax aus?

Auf der einen Seite wird Mobile Ajax für die Enduser transparent sein. Zum Beispiel unterstützen alle Nokia Geräte mit S60 oder Opera Browser Ajax - aber das macht nur einen geringen optischen Unterschied für die Enduser. Auf der anderen Seite werden Widgets durch Mobile Ajax ermöglicht (siehe unten). Daher könnte die visuelle Manifestation von Mobile Ajax in der Form von Widgets oder “rich browser based applications”, so wie man dies in neueren Nokia Telefonen oder im Opera Browser sehen kann, auftreten.

Warum sollte man Ajax auf Handys einsetzen / Welches Problem wird dadurch gelöst?

Die Gründe, warum man Ajax einsetzen sollte, sind die gleichen, warum man es auf dem Desktop nutzt:

  • verbesserte Benutzerfreundlichkeit, ohne, dass man auf proprietäre Technologien zurückgreifen muss
  • weniger Daten/Bandbreitennutzung durch das Vermeiden des Versandes von redundanten Daten (z.B. Seitenlayout)
  • der Einsatz einer Technologie, die auf offenen Standards basiert und mit der man bereits vertraut ist, bedeutet weniger Training und schnellere Produkteinführungszeit
  • Erstellung von einfachen, funktionsorientierten Applikationen via Widgets

Welche Alternativen gibt es zu Mobile Ajax?

Allgemein kann fast jede Programmiersprache oder Runtime (oder virtuelle Maschine) eingesetzt werden, um Ergebnisse zu erzielen, die mit Mobile Ajax vergleichbar sind. Die Liste der Alternativen unterscheidet sich je nach Fokus auf die verschiedenen Merkmale, wie z.B. Plattform-übergreifende Funktionalität, Verwendung von offenen Standards, Entwicklungskosten, Kosten und Methoden der Auslieferung etc., abhängig vom jeweiligen Anbieter.

Nachfolgend sind die momentanen Alternativen zu Mobile Ajax aufgeführt.

Java ME (J2ME)

Bei weitem die derzeit allgegenwärtigste runtime, die auf mobilen Geräten verfügbar ist, aber auch die am meisten zerkluftete in Bezug auf Funktions- und Spezifikationssupport zwischen Anbietern und Geräten. Die Lage verbessert sich mit den zunehmenden Anstrengungen verschiedener Hersteller, die auf das Ziel hinarbeiten, den Traum von ‘write-once-run-anywhere’-Java Wirklichkeit werdem zu lassen. Die Entscheidung von Sun, Java als Open Source herauzubringen, kann in Zukunft zu leistungsfähigeren und kompatibleren Versionenführen. Initiativen, wie ‘Project Orbit’ von OpenLaszlo + Sun, oder JavaFx können Entwicklern, die eher mit Webtechnologien vertraut sind (als mit Java Programmierung), ermöglichen, direkt für mit Java ausgestattetet Geräten zu entwickeln.

Flash Lite

Flash Lite ist Adobe’s universelle Runtime für das SWF Format, speziell entwickelt für den Einsatz auf begrenzten Geräten. Obwohl Flash heutzutage auf fast allen Desktop- oder Laptopcomputern installiert ist, ist es derzeit nur auf einer geringen Anzahl von mobilen Geräten verfügbar - und zwar meisstens auf höherentwickelten Smartphones und PDAs.

Frühere Versionen von Flash Lite unterstützten eine sehr begrenzte Version von ActionScript, was sich für viele Entwickler als frustrierend erwies. Die neueren Releases folgen schon eher den aktuellen Versionen von Flash und ActionScript, die im Internet heutzutage weitverbreitet sind. Es wird erwartet, dass dies wiederum das Interesse der Entwickler am Einsatz der Flash-Plattform auf mobilen Geräten erhöht.

Wie kann man Flash Lite and Java mit Mobile Ajax vergleichen?

Java benötigt meist Code-Variationen für verschiedene Geräte und Hersteller - nicht zu vergessen die Variationen in der Java-Implementation selbst (MIDP 1, 2, CLDC). Diese Variationen erlauben es Java-Anwendungen oft, besser die Hardware der Geräte, wie Kameras, Bluetooth und 3D Grafiken, zu nutzen, aber sie zerstückeln die Implementation.

Flash benötigt normalerweise keine Variationen im Code wie Java - aber benötigt manchmal Variationen im visuellen Layout, um eine optimale User-Experience auf verschiedenen Geräten zu bieten. Neuere Versionen von Flash Lite versuchen diese zusätzlichen grafischen Anpassungen zu minimieren, die für verschiedene Bildschirmgrößen bisher oft nötig sind.

Mobile Ajax Applikationen sollten mit dem gleichen Code auf einer Vielzahl von Geräten lauffähig sein und durch den Einsatz von Cascading Style Sheets (CSS) sollte die visuelle Komponente an verschiedene Umgebungen anpassbar sein. Dennoch sollten die Punkte unter der Frage zu den Hürden bei der Implementation von Mobile Ajax Anwendungen beachtet werden.

Einige Browser (Nokia S60) sollen in Zukunft per Plugins in der Lage sein, Flash Lite zu unterstützen. Wenn dies der Fall ist, kann Flash Lite dazu benutz werden, gemeinsam mit Mobile Ajax Applikationen zu implementieren - ähnlich, wie dies heutzutage im Desktopbereich der Fall ist.

Was ist der Unterschied zwischen Ajax Plattformen, Frameworks, Toolkits und Libraries?

Ajax Plattformen, wie die Opera Platform oder NetFront’s Embedded Ajax, sofern diese auf dem Gerät installiert sind, machen es leicht, Applikationen und Widgets zu entwickeln, die Standard Web Technologien nutzen - einschließlich Ajax.

Es gibt jedoch einen großen Unterschied zwischen den Plattformen auf der einen Seite und Frameworks, Toolkits oder Libraries auf der anderen Seite. Während letztere gewöhnlich mit der Web Applikation selbst im Browser jedes mal geladen werden, i.d.R. in Form einer externen JavaScript Datei, sind die Plattformen typischerweise einmal auf dem Gerät installiert und können dann Applikationen bestimmte Grundfunktionalitäten zur Verfügung stellen. Zum Beispiel benötigen die Opera Plattform Widgets die Opera Plattform, während die Nokia Widgets die S60 Plattform benötigen.

Welche existierenden Mobile Ajax Frameworks, Toolkits und libraries sollte ich verwenden?

Derzeit gibt es keine speziellen Mobile Ajax Frameworks, Toolkits oder Libraries.

Alles, was für Ajax auf mobilen Geräten nötig ist, ist die Unterstützung von:

  • HTML
  • JavaScript
  • XHR - XMLHttpRequest
  • DOM - Document Object Model or at least innerHTML support

Eine Library, die speziell darauf abzielt, eine Abstraktion für Ajax Funktionen auf eingeschränkten Webbrowsern zu bieten, wird derzeit von PavingWays entwickelt. Die Library heisst “Frost” und ist ein Open Source Projekt. Frost wird unter einer MIT Lizenz Mitte 2007 verfügbar sein.

Kann ich existierende Frameworks, Libraries und Toolkits benutzen?

Einige existierende Frameworks, Libraries und Toolkits funktioineren in der Tat auf einigen mobilen Browsern. Im Allgemeinen jedoch benötigen diese Libraries zu viel Speicherplatz und implementierte Features, die wahrscheinlich nie auf mobilen Geräten zum Einsatz kommen (z.B. drag + drop).

Mit Zunahme der Leistungsfähigkeit der mobilen Browser wird diese Problematik an Bedeutung verlieren, da Browser Hersteller schon darauf hinzielen, dass ihre Browser der nächsten Generationen mit diesen Toolkits zusammenarbeiten werden - jedoch ist der Overhead immernoch da. Man kann auch davon ausgehen, dass einige dieser Frameworks mobile Versionen veröffentlichen werden, daher ist es mehr eine Frage der Zeit, wann wir spezielle Unterstützung der mobilen Browser in diesen Libraries und Toolkits sehen werden.

Was ist die Beziehung zwischen Mobile Ajax und Mobile Widgets?

In seiner Gesamtheit besteht Ajax aus XMLHttpRequest + DOM Scripting + XHTML/CSS. Funktionsgemäß passieren zwei Dinge dabei: Daten werden asynchron abgerufen und die Informationen, die dabei abgerufen werden, werden auf einem Client durch JavaScript ausgewertet und ausgegeben.

Die meisten Widget Engines benutzen den asynchronen Teil einheitlich, zeigen aber Unterschiede im Bereich der Darstellung der Applikation. Während dies zu Fragmentierung der Widget-Technologien führt, bleibt die Tatsache, dass Ajax, also asynchroner I/O und visuelles Rendering die grundlegenden Technologien sind, die Widgets möglich machen.

Im mobilen Bereich sehen wir das gleiche Phänomen, z.B. sehen wir Mobile Widgets, die durch Mobile Ajax angetrieben werden und auch einige Fragmentierungen. Es sollte ebenfalls erwähnt werden, dass es schon erste Bestrebungen für die Standardisierung von Widgets durch das W3C (W3C) gibt.

Welche Browser unterstützen Mobile Ajax?

Hier ist eine Liste der derzeit bekannten mobilen Browsern, die Ajax unterstützen, was bedeutet, dass sie Unterstützung für ein natives XMLHttpRequest Objekt oder ein äquivalentes ActiveX (im Fall von IE Mobile) bieten. Einige dieser Browser existieren schon und werden bereits ausgiebig genutzt, andere sind in Entwicklung und noch nicht verfügbar.

  • Opera Mobile (>= 8.x, not Opera Mini)
  • IE Mobile (WM 5.0/2003)
  • S60 3rd ed. (WebKit/KHTML core)
  • Minimo (Mozilla based)
  • OpenWave (>=Mercury)
  • NetFront (>=3.4)
  • Safari Mobile (iPhone)

Es sollte erwähnt werden, dass die Unterstützung für das XMLHttpRequest-Objekt oder ActiveX allein gewöhnlich nicht ausreicht, um Ajax-Aufgaben auszuführen. Die Browser müssen soweit JavaScript unterstützen, dass die abgerufenen Daten via DOM verarbeitet und dargestellt werden können, obwohl die Unterstützung von innerHTML in vielen Fällen auch ausreicht. CSS Unterstützung ist ebenfalls ein sehr wichtiges Feature, z.B. um Inhaltsbereiche zu verstecken und andere zu zeigen.

Es gibt auch andere Geräte als Telefone, die Web Browser beinhalten, z.B. Spielekonsolen wie der Nintendo DS und Wii oder Sony’s PSP oder PlayStation 3. Diese Geräte, teilweise mobil, teilweise stationär, beinhalten Webbrowser (Opera für Nintendo, NetFront für Sony), die vergleichbar mit denen auf Mobiltelefonen sind. Einige dieser eingeschränkten Browsers unterstützen Ajax (z.B. die Opera Browser in Tranzas Set-Top Boxen). Eine weitere wichtige Gemeinsamkeit ist, dass alle diese Geräte auch sehr beschränkte Eingabemethoden besitzen, manchmal viel begrenzter als bei Handys, z.B. 4 Buttons und ein 4-Wege Steuerkreuz auf der PSP.

Welche Enterprise-Applikationen verwenden Mobile Ajax?

SoonR ist einer der ersten Vorreiter von Mobile Ajax und scheint immer das Paradebeispiel zu sein. Die SoonR Applikation befasst sich primär mit dem Zugriff auf Daten des Desktops über ein mobiles Gerät. Die Applikation unterstützt primär Opera Mobile und den Browser des S60 Betriebssystems (3rd edition) für Ajax Funktionalitäten, aber es gibt auch eine Basisversion für andere Browser ohne Ajax. Diese Art von Enterprise-Applikationen bieten Mobile Ajax eine Chance, weil sie einerseits eine „rich browser based experience“ auf einem mobilen Gerät benötigen, auf der anderen Seite aber nicht von der Voraussetzung anhängig sind, auf die API des Geräts zugreifen zu müssen (z.B. auf das Telefonbuch des Handys).

Welche Rolle spielt das Apple iPhone in Hinsicht auf Mobile Ajax?

Obwohl es nur spekulativ ist, da es noch nicht viele Infos zum iPhone gibt, hat Apple bekannt gegeben, dass das iPhone kein Java und eventuell Flash unterstützen wird. Es ist sehr wahrscheinlich, dass der Web Browser des iPhones Ajax unterstützt. Wenn das passiert, könnten Widgets eine große Rolle auf dem iPhone spielen - mit Mobile Ajax als eine der benötigten Technologien.

Wie passen Applikationen wie Mojax oder Bling Software ins Bild?

Mojax und Bling Software sind Beispiele für Applikationen, welche Mobile Ajax mit Java als eine Middleware benutzen. Ajax eigent sich gut als Präsentationsebene, weniger aber für den Zugriff auf die Gräte-API (Bluetooth, Kamera etc.). Dort sind Technologien wie J2ME/BREW/C++ bereits etabliert und werden häufig genutzt. Deshalb ist es möglich, die vereinten Stärken von jeder dieser Technologien zu nutzen (J2ME + Ajax), um die bestmögliche Erlebnis zu schaffen.

Während diese Applikationen nicht ausschließlich offene Standards benutzen, machen diese Applikationen natürlich Sinn und zeigen auch, dass Ajax einer der fundamentalen Bausteine in der Applikationsentwicklung sein kann - entweder im Webbrowser oder innerhalb von Java/C++ Applikaitonen.

Tatsächlich verfolgt Sun mit der Java FX Technologie einen ähnlichen Ansatz.

Wie kann man für alle Browser entwickeln und testen?

Im Prinzip genauso wie für das Web heute: Webstandards benutzen, dann einen Referenzbrowser finden (Opera Mobile, Nokia S60, Internet Explorer Mobile, etc.) und diesen kontinuierlich bei der Entwicklung verwenden. Um die Kompatibilität zu maximieren, sollte zu erst eine normale Webseite geplant und entwickelt werden (ohne Ajax) welche dann progressiv verbessert und mit Ajax ausgestattet wird. Diese Seite oder Applikation sollte auf einfachsten Telefonen (WAP 2.0 - XHTML-MP - no DOM/XHR) getestet werden, um sicherzustellen, dass sie auch auf den Browsern, die kein Ajax unterstützen, funktioniert.

Was sind (derzeit) die Hürden, um Mobile Ajax Applikationen zu implementieren oder auszuführen?

Das größte Hindernis ist das gleiche wie auf Desktop Browsern: die Unterstützung in den Browsern. Mit mehr Browsern als im Desktopbereich und größeren Unterschieden in deren Unterstützung für Webstandards und den für Ajax benötigten Technologien, stellt der mobile Bereich dabei ein echtes Problem dar, was viele Entwickler bisher davon abgehalten hat, die Entwicklung über anfängliche Tests hinaus auszuweiten.

Ein weiteres technisches Problem ist die HTTP Latenzzeit. Das Laden von nur einigen Bereichen einer Webseite in einer mobilen Webapplikation kann dadurch oft genauso lange dauern wie das Laden der ganzen Seite (natürlich ist die Datenübertragung und die Darstellung trotzdem kleiner/kürzer). Dies ist stark von der Verbindungsart abhängig und kann auch durch die Implementierung des Proxys auf Seiten des Netzbetreibers anhängig sein.

Des weiteren können Stromverbrauch und Akkunutzung ein Problem in Ajax Anwendungen darstellen. Wenn eine Ajax Applikation ständig Verbindung zu einer Datanquelle im Netz hält, um z.B. nach geänderten Daten Ausschau zu halten, wird sich dies nicht nur negativ auf die Akkulaufzeit auswirken, sondern auch hohe Traffic-Kosten für einige Benutzer bedeuten. Daher sollte Ajax-Funktionalität in einer verantwortungsvollen und angemessenen Art und Weise angewendet werden, besonders bei Applikationen im mobilen Bereich.

Während Mobile Ajax und mobile Widgets viel Potential versprechen, sind sie imemr noch auf einfache Funktionen und Applikationen beschränkt.

Was ist AHAH / AJAH?

Desktop Computer haben viel mehr Speicher und CPU Leistung, sowie bessere Eingabemöglichkeiten. Mobile AJAX muss Geräten und in Browsern funktionieren, die in diesen Dingen eingschränkt sind, daher können die meisten herkömmlichen Ajax Libraries nicht für die mobilen Browser genutzt werden. Anstatt pures XML zu senden, macht es auf eingeschränkten Browsern viel Sinn, die Manipulation der XML Daten dem Server zu überlassen und nur die erforderlichen XHTML-Ausgaben an den Browser zu schicken.

Diese Technik, die AJAX sehr ähnlich ist, wird AHAH genannt - Asynchronous HTML and HTTP - or AJAH - (HTML anstelle von of XML). Im Grunde übertragen beide Methoden kein XML, aber vorgefertigte HTML oder XHTML-Ausschnitte und vermeiden dabei, dass XML Daten im Gerät selbst manipuliert werden müssen - was eine sehr CPU und Batterie-lastige Aufgabe sein kann.

Gibt es eine Standardisierungs-Initiative für Ajax?

Die Open Ajax Alliance ist zwar keine Standardisierungsorganisation, bringt aber verschiedenste Interessensvertreter der Industrie zusammen, dies beinhaltet auch Mobile Ajax.

Über die Autoren

Ajit Jaokar ist der Autor des Buches Mobile Web 2.0 und auch ein bekannter Blogger bei OpenGardens. Seine Keynotes/Präsentationen waren zuletzt auf Veranstaltungen wie der Web 2.0 expo, Java One, der Stanford university, MIT Sloan und 3GSM zu hören.

Rocco Georgi ist ein Webentwickler und der Mitgründer von PavingWays. Er ist ein häufiger Sprecher auf (Un)Konferenzen und der Entwickler der Frost Ajax Library - einer minimalistischen Ajax Library für eingeschränkte Browser.

Bryan Rieger ist Interaktionsdesigner und der Mitgründer von Yiibu, einer Firma, die sich mit mobilen Inhalten und Design befasst und sich in Edinburgh, Schottland befindet.

Reaktionen, Feedback und Verbesserungsvorschläge

Wir freuen uns Über Feedback und Verbesserungsvorschläge. Wenn Ihre firma interessante Arbeit in diesem Bereich leistet, ziehen wir die Aufnahme in die FAQ gern in Betracht. Bitte kontaktieren Sie ajit.jaokar at futuretext.com für alle Vorschläge.

Danksagung

Wir bedanken uns bei den folgenden Personen/Organisationen für Ihre Zusammenarbeit: