Medelsvår teknisk nivå
Tar 14 minuter att läsa

Flash har framtiden bakom sig

Utvecklingen av webbläsare går klart och tydligt mot CSS 3 och HTML5. Insticksprogram till webbläsarna kommer att bli en nischprodukt och mer handla om att tillföra funktioner i själva programmet, och mindre om att bygga ut webben. Det vi ser är samma utveckling för webbläsarplugins som vi sett och ser för IE6. Bort med allt gammalt mög.

Sedan lanseringen av Iphone har argumentet att den inte har tillgång till flash återkommit med jämna mellanrum från personer som hävdar att telefonen är sämre än konkurrenterna. Men är det verkligen så att avsaknaden av ett insticksprogram är det sämsta som hänt sedan webben formades för snart 20 år sedan? Är det inte så att gammal uttjänt teknik bör försvinna till förmån för ny och bättre? Ungefär som Internet Explorer 6 har bromsat utvecklingen allt för länge, och nu äntligen är på väg bort.

Ett gammalt, gammalt program

Flash introducerades 1996 och var byggt med Director som förlaga. Director har gamla anor på macen, och dök upp första gången under namnet Vectorworks redan 1986 som ett visuellt ramverk för att bygga körbara multimediala program som till exempel spel. Fördelen med att bygga programmen i ett sådant ramverk är att allt avancerat sköts av ramverket, och det räcker med att man använder ett mycket enkelt skriptspråk för att styra händelser och funktioner. Från Director exporterar man sedan ett fullt fungerande program som kan köras fristående från ramverket – en projektor.

Det här sättet att skapa program påminner väldigt mycket om hur man idag kan bygga extremt avancerade och kraftfulla program som körs från webben. Ramverket som håller all kontakt med hårdvaran är webbläsaren, och skriptspråken är javascript, HTML och CSS. Mer om det nedan.

Director blev snabbt populärt, och när CD:n började bli vanlig som distributionsmetod fick man plötsligt extremt mycket utrymme som kunde användas för ljud och video. En stor marknad uppstod för spel som var fyllda med multimedia, men som inte krävde hög prestanda. Barnspel var i regel byggda med Director.

I den här vevan började webben ta fart som distributionsmetod av information, men klarade inte av speciellt stora informationsmängder. Nog för att Macromedia – som ägde Director på den tiden – byggde ett insticksprogram för webbläsare som klarade att spela upp shockwave-filer, men begränsningarna var så stora att det behövdes en alternativ metod att bygga multimedia för webben på.

Flash föds

Ett enklare, mindre resurskrävande och framför allt mindre utrymmeskrävande multimediaformat var det man såg behövdes. Speciellt eftersom tröskeln till att börja utveckla med Director var ganska hög, och inte tilltalade formgivare, filmare och musiker speciellt mycket. Reklambyråerna tyckte helt enkelt att det var för krångligt och jobbigt att lära sig Lingo (skriptspråket i Director) och att det tog för lång tid att få fram något som gick att använda.

Flash å andra sidan byggdes just för att tilltala formgivare genom ett klicka-och-drag-gränssnitt, och lanserades som ett sätt att kunna ha samma totala kontroll på utseende som man har på trycksaker. Något AD:s och originalare på reklambyråerna köpte direkt.

Webbplatser byggda i flash

Det visade sig ganska snabbt att flash inte alls var universella lösningen för webben. Vill man ha en webbplats som är levande och uppdateras kontinuerligt är det extremt omständligt att ha byggt den i flash. Tillgängligheten blir urusel vilket bland annat medför att inte alla kan använda sajten och att sökmotorer inte kan indexera innehållet och driva trafik till den. Förutom att stora delar av de funktioner som fungerar i resten av operativsystemet inte nödvändigtvis fungerar i en flashfilm. Saker som skrollhjul på musen och klipp-och-klistra kräver extra stöd från utvecklaren, och helt plötsligt har man inte bara förstörts webbens grundidé, utan även själva datorns funktioner.

Video kräver bandbredd

Det som verkligen fick flash att ta fart var Youtubes lansering 2006 och de snabba internetuppkopplingarna som dök upp i samma veva. Att Youtube valde flash som teknik för att leverera video var ett val som förvånade många som trott att video på webben var en kamp mellan Real, Windows media och Quicktime. I och med Youtubes val raderades de aktörerna mer eller mindre ut helt på bara ett par år.

Adobes smarta drag att lägga till stöd för MPEG-4 AVC (h264) gjorde att kvaliteten på filmerna dramatiskt ökade, och att även professionella och semiprofessionella filmare förutom avancerade entusiaster började välja flash och AVC som publiceringsmetod på nätet. Flash dog som multimediamotor och återuppstod som ett videoleveransformat.

Men hur bra är flash egentligen?

Det är ytterst tydligt att motorn för uppspelning av flash inte direkt är välskriven och optimerad på macen. Exakt vad det beror på kan man bara spekulera i, men en inte allt för vild gissning är att det är ett sammelsurium av gammal och ny kod, och att Adobe inte visat något intresse av att optimera några program alls på Mac OS X. Bara att man tog ett drygt år på sig att släppa Photoshop i carbon från att Mac OS X 10.0 lanserats säger en hel del. Konstigt, kan man tycka, eftersom Adobe historiskt sett varit väldigt nära knuten till macen och först långt in på 90-talet släppte sina program även för Windows. Gränssnitten i programmen har även tydliga drag av Windows-utseende och att överhuvudtaget komma tanken att göra en egen öppna/spara-dialogruta i CS-programmen säger en del om deras inställning till macen nuförtiden.

Att då tro att Flash player skulle vara mycket bättre är knappast annat än en blåögd förhoppning.

Webkit, Iphone, Flash och Apple

När Apple bröt loss Webkit till ett eget projekt från KHTML var det nog många ögonbryn som höjdes. Ryggmärgsreflexen var nog att tro att huvudanledningen var att bygga en egen webbläsare för att konkurrera med Internet Explorer. Så här några år efteråt är det tydligt att det Apple var ute efter var att föra webben framåt på ett sätt som gagnade inte bara dem själva, utan även alla användare.

Betongklossar som Microsoft och Adobe hade stannat i utvecklingen och webben stannade som en följd av det. Trots gräsrotsrörelser som Browse Happy och personer som Jeffrey Zeldman så hände nästan ingenting för att föra webben framåt.

I och med att Mozilla 2003 ställdes på egna ben av AOL med en kassa på 2 miljoner dollar, och med Apples engagemang och start av Webkit och lansering av Safari året innan hade en grund för en stabil, finansierad utveckling av två separata renderingsmotorer lagts. Med Mozillas lansering av Firefox hösten 2004, och den snabbt stigande populariteten för webbläsaren började det finnas både vilja och utrymme för att vidareutveckla webben.

Det var tydligt att fokus för Mozilla var att få en stabil, snabb och utbyggbar webbläsare som framför allt riktade sig mot erfarna användare. Möjligheten till insticksprogram gjorde den populär bland teknikvana unga män. De i sin tur såg till att installera läsaren på alla datorer de kom i kontakt med, och den fick därmed en snabb spridning.

Apple å sin sida behövde Webkit för att ersätta den eftersatta HTML-tolken som användes till bland annat systemets hjälptexter. Med Mac OS X 10.4 och introduceringen av Dashboard började man även lägga grunden för en vidareutveckling av webbstandarderna genom att låta utvecklare bygga enklare skrivbordsprogram med hjälp av HTML, CSS och javascript. För att få möjlighet till animationer introducerades <canvas> som var ett helt nytt märkord där man styr hur grafiken ska se ut med javascript. Det här, skulle det visa sig, var grunden till HTML5.

Apples lansering av Iphone och med den uttalade planen att enda sättet att kunna köra program på den var genom webbläsaren som webapps slog ännu tydligare fast riktningen mot att utveckla teknikerna för webben ytterligare.

Där finns ingen plats för hemliga tekniker från en enda leverantör. Där finns inga insticksprogram. Där finns inte flash.

Webbläsaren som en port till hårdvaran

Tydligast blir det här när man tittar närmare på hur teknikerna utvecklas och kompletterar varandra. För animering finns CSS transforms (exempel för Iphone) där animeringen blir hårdvaruaccelererad och därmed betydligt mjukare på lågpresterande hårdvara jämfört med att animera med javascript. Även 3D-animering är möjlig via dels 3D Transforms i CSS och via WebGL (här är ett bra exempel) som är en skriptbar variant av OpenGL för att generera hårdvaruaccelererad 3D-grafik i realtid styrd via javascript. Principen för att visa grafiken är densamma som för 2D-grafik genererad i <canvas> och kräver inte speciellt stora kunskaper för att kunna användas.

Ovan visas ett bra exempel på 3D via CSS från Satine.

Den allra största fördelen med att flytta animering från javascript till ett webbläsaren är att man ökar prestandan på animationen. Mjukheten ökar och man kan lägga grafikgenereringen direkt på grafikprocessorn och därmed avlasta CPU:n. Det blir bättre helt enkelt.

Ovan visas ytterligare ett exempel på 3D Transitions.

Dessutom blir det lättare att dra nytta av möjligheterna till effekter genom att tröskeln för att kunna programmera för dem mer eller mindre försvinner. Att ha animeringsmöjligheter av objekt direkt i CSS öppnar upp för drösvis med webbutvecklare som inte i första hand är programmerare utan snarare jobbar med gränssnittsdesign.

Med WebGL kan man till exempel skapa webbaserade spel som kan utnyttja hårdvaran i princip lika effektivt som spel programmerade i Objective-C, och dessutom fungerar oavsett operativsystem.

Det är här vi ser att dagarna är räknade för tekniker som lägger ett ytterligare lager mellan operativsystemet och utvecklaren.

Video är den springande punkten

I och med att flashs popularitet tog fart först när video blev den stora grejen på nätet, så kan vi räkna med att när inte längre flash behövs för uppspelning av video så kommer också populariteten att minska.

Nackdelarna med att använda flash just för video är ganska överhängande jämfört med hur alternativet ser ut. Dels krävs en egenhändigt byggd spelare som har grundläggande funktioner för uppspelning, stopp och paus. Vill man fläska på lite så ska det gå att spola (eller vad man ska kalla det), visa i fullskärm och justera volymen. Det räcker alltså inte med att man gjort videon, man behöver ha en licens av Flash så man kan paketera filmen och skapa själva spelaren. Det har den senaste tiden dykt upp några fria spelare som Flowplayer som gör allt lite enklare, men trots det är det inte helt okomplicerat att få till det.

För material publicerat på Youtube och Vimeo kan man alltid använda deras inbäddningskod för att dra nytta av deras spelare, och med oEmbed blir det ännu enklare att bädda in media från de och liknande sajter. Bland annat har Wordpress från version 2.9 stöd för oEmbed.

Video i HTML5

Naturligtvis det som kommer att sätta den sista spiken i kistan för videouppspelning via flash. I och med Apples tydliga ställningstagande till fördel för MPEG-4 AVC och h264 och det mycket goda stödet för den tekniken i Quicktime och därmed också i QTKit i Mac OS X och motsvarande i Iphone OS har standarden för format och codec mer eller mindre satts där. Både Youtube och Vimeo har lanserat HTML5-versioner av sina sajter, och båda har valt MPEG-4 AVC som format. Inte speciellt konstigt i och med att båda sajterna länge levererat exakt samma video men med en flashspelare.

I dagsläget har Webkitbaserade läsare stöd för MPEG-4 AVC i <video> och Firefox har stöd för Ogg. Här är det förmodligen bara en fråga om tid innan Firefox får stöd för h264 också. Med så stora aktörer som Apple och Google som valt att lägga in stöd för, och leverera samma videoformat så kan man räkna med att det är det som kommer att gälla som en grundläggande de facto-standard.

Än så länge har video inte klarat av fullskärm, men alfaversionen av Firefox 3.6 och de nattliga byggena av Webkit sedan oktober 2009 har nu stöd för det.

Hos Jilion kan man se och testa Sublimevideo. Kräver en nightly build av Webkit för att köra fullskärm.

Grabbarna på Jilion i Schweiz har tagit fram en exempelsajt för hur man bygger en spelare i HTML5 och javascript som klarar fullskärm. Om man alt-klickar på fullskärmssymbolen så spelas videon även utanför webbläsarfönstret.

När blir det verkligehet?

Min förutsägelse är att det kommer att gå ganska fort nu. Fler och fler sajter kommer att byggas i HTML5 och där det är möjligt kommer hårdvaruaccelerering att utnyttjas. Vi kommer att få se stöd för CSS transitions i bibliotek som Jquery så att det inbyggda stödet i webbläsaren utnyttjas om det finns, och om inte görs animeringen istället på det gamla sättet.

Videouppspelning kommer att föredra HTML5 före flash för att göra innehållet tillgängligt för Iphone, Ipod touch och Ipad, men ändå behålla viss kompatibilitet med Internet Explorer.

Men på sikt kommer flash att gå samma väg som IE6 går nu. Mot en säker död.

Hoppa högst upp på sidan

Hoppa högst upp på sidan