RIA-Technologien im Vergleich

Online oder offline, im Browser oder über eine eigenständige Runtime-Engine: Rich Internet Applications können vielfältig daherkommen.

Artikel erschienen in Swiss IT Magazine 2008/05

     

Rich Internet Applications, kurz RIAs, sind laut Wikipedia «Webanwendungen, die mit den Features und der Funktionalität herkömmlicher Desktop-Anwendungen aufwarten». Damit sich dieses Development- und Deployment-Modell auch durch Entwickler realisieren lässt, denen die Feinheiten von HTTP und Konsorten nicht bis ins Detail geläufig sind, haben zahlreiche Anbieter Tools und Frameworks für die RIA-Entwicklung auf den Markt gebracht – oder sie stecken, wie in manchen Fällen, gerade mitten in der Entwicklung.


RIA - was bedeutet das?

Im Vergleich zu einer herkömmlichen Webanwendung, meist als Abfolge von HTML-Formularen mit Programmlogik auf dem Webserver und einer Datenbank als Grundlage realisiert, bietet eine RIA ein stark grafikorientiertes Interface mit allen Bedienungselementen, die man von Desktop-Anwendungen kennt.


Je nach Technologie kommt als Client ein gewöhnlicher Browser zum Einsatz, der mit DHTML und Javascript «RIA-fähig» wird, oder ein Browser-Plug-in wie Flash oder Silverlight mit eigener Präsentationsschicht.
Flash- und Silverlight-Anwendungen ermöglichen mit ihrer Unterstützung für Animation und Multimedia-Elemente eine «reichere Benutzererfahrung» als rein auf Webstandards gebaute RIAs. Das kann sich aber auch nachteilig auswirken: Beide Technologien bieten bei der Gestaltung der Oberfläche praktisch unbegrenzte Freiheit, so dass zum Beispiel ein Button nicht als solcher erkennbar ist oder ein Scrollbalken untypisches Verhalten zeigt.


Webanwendungen ohne Browser

RIAs sind aber auch ganz ohne Browser möglich, wenn für Präsentation eine eigenständige Engine eingesetzt wird, ein sogenanntes RIA-Runtime. Damit fällt ein Problem weg, an dem browsergebundene RIAs leiden: Die Bedienungselemente des Browsers sind bei einer RIA eigentlich überflüssig. Im besten Fall sind sie nutzlos, besonders der Back-Button kann aber auch zu ernsthaften Problemen im Ablauf führen, wenn er zur falschen Zeit benutzt wird.



Bekannte Beispiele von RIA-Runtimes sind AIR (Adobe Internet Runtime) und das Mozilla-Projekt Prism, das sich noch im Experimentalstadium befindet. In beiden Fällen muss auf dem Clientsystem zuerst das Runtime-Paket installiert werden.
Bei Prism lässt sich danach jede Webanwendung durch Angabe des URL in eine Standalone-RIA umwandeln. Eigentlich ist Prism in der aktuellen Form aber nur ein Browser ohne die typischen Bedienungselemente. Die «umgewandelte»

Webanwendung erscheint im Prism-Fenster ansonsten gleich wie im Browser – eigene Menüs sind zum Beispiel nicht möglich.
AIR-Anwendungen müssen dagegen speziell für die Adobe-Technologie entwickelt werden: Das Ergebnis ist ein .air-File, das der Anwender von der Entwicklerwebsite oder aus dem Adobe-eigenen AIR-Marketplace herunterlädt. Auf Basis des Flash-basierten Flex-Frameworks ermöglicht AIR nahezu beliebige Client-seitige Funktionalität und multimedial-interaktive Oberflächen. Auf der anderen Seite lassen sich AIR-Anwendungen wie bei allen RIA-Runtimes nur ausführen, wenn auf dem Zielsystem die Runtime-Engine installiert ist.


Online oder offline?

Die Aufbereitung der Benutzerschnittstelle erfolgt bei einer RIA auf dem Client, der grösste Teil der Programmlogik und Datenhaltung bleiben dem Web- und Datenbankserver überlassen. Dieses Online-Betriebsmodell funktioniert allerdings nur, wenn Client und Server ständig verbunden sind. Das ist zwar dank Breitbandanschluss und Mobilfunk der UMTS-Klasse zunehmend der Fall – aber eine Mobilverbindung wird oft unterbrochen, und der Anwender möchte vielleicht auch gar nicht, dass seine Software permanent mit einem Server kommuniziert.


Klassische Webapplikationen haben keinen Zugriff auf das Dateisystem des Clientrechners. Dies gilt auch für die typische RIA: Sie läuft in einer abgeschotteten Umgebung, einer «Sandbox». Verschiedene RIA-Frameworks bieten jedoch die Möglichkeit, Daten auf sichere Weise trotzdem lokal zu speichern.



«Local Storage» ist denn auch die Voraussetzung für offline-fähige RIAs, die auch ohne ständige Verbindung zum Server weiter funktionieren und nicht «Always Connected», sondern nur «Occa­sionally Connected» sind. Dies ist allerdings nur dann sinnvoll, wenn die für die offline genutzten Funktionen notwendige Programmlogik ebenfalls auf dem Client abläuft.Sobald eine Anwendung nur gelegentlich im Online-Modus läuft, braucht es zudem einen Mechanismus zur Synchronisation der lokalen Daten mit dem Server.


Eine «Occasionally Connected RIA» unterscheidet sich eigentlich nur noch dadurch von einer Desktop-Anwendung, dass als Grundlage plattformneutrale Internet-Technologien statt betriebssys­temspezifische Softwareschichten zum Einsatz kommen.


Pro und contra RIA

Anwendungen, die im Browser laufen, waren gegenüber klassischen Desktop-Anwendungen bis zur Verfügbarkeit spezieller RIA-Frameworks und Runtimes ziemlich mühsam zu entwickeln und sowohl funktional als auch punkto User Interface Einschränkungen unterworfen. Dennoch bieten webbasierte Applikationen von Haus aus verschiedene Vorteile:



- Keine Softwareinstallation nötig: Die Anwendung steht zur Verfügung, sobald die entsprechende URL aufgerufen wird. Zusätzlich benötigte Runtimes und Plug-ins sind nur wenige Megabyte gross und müssen nur beim ersten Aufruf heruntergeladen werden.




- Neue Versionen stehen automatisch zur Verfügung, Updates sind unnötig.



- Die meisten RIAs lassen sich plattformunabhängig von jedem mit dem Internet verbundenen Computer aus nutzen.



- Da die Verarbeitung in einer Sandbox abläuft, besteht bei RIAs prinzipiell weniger die Gefahr, dass das System durch Malware verseucht wird.

RIAs bringen aber auch gewisse Probleme mit sich:



- Wegen der Abschottung durch die Sandbox haben RIAs nur eingeschränkten Zugriff auf die Systemressourcen.



- RIA-Technologien mit eigener Präsentationsschicht können sich nicht darauf verlassen, dass auf dem Zielsystem alle gewünschten Ressourcen, zum Beispiel ein leistungsfähiger Grafikprozessor, vorhanden sind – dies gilt besonders für den mobilen Einsatz.



- RIAs auf Basis von Webstandards benötigen Javascript. Hat der User das Scripting deaktiviert, läuft die RIA auf seinem System nicht.



- Probleme mit Search Engines und Accessibility: Suchmaschinen können die mit einer RIA verwalteten Inhalte eventuell nicht indexieren, und nicht alle RIA-Technologien eignen sich zum Beispiel für einen Screenreader.


Welche RIA-Technologie?

Für den produktiven Einsatz kommen viele RIA-Technologien ohnehin noch nicht in Frage: Silverlight 2.0 steht erst in einer Betaversion zur Verfügung, dürfte aber künftig vor allem für .NET-erfahrene Entwickler zur ersten Wahl werden. Die aktuelle Version 1.0 bietet weniger Möglichkeiten und ist eigentlich nicht mehr als Microsofts Antwort auf den Flash-Player, erweitert um die Möglichkeit, HD-Video abzuspielen.


Bei Adobe gilt es zwischen Flash, Flex und AIR zu unterscheiden: Flash ist eine reine Präsentationstechnologie, bildet aber auch die Basis für Flex, das als Application Framework Funktionen bietet, die über die Oberfläche hinausgehen. AIR basiert seinerseits auf Flex und befreit als RIA-Runtime die Anwendungen aus dem Korsett des Browsers.



JavaFX existiert im Moment in Form der deklarativen Scriptsprache JavaFX Script, mit der man Oberflächen und Client-Funktionalität gestaltet. Als Basis nutzt JavaFX die Java-Runtime-Engine, auf der Serverseite kommt ebenfalls Java-Technologie zum Einsatz. Passend zur frei verfügbaren Scriptsprache bietet Sun auch eine spezielle Version der Runtime-Engine für Mobilgeräte an.


Google Gears ist kein komplettes RIA-Framework, sondern eine Ergänzung zu anderen, nicht offline-fähigen RIA-Technologien. Gears bietet Local Storage samt relationaler Datenbank, ergänzt durch Hilfsfunktionen für asynchrone Javascript-Verarbeitung.


Weniger bekannt sind die Enterprise-RIA-Plattform Curl und die RIA-Umgebung OpenLaszlo. Beide Plattformen sind bereits ausgereift – Curl liegt in Version 5 vor, OpenLaszlo hat kürzlich die vierte Ausgabe freigegeben. OpenLaszlo arbeitet mit der eigenen deklarativen Sprache LZX mit Basis JavaScript/XML und generiert aus dem Code schliesslich Output im Flash- oder DHTML-Format. Auch bei Curl kommt eine eigene Sprache zum Zug, die objektorientierte CurlLanguage – Curl benötigt im Gegensatz zu Openlaszlo aber eine Runtime-Engine.




RIA-Technologien im Vergleich

(ubi)


Artikel kommentieren
Kommentare werden vor der Freischaltung durch die Redaktion geprüft.

Anti-Spam-Frage: Vor wem mussten die sieben Geisslein aufpassen?
GOLD SPONSOREN
SPONSOREN & PARTNER