Flash, JavaScript und HTML5: Gegenwart und Zukunft
Die Diskussion um Flash und dessen Einsatzgebiete dürfte unter Webentwicklern oft ein Streitpunkt darstellen. In der Regel findet der Dialog zwischen Flash-Evangelisten und Web-Standard-Veteranen statt — die Frage nach der Verwendung von Flash wird dementsprechend bewertet. Mit HTML5 werden sich in ferner Zukunft in diesem Bereich sicherlich einige Veränderungen zeigen. Man sollte HTML und Flash jedoch nicht als Konkurrenz, sondern als gegenseitige Ergänzung ansehen. Da ich Web-Projekte sowohl mit HTML/CSS als auch mit Flash realisiere, will ich den aktuellen Stand der Techniken beleuchten.

Zum einen stellen der Open Source-Gedanke und offene Standards wichtige Aspekte dar. Das Flash-Format ist proprietäre Closed Source-Software und wird dadurch als Holperstein im Bezug auf Web-Standards angesehen. Wie offen Flash im Vergleich zu HTML5 ist, wird zum einen in diesem Artikel beschrieben. Über diese Thematik gibt es im Netz mittlerweile etliche Diskussionen und Vorschläge. Zum aktuellen Zeitpunkt besteht die Tatsache, dass sich das Flash-Plugin auf nahezu jedem Computer mit Internetzugang befindet und Microsofts Trident-Engine noch mit über 50% am Browsermarkt vertreten ist. Wie sich diese Zahlen in der kommenden Zeit verändern werden, dürfte durch die Verbreitung von HTML5/CSS3 und modernen Webbrowsern ersichtlich sein.
Neben der Frage nach einem offenen Standard spielt bei der Konzeption von komplexen Webanwendungen und Image-Websites vor allem die Performance eine wichtige Rolle. Auf diesem Sektor zeichnet sich der Vorteil durch das Flash-Plugin aus, da aufwendige Animationen mit HTML5 bzw. JavaScript in den meisten Fällen noch relativ viele Ressourcen benötigen. Ein Paradebeispiel für gute Flash-Performance stellt Masayuki Kido mit seiner AS3.0 Performance Demo bereit. Dass mit JavaScript ähnliche Animationen bei einer vergleichbaren Geschwindigkeit möglich sind, zeigen unter Anderem Gerard Ferrandez oder Andrew Hoyer mit ihren Physik-Simulationen.
Da HTML5 in der Gegenwart noch nicht weit genug verbreitet ist (auf die breite Masse bezogen), stellt sich nun also die Frage, wann sich der Einsatz von Flash bzw. JavaScript lohnt. Hierzu sollte man sich einmal die Vor- und Nachteile der beiden Techniken ins Gedächtnis rufen. JavaScipt wurde hierbei ohne die Möglichkeiten von HTML5 und CSS3 bewertet, da sich diese Tabellen auf den aktuellen Stand der Technik und die Fähigkeiten des Internet Explorers beziehen sollen.
| Flash – Vorteile | JavaScript – Vorteile |
|---|---|
| Vektor- und PNG-Animationen | Gute Animationsmöglichkeiten für DOM-Elemente |
| Komplexe Grafik-Effekte (Farbton, Filter, etc.) | Geringe Dateigröße |
| Erweiterte Animationsmöglichkeiten (Timeline, Tweening, Keyframes) | Große Auswahl an Frameworks und Komponenten |
| Einfache Integration von Audio- und Video-Elementen | Ajax-Möglichkeiten |
| Viele Möglichkeiten bei Schrift-Einstellungen | Dynamische Manipulation von Websites |
| 3D-Engines und gute 3D-Fähigkeiten | Kompatibel mit fast allen mobilen Webbrowsern |
| Gleiche Darstellung in allen Browsern | Unterstützung in allen Browsern |
| Ausgereifte Authoring-Umgebung | Sofortige Validierung von Formulareingaben |
| Fertige UI-Komponenten | Viele UI-Bibliotheken und -Bausteine |
| Objektorientierte Skriptsprache | Objektbasierte und prozedurale Skriptsprache |
| Etliche 3rd-Party-Tools und Add-ons | Keine Entwicklungsumgebung erforderlich |
Genau wie Vorteile ziehen die Technologien auch Nachteile mit sich:
| Flash – Nachteile | JavaScript – Nachteile |
|---|---|
| Notwendigkeit eines Plugins | Mankos in der Performance (bei komplexen Animationen) |
| Hohe CPU-Belastung | Fehlende Kantenglättung |
| Lange Ladezeiten (bei komplexen Projekten) | Keine aufwendigen Bewegungsabläufe (Einzelbilder, Keyframes, etc.) |
| Mankos bei der Suchmaschinenoptimierung | 3D-Funktionalitäten sind eingeschränkt (durch Performance) |
| Fehlende Unterstützung auf vielen Mobiltelefonen | Differenzen bei bestimmten Effekten in Internet Explorer |
| Defizite bei Zugänglichkeit und Usability | Kein umfangreiches Asset-Management |
| Kosten für Flash-Software | Quellcode in der Regel nicht geschützt (Möglichkeiten durch Obfuscation) |
| Mögliche Probleme, wenn kein aktueller Flash-Player installiert ist | JavaScript kann vom Benutzer deaktiviert werden |
| Eventuelle Sicherheitsprobleme im Flash-Plugin | Schwächen bei der Integration von Audio- und Videoelementen |
| Limitierungen beim User-Tracking | Defizite bei objektorientierter Entwicklung (keine echte Vererbung, etc.) |
Die Listen sind sicherlich nicht vollständig und sollten nur als ungefähre Referenz angesehen werden. Jeder Punkt variiert je nach Projekt und dennoch gibt es klare Aspekte, durch die sich die beiden Technologien unterscheiden. Somit lassen sich auch in etwa die Einsatzgebiete definieren, für die sich jeweils Flash oder JavaScript besser eignet (die Bereiche sollten wieder als Empfehlung verstanden werden und können je nach Projekt abweichen):
| Flash | JavaScript |
|---|---|
| Umfassende Präsentationen mit Audio- und Video-Anteilen | Interaktive Website-Elemente (Accordions, Tooltips, Dropdown-Menüs, Tabs, uvm.) |
| Spiele | Formular-Validierung |
| Rich Internet Applications | Ajax-Funktionalitäten |
| Komplexe 3D-Animationen | Slideshows und Bildpräsentationen |
| Audio- und Video-Player | Komplexe DOM-Manipulationen |
| Simulationen aller Art | Echtzeit-Ereignisse mit Cross-Domain-Abfragen |
| 360° Panorama-Betrachter | Chats |
Diese Einteilung basiert zum größten Teil auf subjektiven Erfahrungen. So dürfte jedem die JavaScript-Umsetzung von Super Mario Kart bekannt sein und daher lassen sich durchaus auch Spiele oder Simulationen bis zu einem gewissen Grad mit JavaScript umsetzen. Auf der anderen Seite können auch Slideshows und Accordions genauso gut mit Flash realisiert werden. Der Bereich "Rich Internet Applications" deckt diese Funktionen im Grunde ab. Es hängt nicht zuletzt vom Budget und der Zielgruppe ab, für die eine Online-Präsentation konzipiert wird.
Die Kluft zwischen JavaScript und Flash dürfte sich in der Zukunft stark verringern. Browserhersteller und verschiedene Arbeitsgruppen arbeiten an vielen Techniken, mit denen sich umfangreiche Multimedia-Auftritte auch ohne den Einsatz des Adobe-Plugins erstellen lassen. Daher werden in absehbarer Zeit die oben genannten JavaScript-Aspekte mit den Flash-Äquivalenten verschmelzen. Ein großes Manko von JavaScript-Animationen stellen derzeit noch bewegte Einzelbilder dar. Hier bietet Flash durch "Tweening" und den Einsatz von Keyframes wesentliche Vorteile. Für JavaScript stehen dennoch diverse Bibliotheken zur Animation von Einzelbildern bereit.
Die Web-Zukunft von animierten, interaktiven und multimedialen Auftritten wird also im Wesentlichen geprägt sein durch:
- HTML5-Funktionalitäten (Canvas, SVG, Video, uvm.)
- CSS3-Transitions (für DOM-Animationen)
- WebGL-Standard
- DirectX-Beschleunigung für JavaScript-Animationen und Kantenglättung
- Größere Verbreitung von JavaFX
- Schnellere JavaScript-Engines der Webbrowser
Das bedeutet auch, dass Adobe sein proprietäres Browser-Plugin durch Innovationen aufbessern muss. In dieser Richtung zeichnen sich heute schon diverse Trends aus:
- Überarbeitung der Flash-Unterstützung bei Mobiltelefonen
- Hardwarebeschleunigung von Flash-Videos
- Bessere Suchmaschinenoptimierung für Flash-Websites (bestehende Kooperation von Adobe und Google)
- erweiterte 3D-Funktionalitäten, die nativ mit Flash genutzt werden können
Hier wird Adobe sicherlich noch einige Ideen ins Spiel bringen, die das Flash-Plugin auch zukünftig attraktiv machen werden. Derzeit ist man bei besonders bewegungslastigen Web-Auftritten und Video-Inhalten mit Flash noch besser bedient. Bei den "Favourite Website Awards" erhält man stets einen guten Eindruck von dem Einsatzgebiet, für das die Flash-Technologie genutzt werden sollte. Mit den neuen Standards könnten derartige Animationen schon bald mit HTML5 und Javascript realisiert werden und zudem bei einer ordentlichen Geschwindigkeit abgespielt werden.