RIA-Technologien im Vergleich
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.
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.
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.
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.
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.
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