Im Wettstreit

Dass Adobes Flash auf dem Gebiet der Rich Internet Applications gewichtige Konkurrenz bekommt, war bereits klar, als Microsoft vor rund einem Jahr Silverlight 1 vorstellte. Jetzt gibt es die Version 2, die technisch deutlich aufholen soll.

In Pocket speichern vorlesen Druckansicht 9 Kommentare lesen
Lesezeit: 16 Min.
Von
  • Kai König
  • John-Daniel Trask
Inhaltsverzeichnis

Adobe und Microsoft besetzen einerseits mit Flash, Flex und AIR (Adobe Integrated Runtime) sowie andererseits mit WPF (Windows Presentation Foundation) und Silverlight die Pole Position der Rich Internet Applications (RIA). Der Begriff – im Jahr 2002 von Macromedia im Zusammenhang mit Flash MX und Applikationen für Flash Remoting geprägt – und sein dreibuchstabiges Akronym werden gegenwärtig an vielen Stellen und seitens verschiedener Hersteller hochgejubelt.

Schaut man sich die Installationsbasis des Flash-Player-Plug-in an und ruft sich ins Bewusstsein, mit welcher Marktmacht Microsoft Techniken zum De-facto-Standard befördern kann, so ist zu vermuten, dass sich das Duell um die RIA-Technik der Zukunft zu einem guten Teil zwischen Microsoft und Adobe abspielen wird.

Dieser Artikel stellt beide RIA-Modelle vor, versucht sich aber bewusst nicht an einem Vergleichstest. Vielmehr soll er zeigen, welches die Kernelemente beider Ansätze sind und wie sich diese in der jeweils anderen Plattform widerspiegeln.

Silverlight ist Microsofts aktuelle Entwicklungsplattform für Rich-Internet-Applikationen, die der Hersteller mit dem Ziel ins Rennen geschickt hat, sich als Alternative zu Flash, Flex und anderen RIA-Frameworks zu etablieren.

Die Auslieferung einer Silverlight-Anwendung erfolgt über den Webbrowser, für die Darstellung steht für verschiedene Plattformen ein Browser-Plug-in zur Verfügung. Microsofts Ansatz ähnelt damit stark dem Modell, das der Mitbewerber Adobe nutzt, um Flash- oder Flex-Applikationen auf der Client-Seite auszuführen.

Die Version 1.0 von Silverlight wurde am fünften September 2007 veröffentlicht [1]. Sie stellte ein einfaches Präsentations-Framework bereit, das mit XAML (Extensible Application Markup Language) arbeitet, einer XML-basierten Markup-Sprache, die Microsoft für das Windows Presentation Framework entwickelt hat.

Mit dieser ersten Release konnten Entwickler einfache Animationen mit Shapes und Text erzeugen, videobasierte Inhalte einbinden und mit dem DOM (Document Object Model) der die Anwendung umgebenden Seite interagieren. Eine weitergehende Applikationsentwicklung war nicht unmöglich, jedoch technisch herausfordernd.

Mit der Beta von Expression Blend 2.5 können Entwickler Silverlight-2.0-Anwendungen erstellen – hier eine mitgelieferte Beispielanwendung (Abb. 1).

Das soll die zurzeit als Beta verfügbare Version 2.0 von Silverlight ändern (s. „Es werde Licht“ auf Seite 48 der Printausgabe). Eines der wichtigsten Features ist die Integration des .Net Framework in Silverlight. Dieser Schritt war technisch notwendig, kam aber selbst für eingefleischte Kenner von Microsoft ein wenig überraschend. Silverlight 2.0 basiert nun auf einer kompletten Implementierung der Common Language Runtime (CLR), die die Funktionen des .Net Framework in der Version 3.5 abdeckt. Für Entwickler bedeutet dies, dass sie prinzipiell jede .Net-Sprache wie C#, VB.Net et cetera zur Anwendungsentwicklung mit Silverlight 2 nutzen können.

Durch diese Öffnung der Plattform dürfte Silverlight 2 bald über eine genügend große Entwicklergemeinde verfügen. Das zum Betreiben der Anwendungen nötige Plug-in existiert für Windows und Mac OS X. Für andere Plattformen ist zurzeit keine offizielle Unterstützung verfügbar, für Linux ist jedoch mit Moonlight eine Open-Source-Implementierung auf dem Weg.

Zur Zielgruppe von Silverlight zählen nicht nur Entwickler, sondern auch Designer, die ein flexibles Canvas wünschen, in dem sie RIAs entwerfen können. Diesen Trend zu reichhaltigen Benutzerschnittstellen und ausgefeiltem interaktiven Design beobachtet man nicht nur im Umfeld der Rich Internet Applications, sondern in der Softwareentwicklung generell. Es reicht heutzutage nicht mehr, Marktführer nur auf einer technischen Grundlage zu sein, Organisationen müssen ebenfalls auf die oben genannten eher weichen Werte im Rahmen der Anwendungsentwicklung achten – ein Bereich, in dem Microsoft bislang kaum vertreten war, Adobe dafür mit seinen Kreativwerkzeugen umso stärker.

Bei einem Blick auf Adobes Flash-Plattform stellt sich zunächst die Frage, welche der verschiedenen Techniken Silverlight am nächsten kommt. Im Kern ist das Adobes RIA-Laufzeitumgebung, der Flash Player.

Allerdings ist dies keine hundertprozentige Entsprechung, denn Silverlight kommt mit eigenem SDK und der Integration in die CLR und die .Net-Welt, sodass zumindest Teile der Flash-Autorenumgebung sowie die UI-Klassenbibliothek von Flex für eine halbwegs korrekte Abbildung in Betracht gezogen werden müssen. Der oftmals getroffene Vergleich von Silverlight mit AIR, Adobes Desktop-Laufzeitumgebung für RIAs, ist übrigens falsch, da die technischen Ansätze sich signifikant unterscheiden.

Flex Builder 3 bietet einen Designmodus zur Anordnung der UI-Elemente in einer Applikation (Abb. 2).

Wie Silverlight- werden Flash- und Flex-Applikationen in einem Browser-Plug-in betrieben. Der aktuelle Flash Player liegt in Version 9 vor, auf Adobe Labs können interessierte Nutzer und Entwickler bereits eine Preview der Version 10 herunterladen.

Es war seinerzeit Macromedia, das mit Flash MX und der Unterstützung von RPC-Aufrufen aus Flash heraus zu Backend-Applikationen das RIA-Konzept prägte. Damals handelte es sich bei der Laufzeitumgebung um den Flash Player 6, und sowohl Macromedia als auch Adobe haben in der Zwischenzeit an ihrer Plattform geschraubt.

Adobe bietet zwei grundsätzlich verschiedene Arten, RIAs für den Flash Player zu erzeugen. Die erste nutzt die Flash-Autorenumgebung und die mit dieser verbundenen Metaphern wie Movieclips, Timeline, Frames et cetera. Die andere basiert auf Flex und bietet neben dem aus Flash bekannten Actionscript eine XML-basierte Markup-Sprache (MXML) zur Deklaration von Benutzerschnittstellen in Flex.

An dieser Stelle besteht ein grundlegender Unterschied zum Silverlight-Modell. SL-Entwickler können sowohl den Client als auch Serveranwendungen auf Basis von Microsofts CLR in der .Net-Sprache ihrer Wahl entwickeln. Die Flash-Plattform trennt strikt zwischen Client und Server – Adobes Verantwortung reicht prinzipiell mit MXML und Actionscript nur bis zum Übergabepunkt der Applikationsdaten zwischen Client und Server.

Silverlights Browser-Plug-in ist zurzeit 4,6 MByte groß und für automatische Updates konfiguriert. Benutzer können auf dem Client des Weiteren einstellen, wie viel lokalen Speicher Silverlight-Anwendungen auf dem Client nutzen können. Die Standardeinstellung per Domain ist 1 MByte. Das Plug-in steht für Mac OS X sowie Windows zur Verfügung.

Schaut man sich die Mechanismen des Flash Player an, sieht man, dass das Silverlight-Plug-in offensichtlich vom Modell des Flash-Plug-in inspiriert wurde. Je nach Plattform liegt die Download-Größe zwischen 1,4 und 5 MByte. Adobe unterstützt neben Mac OS X und Windows jedoch aufseiten des Plug-in zusätzlich Linux und Solaris mit aktuellen Versionen des Player. Die Konfigurationsmöglichkeiten erstrecken sich außer auf Speichereinstellungen pro Domain auf den Zugriff auf Mikrofon und Webcam sowie andere Hardwareanpassungen.

Zunehmender Beliebtheit erfreuen sich deklarative Sprachen in RIA-Frameworks, da sie die UI-Entwicklung einfacher gestalten. Im Falle von Silverlight stellt Microsoft XAML bereit, das erstmals im Rahmen des Windows Presentation Framework auftauchte. Der Hersteller hat die Markup-Sprache für Silverlight nicht wesentlich verändert, was Programmierern den Umstieg vereinfacht. Einige Teile der Sprache wurden jedoch speziell für die Anforderungen der Webentwicklung modifiziert.

Adobe hat MXML erstmals mit Flex 1.0 im Jahr 2004 eingeführt, in der Flash-Autorenumgebung taucht es nicht auf. Das Flex-Framework nutzt MXML sowohl für die Deklaration der Bedienoberfläche als auch für grafische und Audio-Effekte. Seit Flex 1.0 haben MXML und die hinter der Markup-Sprache liegende Actionscript-Bibliothek eine starke Wandlung erfahren – so hat der Hersteller mit Flex 2.0 einige Unausgewogenheiten bereinigt und die API stabiler und konsistenter ausgerichtet.

Bei Silverlight 1.0 handelt es sich um ein einfaches Präsentations-Framework, das XAML nutzt, um leichtgewichtige oder reichhaltige Webinhalte zu veröffentlichen. Das Entwicklungsmodell ist simpel gehalten und als Testballon von Microsoft in der RIA-Welt zu sehen. Silverlight 2.0 und seine .Net-Integration hingegen kann man als deutliche Ansage an die Mitbewerber verstehen, dass Microsoft mit Silverlight in der Riege der RIA-Frameworks einen Platz beansprucht.

Die Entwicklung von Silverlight-Anwendungen für Version 1.0 kann komplett mit Microsofts Expression Blend erfolgen, einer Anwendung, die sich an den Entwicklungs- und Design-Ansätzen von Adobes Flash-Autorenumgebung orientiert. Expression Blend unterstützt sowohl die WPF- als auch die Silverlight-Entwicklung. Der aktuelle Versionsstand ist 2.5 (Preview), und Microsoft versieht Expression Blend regelmäßig mit Updates, um die Kompatibilität zu den Beta-Releases von Silverlight 2 beizubehalten.

Ein gängiges Szenario für den Entwicklungsprozess mit Silverlight ist die kombinierte Nutzung von Visual Studio 2008 und Expression Blend. Da Silverlight 2 auf .Net basiert und somit die Nutzung von .Net-Sprachen ermöglicht, nutzen Entwickler oftmals Expression Blend für die Erstellung der UI und anderer visueller Elemente der Anwendung sowie VS 2008 für codezentriertes Arbeiten. Glücklicherweise hat Microsoft in Expression Blend das Projektformat von Visual Studio implementiert, sodass ein produktübergreifendes Arbeiten verhältnismäßig einfach ist.

Obwohl Silverlight die CLR von .Net 3.5 beinhaltet, ist die Base Class Library (BCL) der Standard-Version des .Net Framework nicht komplett enthalten. Der Grund für diese Restriktion ist, dass das Plug-in kompakt bleiben und die Silverlight-BCL nur solche Klassen enthalten soll, die im Kontext der Browser-Sandbox sinnvoll sind. Die in der Silverlight-2.0-BCL enthaltenen Funktionen beschränken sich daher auf die Unterstützung für LINQ (XML, JSON, Objekte), Webservices (XML, REST, WCF und ADO.Net Data Services), Sockets, Collections, Reflection, reguläre Ausdrücke und Data Access.

Ebenfalls Teil von Silverlight 2.0 ist Microsofts neue Dynamic Language Runtime (DLR) für die Ausführung dynamischer Sprachen wie IronPython und IronRuby in Silverlight.

In Adobes RIA-Welt findet man zurzeit hauptsächlich zwei genutzte Versionen des Flex-Framework: 2.01 und 3.0. Flex 2.01 ist die erste Release mit kostenlos erhältlichem SDK (bestehend aus Kommandozeilen-Tools wie Debugger und Compiler sowie der Flex-Klassenbibliothek). Mit Flex 3.0 hat Adobe das SDK sowie die Klassenbibliothek unter eine Open-Source-Lizenz gestellt und neben Bugfixes einige neue Features wie die bessere Unterstützung für die Internationalisierung oder auf dem Client gespeicherte Bibliotheken implementiert.

Die Werkzeug-Unterstützung ist in der Flash-Plattform ebenfalls zweigeteilt. Flash-basierte RIAs werden in der Regel zu SWF-Dateien kompiliert und in einer HTML-Struktur verankert.

Flash-Entwickler lassen sich grob in zwei Gruppen einteilen. Diejenigen, die via Flash-Animation und -Design zur RIA-Entwicklung gekommen sind, greifen typischerweise auf die Flash-Autorenumgebung und andere CS3-Werkzeuge zurück, um das Design zu erstellen; für die Codebasis nutzen sie dann Actionscript in Flash oder ein externes Werkzeug wie FDT (Flash Development Tool der Firma Powerflasher).

Entwickler, die hingegen den Zugang zur Flash-Plattform mit einem Hintergrund in klassischer Softwareentwicklung finden, tendieren meist zu einem anderem Workflow, der auf dem Flex-Framework und Adobes Entwickler-IDE Flex Builder basiert. Sie nutzen, analog zu Silverlight, MXML und Actionscript zur Entwicklung. Trotz allem spielt die Flash-Autorenumgebung in diesem Workflow eine wichtige Rolle, denn sie dient oftmals als Werkzeug zur Individualisierung von UI-Komponenten mithilfe von Styles und Skins, die aus der Flash-Autorenumgebung heraus als SWF-Datei exportiert werden.

Die Flash-Plattform bietet kein einheitliches Entwicklungsmodell, das über Client und Server hinweg funktioniert, was vor allem die .Net-Community häufg als Nachteil empfindet. Adobe hat diesen Weg gewählt, um eine Vielfalt von Backend-Techniken an die Flash-Plattform anbinden zu können, und so existiert neben XML-Webservices und HTTP-Aufrufen ein Remoting-Verfahren, das man über sogenannte RemoteObject-Klassen in Flex nutzen kann. Mithilfe eines serverbasierten Remoting Gateway lassen sich problemlos Plattformen wie Java, .Net, PHP und viele andere an Flex und Flash andocken.

Silverlight-Applikationen werden in einem einfachen Deployment-Prozess für Nutzer bereitgestellt. Prinzipiell muss der Entwickler nur einige wenige Schritte durchführen. Der Kernpunkt dabei ist, dass er auf Seiten des HTTP-Servers einen neuen MIME-Type einrichtet, sodass XAML-Dateien korrekt ausgeliefert werden können. Das Deployment an sich kann mithilfe von IIS oder Apache erfolgen (seit Silverlight 2.0), und die Silverlight-Anwendung als solche wird dann in der Plug-in-Sandbox auf dem Client des Nutzers ausgeführt.

Microsoft bietet zudem einen Hosting-Dienst namens Silverlight Streaming Services (SSS), der maximal 10 GByte kostenlosen Hosting-Speicher für Silverlight-Applikationen oder -Videoinhalte zur Verfügung stellt. Der Entwickler kann Videos direkt aus dem Expression Media Encoder heraus in SSS veröffentlichen und in einem Videoplayer seiner Wahl einbetten. Für Anwendungen steht eine Administrationskonsole bereit, in die sich Entwickler über einen Windows-Live-Account einloggen können.

Die Verteilung einer SWF-Applikation der Flash-Plattform ist denkbar einfach. Da im Regelfall die Quellen (eine oder mehrere FLA-Dateien oder AS/MXML-Quellcodedateien) zu einer oder mehreren SWF-Dateien kompiliert werden, reicht es, diese inklusive ihrer HTML-Wrapper auf einem beliebigen Weberver bereitzustellen. Die Plattform ist ebenfalls nicht von Bedeutung, sodass es keine Schwierigkeit bereitet, Flash-Anwendungen auf exotischen Hosting-Umgebungen anzubieten.

Will man eine Servertechnik über RemoteObject-Klassen nutzen, muss die SWF-Applikation wissen, über welches Remoting-Gateway sie diese ansprechen kann. Das kann und wird oftmals auf derselben oder einer benachbarten Hosting-Maschine der Fall sein, kann aber prinzipiell und unter Beachtung verschiedener Sicherheitsparameter auch eine entfernte Remoting-Gateway-Umgebung sein.

Eine der Neuerungen in Flex 3 ist die Unterstützung für das lokale Caching und Speichern des Flex-3-Framework auf Clientseite. Bislang wurden die Core-Klassen immer in die erzeugte SWF-Datei einkompiliert, sodass Nutzer von Flex-basierten Flash-Anwendungen sie unnötigerweise wiederholt laden mussten. Der neue Mechanismus lädt diese Framework-Klassen gegebenenfalls von einem Adobe-Server nach, sollten sie weder auf dem Client vorhanden sein noch im Kompilat der Applikation zur Verfügung stehen.

Vergleicht man die Klassen- und Komponentenbibliotheken von Flash und Silverlight, schneiden Erstere zurzeit besser ab. Speziell die UI-Komponenten von Flex 3 sind ausgereift und vielfältiger als Silverlights Oberflächen-Komponenten. An dieser Stelle muss man allerdings in Betracht ziehen, dass im .Net-Umfeld ein großer Markt an Drittanbietern für UI-Komponenten und andere Tools existiert. Einige dieser Firmen sind bereits auf den Silverlight-Zug aufgesprungen und haben Komponenten im Programm, die Silverlight auf ein vergleichbares Level mit Flex 3 heben.

Beide Firmen rüsten sich für ein Rennen um die RIA-Krone. Die Entwicklergemeinde aufseiten Silverlights ist verglichen mit Adobes Community von Flash-Plattform-Entwicklern noch klein. Gleiches gilt für die Verbreitung des Silverlight-Plug-ins verglichen mit dem Flash Player. Wie die Erfahrung jedoch zeigt, ist es für Microsoft relativ einfach, Techniken und Plattformen den richtigen Anstoß zu geben, sich auf breiter Basis durchzusetzen – gerade wenn man die große existierende .Net-Installationsplattform in Betracht zieht.

Ein gewichtiger Vorteil für die Flash-Plattform sind die vielen Nutzer der Flash-Autorenumgebung, von denen sich langfristig ein großer Teil zumindest am Rande mit Flex beschäftigen wird. Ebenfalls nicht außer Acht lassen darf man die Gruppe der von JavaFX enttäuschten Java-Entwickler auf der Suche nach einer alternativen RIA-Technik.

Letztendlich ist es unmöglich, eine Empfehlung auszusprechen. Wie so oft, kann der Rat nur lauten, sich im Einzelfall Projektanforderungen und andere Rahmenparameter anzusehen, um die für den Arbeitgeber oder Kunden am besten geeignete Plattform auszuwählen. Beide haben Vor- und Nachteile, und es scheint zurzeit nur schwer möglich, eine Vorhersage zu treffen, ob sich einer der beiden Ansätze durchsetzen oder ob eventuell ein Nebeneinander zumindest die nähere Zukunft prägen wird.

Kai König
lebt in seiner Wahlheimat Wellington, Neuseeland, und arbeitet dort als Software Solutions Architect für Ventego Creative Ltd.

John-Daniel Trask
lebt und arbeitet in Wellington, Neuseeland, und ist Mitbegründer von Mindscape, einem Unternehmen, das sich auf .Net-Entwicklungswerkzeuge spezialisiert hat.

[1] Regina Dowling, Jörg Müller; Streifen am Webhorizont; Silverlight: Microsofts Antwort auf Flash; iX 7/07, S. 52

In der Printausgabe lesen Sie zwei weitere Artikel zum Thema, die sich mit der Silverlight- und Flash-Programmierung beschäftigen.

Mehr Infos

iX-TRACT

  • Mit Flash, Flex und AIR auf der einen Seite und WPF, Silverlight und Expression Blend auf der anderen bieten Adobe und Microsoft Entwicklern Plattformen mit zugehörigen Entwicklungswerkzeugen für Rich Internet Applications.
  • In beiden Fällen dient ein Browser-Plug-in der Darstellung der Inhalte, und beide Plattformen stellen deklarative Markup-Sprachen für die Beschreibung der Oberfläche zur Verfügung.
  • Silverlight-Anwender können sowohl Client- als auch Serveranwendungen in der .Net-Sprache ihrer Wahl entwickeln, Flash-Entwickler hingegen können MXML- und Actionscript-Programme nur für den Client erstellen.

(ka)