Eine Frage, die mich schon länger umtreibt ist: Welche Technologie kann man einsetzen, um multimediale Inhalte im Web zu präsentieren? Hier will ich nun ausgehend vom aktuellen Stand dieser Diskussion eine Prognose für die Zukunft wagen, und man kann vieleicht später nachschlagen, ob sich diese bewahrheitet hat.
Zuerst ein Blick zurück: Die erste Technologie für den Browser, die Sound, Animation und Interaktion ermöglicht hat, war Java. James Gosling hatte wohl zuerst nicht den Browser als Zielplattform für „OAK“ im Sinn, als er diese C-artige, ziemlich Objektorientierte Sprache schuf, jedoch wurde sie in Form von Applets als Möglichkeit, Programme, also kleine Applikationen im Web zu zeigen, schnell populär. Danach war Flash von Macromedia der Shooting-Star, wegen der Fähigkeit, resourcensparend großflächige Vektorgrafik-Animationen im Browser abzuspielen. Schrittweise wurde Flash um eine Programmiersprache erweitert, um auch Interaktionen mit dem Surfer zu ermöglichen. Flash und andere Plugins waren Cool, Barrierefreiheit ein Fremdwort. Dazwischen betrat LiveScript, eine ziemlich funktione Sprache, als Scriptsprache für den Netscape-Browser die Bühne. Aus Marketingründen wurde die Sprache gleich in Javascript umbenannt. (Heute würde man sie vielleicht iScript nennen.) Wenig später begann eine alte, neue Technologie, Ajax genannt, auf Javascript-Basis das sogenannte Web 2.0 einzuläuten. Viele andere Firmen erkannten die Zeichen der Zeit und wollten auch ihre eigenen Technologien in Form von Browser-Plugins platzieren.
Da wären:
-Macromedia mit Shockwave (Nicht Flash!)
-Microsoft mit Silverlight
-Sun mit JavaFX (Java-VM)
-Processing (Java-VM)
-Das W3C mit SMIL und SVG
-Google mit dem Native Client
Mehrere dieser Technologien unterstütz(t)en die Darstellung von (hardwarebeschleunigten) 3D. Weiter wurden speziele Plugins für 3D-Inhalte entwickelt, exemplarisch für proprietäre Technologie nenne ich Virtools und Unity3D; für Open Source Entwicklungen Blender und O3D, initiiert von Google. Auch Spezifikationen vom W3C zum Thema 3D im Web wurden gemacht, zuerst wurde VRML entwickelt, Tim-Berners-Lee hielt das 3D für die Zukunft des Web. Allerdings wurde diese Technologie nicht akzeptiert, zu wenig Leute hielten es für eine gute Idee, dreidimensional durchs Web zu fliegen, Vielen war die Benutzung des Browsers schon kompliziert genug. Andere wurden von der aufwändigen Installation und Konfiguration der Plugins abgeschreckt. Wieder andere wurden von den opftmals grottigen 3D-Räumen verschreckt.
Als schließlich erste Browser das Canvas (Kann-Was?)-Objekt der neuen HTML5-Spezifikation auf Initiative der WhatWG, einem Zusammenschluss der Browserhersteller, teilweise umsetzten, gab es noch die jetzt sehr aktuelle und viel diskutierte
Möglichkeit, einfach alles in einen rechteckigen Zeichenbereich im
Browser (Canvas) hineinzuprojezieren, und zwar ohne ein Plugin zu installieren. Dass dies als Alternative zu Flash geeignet ist, kann man bei den Cromeexperiments überprüfen, dort sind zahlreiche Demos zu begutachen, 3D-Beschleunigtes OpenGL (WebGL) inklusive. (Bitte aktuellen Browser verwenden, also nicht folgendes machen…) Google ließ daraufhin die Entwicklung von O3D in das Canvas-3D und WebGL einfließen. Auch das vom W3C mittlerweile in XML-umformatierte VRML, genannt X3D lässt sich mit modernen Browsern, die WebGL unterstützen, ohne Plugins mithilfe von ein paar Javascript-Parser-Tricks einfach darstellen und direkt ins HTML-DOM einbinden, (s. X3Dom).
Eine wichtige Fähigkeit dür Multimedia im Browser ist die Fähigkeit, Videos abzuspielen. Verschiedene Plugins kämpfen da um die Vorherschaft: Flash, Quicktime von Apple und Windows Media Player. Auch soll auf manchen Rechnern noch ein Real-Player installiert sein. Nur die Techniken, die sich als Container für moderne Kompressionsformate wie H264 oder Ogg Theora eignen, haben eine Chance. In HTML5 wird es ein Video-Tag geben, welches das einbetten von Videos kinderleicht machen soll, nämlich mit einem einfachen Tag. Leider streiten sich die Browserhersteller jetzt wieder darum, welches Kompressionsverfahren unterstützt werden soll. Kürzlich hat dabei Google ein eigenes Format angekündigt: WebM. Als Grund wird genannt, dass dieses Format garantiert Open-Source sei (Wirklich?). Die Folge aus diesem so entstehenden Zoo an Codecs und Formaten: Mann muss vermutlich mehrgleisig fahren und die Videos mehrfach für den jeweiligen Browser (und die jeweilige verfügbare Bandbreite) anbieten.
Inzwischen kam Steve Jobs noch in den Sinn, dass Flash böse sei und er es von seinen Produkten verbannen will. So kann man mit dem iPhone/iPod und dem iPad keine Flash-Inhalte ansehen. Adobe als Nachfolger von Macromedia reagierte panisch und sauer. Zuerst sah man in HTML5 und dem Canvas-Objekt eine alternative bei Apple für die Darstellung von Animationen und Interaktionen auf mobilen Geräten und im Web. Auf den Safari-Browsern, auch auf der mobilen Version. funktioniert dies ganz gut. Es gibt aber auch bei Apple Alternativen, wie beispielsweise Gianduia, da man meint, dass HTM5 noch nicht soweit ist, allerdings rechnet man längerfristig damit. Auch bei Microsoft wird wohl über die Einstellung von Silverlight als Browsertechnik nachgedacht, zu Gunsten von HTML5.
Nun ist es zwar wunderbar, dass man auf Canvas-Objekt schön zeichnen kann und sogar OpenGL und Shader programmieren kann, allerdings gibt es noch kein (mir bekanntes) Framwork, welches dies erleichtert. Auch bietet noch keine Grafiksoftware die Möglichkeit, 2D oder 3D-Animationen derart zu exportieren.
Aufgrund dieser Tatsachen und der Probleme bei der Einbettung von Videos läge es nahe, eine bereits vorhandene Software um diese Fähigkeiten zu erweitern. Diese sollte den kompfort bieten, animierte Grafik inklusive Interaktionen für HTML5 zu exportieren. Vermutlich wird hier eine kommerzielle Umgebung das Rennen machen. Wird es Microsoft Expression Blend oder Flash sein? Auch Opensource-Umgebungen sind in den Startlöchern, wie Processing.js. Die Frage, die ich mir hier stelle ist folgende: Wird es eine zusätzliche Abstraktionsebene geben, wird man in einer extra Programmiersprache wie Actionscript, ObjectiveJ, Processing oder ähnlichem programmieren? Oder wird ein Javascript-Framework das Rennen machen, bei dem man wie in JQuery immer noch in Javascript, der eigentlichen Zielsprache programmiert? Dass das mit der Compilierung zu Javascript gut klappt, hatt jüngst wieder Google mit GWT bewiesen. Dort kann man Java-GUI-Anwendungen zu Javascript kompilieren, inklusive einer Server-Seite. Auch wenn Javascript gerade sehr ge-hyped wird, meine ich, dass es eigentlich keine schöne Sprache ist, wozu bräuchte man sonst solche Framworks wie Mootools?
Hier also meine Prognose, die gleichzeitig eine Aufforderung an die Flash-Entwickler ist: Flash wird (sollte!) HTML5 exprotieren können, inklusive aus AS3 compilierten JS-Code, inklusive 3D-Animationen, inklusive WebM-Videos. Nur Flash hat das Potential, solches in Zukunft zu leisten, auch wenn ich im Herzen einer Open-Source-Alternative nicht abgeneigt wäre. So könnte man wirklich komfortabel enwickeln, das Ergebnis würde überall darstellbar sein, da man auch gegebenenfalls gleich die passenden Fallback-Lösungen mit exportieren könnte, da nicht zu erwarten ist, dass sich die Browserhersteller auf einen Standard einigen.