Tag-Archiv für Java-Script

HTML 5 vs Flash

Nicht zuletzt befeuert durch die kolportierten Äußerungen von Steve Jobs zu Flash und HTML 5 wird es einmal Zeit, sich des Themas unvoreingenommen zu widmen. Wir nutzen zwar Adobe Flash Technologie in Form von Flex, kleben aber nicht in dem Sinne an einer Technologie wenn es bessere Alternativen dazu gäbe.

Eines der Hauptargumente, das die Ablösung von Flash durch HTML 5 untermauern soll, ist der Einsatz von Video auf Webseiten. Flash hat Webvideo erst salonfähig und massenkompatibel gemacht, weil es kein zusätzliches Plug-in benötigte außer dem, was zumeist ohnehin schon vorhanden war. Von Version zu Version wurde die Qualität und die Performance der Videos besser. Mittlerweile lassen sich Videos in HD ansehen und bald auch in Ansätzen Hardware beschleunigt.

HTML 5 erlaubt nun auch das Abspielen von Videos ohne Plug-in, aber nicht in allen Browsern, sondern nur etwa in Safari oder Google Chrome – bei YouTube etwa kann man die Default-Anzeige umstellen. Die anderen mögen nachziehen, jedoch sieht man daran ein Problem bei HTML 5 und seinen Komplementär-Technologien: Es ist vor allem erst einmal ein Standard. Ein Standard, der nicht dazu verpflichtet von allen Browserherstellern gleich schnell implementiert zu werden. Es kann noch nicht einmal die Garantie gegeben werden, dass der Standard jemals in allen Browsers überhaupt umgesetzt wird – man erinnere sich beispielsweise an die Alleingänge von Microsoft in früheren Versionen des Internet Explorers.

Schaut man sich die großen Player im Web-Videogeschäft einmal, ist man über die reine Darstellung von Videoinhalten zumeist schon hinaus. Auf YouTube etwa werden in die Videos hinein Flashelemente gerendert, die entweder Zusatzinformationen, Werbung oder bei Musiktiteln Links zum direkten Kauf des Tracks einblenden. Diese Overlays in Webvideos stehen erst am Anfang ihrer Möglichkeiten. Reines Videoplayback wird zwar noch wichtig sein, aber durch neue, interaktive Formate ergänzt werden. Hier müssen HTML 5 und auch vermutlich auch HTML 6 passen und falls es doch einmal gehen sollte, wird es sicherlich etliche Jahre dauern, bis es überall zur Verfügung steht – wenn überhaupt.

Wenn es alleine um Video-Playback geht wird man Flash nicht mehr unbedingt benötigen. Aber Flash war nie nur ein Videoplayer sondern immer schon viel mehr, wird aber auch in diesem Feld seinen Platz weiterhin behaupten können.

Ein weiteres Thema in Sachen kommende Webstandards und Flash ist die Frage nach 3D im Browser. Flash kann schon seit langem 3D darstellen, es gibt verschiedene Engines, die von der Frame Rate her locker als Player für anspruchsvolle 3D Spiele dienen können. Mit den jüngeren Flashplayer-Versionen wird 3D auch immer intensiver von der Runtime unterstützt. Flash ist hier schon, wo HTML mit seinen zaghaften Experimenten gerade erst beginnt. 3D CSS ist sicherlich beeindruckend aber es ist momentan nur in experimentellen Versionen des Browserframeworks Webkit möglich, was beispielsweise die Basis für Apples Safari darstellt.

Auch bei 3D stellt sich die Problematik, dass der Zeitraum bis 3D in (eventuell) allen Browsern verfügbar sein sollte, so groß ist, dass Flash einige Jahre Zeit haben wird, seine Fähigkeiten zu erweitern und zu verbessern.

Es gibt sicherlich noch etliche andere Beispiele, an denen man die Problematik zwischen einem Standard und einer konkreten Runtime diskutieren kann. Das Problem ist immer, dass der Runtime-Hersteller dank der Proprietät der Runtime einfach seinen Standard setzt. Und durch die extrem große Verbreitung der Flash Runtime, sichert sie den technologischen Vorsprung und die Entwicklungsgeschwindigkeit, den sie gegenüber den offenen Standards hat.

Selbst wenn der Flashplayer unter Mac, um Steve Jobs Meinung aufzugreifen, vielleicht nicht ganz so performant wie sein Windows-Pendant ist, so muss man auch überlegen, was die Runtime leistet, wenn sie CPU-Ressourcen verbraucht: HD Video, 3D, Spiele, Rich Internet Applications etc. Ein leerer Flashfilm oder eine leere Flexanwendung verbraucht kaum CPU-Zyklen. Der Verbrauch an Prozessorpower  liegt zum einen daran, was die Runtime abzuarbeiten hat und zum anderen wie es der Entwickler programmiert hat.

Die Entwicklungen, die HTML 5, 3D CSS und die anderen, neuen Frontend-Technologien vollziehen ist sicherlich bemerkenswert und für Frontend-Entwickler eine nette Spielwiese. Aufgrund einiger zaghafter Anfänge aber bereits das Ende der Flash Technologie Plattform einzuläuten ist mindestens fünf Jahre verfrüht und im gegenwärtigen Stadium auch nicht sachlich. Und letztlich ist es das alte Katz und Maus Spiel: Flash prescht voran und wenn die Webstandards nachziehen, hat Flash wieder einen so gewaltigen Vorsprung und so weiter und so fort…

Der Ajax-Sonderfall: Google Web Toolkit (GWT)

Im letzen Blogpost ging es um die zunehmende Bedeutung von Java-Script und Ajax im Bereich der Rich Internet Application Technologien. Bereits mehrfach bemängelt wurde das Entwicklungsmodell und der Toolsupport für Java-Script. Es gibt zwar mit Netbeans, Aptana u.v.a.m. Tools, die die Programmierung mit Java-Script unterstützen, sie sind aber von ihrem Featurereichtum meilenweit von dem entfernt, was bei anderen Sprachen möglich ist. Ein Grund liegt auch in der Sprache, die viele Dinge, die Integrated Development Environments (IDE) möglich machen, unterbindet. Und letztlich – ganz subjektiv – macht die Programmierung mit Java-Script nicht sonderlich viel Spaß und die vielen Frameworks lindern diese Not nur teilweise.

Google hat schon sehr früh das Potential von Ajax erkannt und gleichzeitig die oben genannten Problempunkte adressiert und eine Möglichkeit geschaffen, Ajax Anwendungen zu erzeugen, die Ihresgleichen sucht: Das Google Web Toolkit oder kurz GWT. GWT ist mittlerweile in Version 1.6 erschienen und man kann schon seit einiger Zeit von einer ausgereiften Technologie sprechen. Nahezu alle Google Webanwendungen (inklusive von Google Wave) sind mit GWT erstellt worden.

GWT löst die lästige Java-Script Programmierung indem man in einer ausgewachsenen Sprache – namentlich Java – programmiert und dann seine Java Sourcen in eine Ajax Anwendung “kompiliert” (wobei natürlich kein binäres Kompilat entsteht sondern nur hochoptimiertes Java-Script). Durch diesen Geniestreich löst Google die Unzulänglichkeiten von Java-Script, denn es wird ausschließlich in Java programmiert. Zum anderen löst Google die Unterstützung durch Tools, denn es liefert nicht nur ein GWT-PLugin für Eclipse mit, vielmehr sind auch alle anderen für Java gedachten Eclipse-Plugins möglich. Auch weitere Tools aus dem Java Umfeld wie Continious Integration, Code Metrics und Analyse sind möglich. Auch die weiteren Vorteile der Java-Technologie wie die leichte Backend-Integration, die Verfügbarkeit qualifizierter Entwickler und die umfangreichen Bibliotheken dienen dem GWT-Ansatz.

Mit dem GWT muss sich der Web 2.0 Entwickler nicht mit Java-Script beschäftigen, auch nicht mit Cross-Browser-Kompatibilität und den ganzen Folgeproblemen, sondern kann wie gewohnt seine Java-Klassen schreiben und entwickelt so mächtige Anwendungen wie GoogleMail etc.

Ajax / Java-Script: Der lachende Vierte

Während sich Microsoft Silverlight, Adobe Flex und JavaFX eine erbitterte Schlacht nach der anderen um die Vorherrschaft im RIA Markt liefern, hat sich klamm heimlich eine vierte, an sich längst bekannte Technologie daran gemacht, das Feld von hinten aufzurollen. Die Rede ist von Java-Script auch in der Form von Ajax, was Dank des Zusammenspiels mit dem Canvas Element aus HTML 5 Dinge tun kann, von denen Webentwickler bisher nur zu träumen wagten – und das alles ohne Plugin, nur mit hauseigenen Browsermitteln.

Wer sich ein Bild von den Möglichkeiten verschaffen will, dem sei Chrome Experiments empfohlen – Voraussetzung dafür ist Safari 4, Google Chrome oder Firefox 3.5 Beta aufwärts. Wenn man das sieht, fragt man sich unwillkürlich: “Wie, ohne Flash gemacht?”. Die Antwort ist: “Ja”! Bis hin zu ausgefallenen 3D Modellen, die in Echtzeit animiert werden ist mit dem Gespann Canvas und Java-Script nahezu alles möglich und das mit guter Performance / Frames per Second.

Einen Grund für die enormen Verbesserungen in den genannten Technologien, sind die immer neuen Java-Script Engines, die die Sprache von Version zu Version deutlich beschleunigen. Auch die Java-Script Frameworks werden immer besser und schneller – genannt als Beispiel sei hier Sizzle aus dem jQuery Framework. Heutzutage langen ein paar Zeilen Code um Animationen oder Widgets zu erstellen, wie man sie bisher nur von Flash und Flex kannte.

Auch die letzte Hürde wird in Angriff genommen: Videos im Web mittels Flashplayer. Dank HTML5 geht auch das nativ, wie folgender Artikel zeigt. Auch der Platzhirsch Youtube hat eine HTML 5 Demonstration.

Das alles steht noch relativ am Anfang, die ersten Browser, die HTML 5 beherrschen sind aber vorhanden. Eine Extrawurst stellt der Internet Explorer dar, der auch in seiner achten Inkarnation nichts mit dem Canvas-Element anfangen kann. Aber es kann ja auch sein, dass sich der Markt einfach durchsetzt. Wenn etwa eine Technologie wie Google Wave ganz massiv das Canvas Element und HTML 5 unterstützt und diese die Traktion erfährt, die erwartet wird, kann Microsoft auch einmal in die Lage kommen, etwas nachzurüsten.

Alle RIA Entwickler und Entscheider sollten sich der Möglichkeiten des “neuen” Java-Scripts bewusst sein und sich ernsthaft fragen für was sich die Konzentration auf proprietäre Runtimes lohnt.