HTML5 vs. Flash player (se zvláštním přihlednutím k webovým aplikacím)
Když jsem napsal „Proč je vítězství HTML5 nad flashem dobré pro všechny”, zdálo se mi, že z něj vyplývají kromě jiných i tyhle dva úhly mého pohledu:
-
Jde mi o vítězství nad flash playerem, tím pluginem, který je nutný pro chod aplikací vytvořených v programu Flash.
-
Na celou záležitost se dívám z pohledu vývojáře web aplikací.
Z komentářů jsem pochopil, že jsem selhal v obou bodech a tímto předkládám ctěnému čtenáři reparát.
Východiska
Web aplikací se pro účely tohoto článku myslí aplikace typu Basecamp, MailChimp, Flickr, Google Reader, Twitter, Facebook — jejich kód je HTML, CSS, JavaScript a běží v prohlížeči.
Pokud píšu flash s málým „f” mám na mysli plugin flash player. Flash s velkým „F” je program, ve kterém se tvoří to, co se pak ve flashi přehrává.
Nad důsledky rozhodnutí Adobe o zrušení vývoje flash playeru pro mobilní zařízení se zamýšlím hlavně z pohledu web aplikací.
HTML5 je zastřešující termín pro HTML5, CSS3 a JavaScript.
Jestli tomu dobře rozumím…
Flash začínal jako program pro tvorbu animací, který nabízel i interaktivní složku. Proto se o něj zajímali spíš grafici, než kódéři nebo programátoři. Časem začal Flash uspokojovat poptávku po prostředí, kde se tvoří hry a na multimédia/interakci náročné aplikace.
A když už tu byla skupina vývojářů aplikací ve Flashi, řeklo si Adobe, že by mohlo rozšířit spektrum vyvíjených aplikací (a oslovených vývojářů) a uvedlo AIR (Adobe Integrated Runtime).
„Adobe AIR supports Flash applications by running them within a contained Flash Player instance, and HTML/JavaScript/Ajax web applications by running them within the included WebKit rendering engine.”
O něco podobného se, počítám, snaží i Microsoft se svým Silverlightem. Mimochodem, proto si také myslím, že to se Silverlight playerem dopadne podobně jako flashem.
OK, takže já tomu rozumím takhle: Obě firmy vyrábí nástroje pro vývojáře a všimli si rostoucího trhu web aplikací, který neobsluhuje žádné ucelené vývojové prostředí a řekli si, že by takové prostředí mohli nabídnout. Výměnou za to, ale výsledek musí běžet v jejich přehrávači – pluginu (flash player, AIR, Silverlight).
Co je špatně na pluginech
Kromě široce diskutovaných věcí, jako jsou náročnost na výkon hardwaru a bezpečností chyby, je pro mě jako tvůrce web aplikací nepřijatelné to, jak pluginy porušují konvence, které jinak v prostředí webových prohlížečů platí.
Porušování konvencí prohlížečů je důsledek toho, že obsah přehrávaný flashem/silverlightem je v prohlížeči takový „stát ve státě” a podporuje jen to, co Adobe/Microsoft naprogramuje. Nevyhnutelně tak docházelo, dochází a bude docházet k tomu, že některé věci nebudou fungovat.
Tím se dostávám k závažnějšímu problému pluginu, které kontroluje jedna firma – vývoj. Vysvětlím dále, ačkoli to tak možná chvíli nebude vypadat.
Kde jsme…
Dva zásadní vlivy na prostředí vývoje aplikací:
- Internet je všudypřítomný
- Počítače jsou všudypřítomné
„No a? To každej ví. Co z toho?”, říkáte si? Jo, to je, hádám, kouzlo velkých změn: Když je prožíváte, nemusíte si jich ani všimnout.
Co jsme čekali dřív od aplikací?
- Pustím ji na svém počítači, kde je nainstalovaná.
- Vše, co potřebuje ke svému chodu je na tom počítači.
- Moje vstupní a výstupní data jsou na tom počítači.
Co budeme očekávat od aplikace velmi brzy?
- Pustím ji na jakémkoli počítači buď bez instalace, protože běží na serveru, nebo si nainstaluju nějakého obslužného klienta, který ale také komunikuje ze serverem.
- Vše, co potřebuje ke svému chodu je na serveru, nebo ze serveru kdykoli stáhnutelné, pokud bych to náhodou potřeboval lokálně.
- Moje vstupní a výstupní data můhou být kdekoli budu chtít.
Doufám, že cítíte, že v době těch prvních kritérií byl počítač klasický desktop nebo notebook. Druhá sada kritérií platí pro dobu, kdy je počítač cokoli od mobilu, přes tablet, až po tu „klasiku”, nebo kdovíco ještě přijde.
A jsme zpátky u toho problému s vývojem, který pluginové ekosystémy nezvládají. Kdo by mohl očekávat, že Adobe nebo Microsoft zvládnou zajistit, že jejich pluginy poběží na všech těch zařízeních? Zvlášť, když se takový Apple rozhodne, že je na svou platformu nepustí? Nemluvě už o tom, aby na každé platformě běželi, aniž by vypadali jako vetřelec z jiného vesmíru. Pomalý, zabugovaný a nebezpečný vetřelec.
…a kam jdeme?
Jsme svědky toho, že otevřené vývojové prostředí — HTML5 — poráží proprietární ekosystémy. Poráží je právě proto, že je otevřené, nikdo ho nevlastní, je to standard, na kterém se zainteresované strany dohodly (dohadují) a je tu pro něj otevřený přehrávač — WebKit.
To samozřejmě neznamená, že by už dál nezuřily války o vývojáře nativních aplikací pro jednotlivé systémy. Nativní aplikace jsou stále jedinou možnou odpovědí pro řadu aplikací.
Co se snažím říct je, že HTML5 je už teď good-enough pro dostatečné množství aplikací, aby to zajistilo jeho budoucí vývoj. A proto se bude jeho okruh rozšiřovat a Adobe bude s Microsoftem a jinými bojovat ne o to, kdo udělá lepší vývojové prostředí pro svůj přehrávač, ale kdo udělá lepší vývojové prostředí pro HTML5.
Proto jsme vyhráli všichni, když Adobe ohlásilo, že kašle na mobilní flash player. Pokud je nemůžeš porazit, přidej se k nim. To je jediná interpretace, kterou vidím. Úplně polopaticky: Pokud by Adobe válčilo dál a vy byste byli jedním z vývojářů, který se dál drží exportování do flash playeru, postupně byste zjistili, že je stále víc zákazníků, kterým vaše aplikace neběží, nebo běží špatně. Byli byste v čím dál větší konkurenční nevýhodě. Možná se vám to teď nelíbí, ale za pár let jim poděkujete.
Proto si dovolím předpovědět, že do 5 let zmizí flash player i Silverlight player nejen z mobilů, ale i z desktopů a ze světa vůbec. Spíš dřív, pětka je ale takové pěkné číslo. Nevidím jediný důvod, proč by tam měli být.
Opakuji, neznamená to, že by se všechno vyvíjelo jen v HTML5. Nativní aplikace budou mít stále svoje místo. Čím dál častěji bude ale HTML5 vycházet z rozhodování mezi tím, co potřebujete svým uživatelům nabídnout, kolik máte na vývoj a jak velký trh potřebujete oslovit, jako vítěz.
Pro budoucí aplikace bude platit:
- Nativní aplikace pro daný systém
- Web aplikace postavená na HTML5, která běží přímo v prohlížeči, nebo v nějakém wrapperu prohlížeče
- Kombinace výše uvedených variant
Související odkazy
- „Flash je mrtev, HTML5 není připravené, co teď?“ – Zdroják
- Thoughts on Flash
- Your Questions About Flex
- HTML5 Weekly
- appMobi uvolňuje většinu svých API jako open source
- The Web OS is Already Here…
- Battlelog: Modern Web Applications are Here
- HTML5 2D gaming performance analysis
Přidáno 13. 7. 2015
Daring Fireball: Facebook’s New Chief Security Officer Wants to Set a Date to Kill Flash
Přidáno 3. 12. 2015
Adobe vybízí k tomu, aby vývojáři přestali používat Flash.
Takže… Já to říkal ;-)
Osobně doufám, že do 5 let flash ani Silverlight nezmizí. HTML5 je super, ale do budoucna. Ne dnes. A nemyslím si, že se to do 5 let nestihne změnit.
Ano na aplikace které jste uvedl, HTML5 stačí bohatě již dnes. Ale problém je, že flash na ně stačil již v nějaké verzi 6 z roku 2000 (mám na mysli verzi flash playeru). Když mluvíme o webových aplikací tak si rozhodně představím mnohem složitější věci, které dnes s HTML5 uděláte maximálně v Chrome a tím to hasne. Naproti tomu flash i Silverlight je zvládá levou zadní. Ony jsou to proprietární technologie, ale právě to je jejich výhodou. Adobe je schopné každoročně vydat novou verzi s novými možnostmi a během pár měsíců ji rozšířit na více jak 70% počítačů připojených k internetu (pak už je růst pozvolnější). A já se teď ptám:
Jak dlouho se už připravuje HTML5?
Jak dlouho se ještě bude připravovat HTML5?
Kdy implementují všechny technologie z HTML5 všechny důležité prohlížeče?
Kdy vyjde HTML6 (nebo nějaký jiný nástupce s dalšími možnostmi)?
Tyto otázky jsou hodně důležité, protože za těch 5 let jak píšete nebude HTML5 plně podporované ani ve všech nejpoužívanějších prohlížečích (a tudíž se ani flashi ani Silverlightu nevyrovná + ten bude za 5 let mnohem dále). Obzvlášť z toho vývojového cyklu mi běhá mráz po zádech.
Další velká kapitola je JavaScript. Opravdu je to jazyk ve kterém chcete psát aplikace (rozumějme desítky tisíc řádek kódu)?
Jak říkám HTML5 fandím, ale pro jeho skutečné využití na skutečné webové aplikace ještě nepřišel čas.
Skvěle napsáno. Budoucnost založená na neproprietálních technologiích je důležitá i z jiných důvodů – většina z nás si pamatuje, jak dopadl formát GIF a jak dlouho trvalo jeho nahrazení transparentností PNG (kde to v případě IE trvalo dost dlouho) – podobně to dle mého názoru bude probíhat i s Flashem a HTML5 (je to nejbližší asociace, která mne teď napadla, takže mě prosím nechytejte nikdo za slovo ;))
@Jan Janoušek: Díky za komentář. Už jsem se bál, že mi nikdo nepomůže ilustrovat, jak divně asi dnes to, co píšu, zní hodně lidem.
Proč jsem přesvědčen, že mám pravdu:
– Ano, HTML5 jako standard se sice stále vyvíjí, ale na jeho vývoji pracují ti, kdo ho zároveň implementují v prohlížečích. Prohlížeče v mobilních zařízeních běží skoro všechny na WebKitu, takže na nejrychleji rostoucím trhu, který bude za pár let větší než stolní počítače, je podpora velmi dobrá už teď. Na desktopech se to celkem rychle zlepšuje.
– Především ale nedoceňujete, co už jde v HTML5 udělat teď a/nebo přeceňujete, co je potřeba k tomu, aby webová aplikace plnila roli, kterou dřív žádná aplikace neplnila, protože se ji nevyplatilo vyvinout, nebo plnila lépe role již existujících desktopových aplikací.
„Jak říkám HTML5 fandím, ale pro jeho skutečné využití na skutečné webové aplikace ještě nepřišel čas.“ Samozřejmě záleží na tom, co je u vás „skutečná webová aplikace“, ale já dělám na téhle aplikaci, přijde mi skutečná až dost a řada uživatelů říká, že funguje.
Upřímně jsem se vyjádřil k předchozímu článku a napíšu jediný a poslední komentář k tomuto. Je to srovnávání jablek s hruškami.
HTML5 versus flash versus další věci slouží pokaždé k jiným věcem. Mají radikálně jiné možnosti.
HTML5 je bastl. Napíšu naprostý opak vzhledem k článku: HTML5 proráží málo a mizerně vzhledem k tomu, jak by prorazit mohl. Protože je to bastl, je sice vedený otevřeně, ale to je asi tak jediné čím se dá pochválit. Po technické stránce by tam bylo více mínusů, než při stavbě Titanicu.
Autor článku má prostě rád HTML5 a tak bude psát, že zvítězí nad flashem, silverlightem, nad ms office, nad photoshopem, nad javou, nad … – záměrně srovnávám nesouměřitelné, protože srovnání html5 a flashe mi přijde stejným srovnáváním jablek s hruškami – ne zcela souvisejících věcí.
Možná to není zcela jasné, ale web aplikace potřebují takovou drobnost – skutečnou aplikaci zvanou „prohlížeč“, která je zcela obyčejným programem. Autoři prohlížečů mají čím dál větší roli v tom, co budou používat za technologie web vývojáři. Několik historických příkladů:
1) Jsou to autoři prohlížeče Nestscape, kteří prosadili JavaScript. W3C se pokusila JavaScript mnohokrát zaříznout, ale autoři všech prohlížečů v tom nespolupracovali.
2) Jsou to autoři prohlížečů, kteří pohřbili XHTML. Autoři prohlížečů NIKDY plně nespolupracovali s W3C na podpoře XHTML. Maximálně ho tiše tolerovali. I weboví vývojáři zhusta posílali „Content-Type: text/html“ i u XHTML. W3C komise si neuvědomila tuto pozici a vymyslela XHTML 2, zcela nekompatibilní a autoři prohlížečů jako jeden muž řekli fuck off. A W3C byla nucena XHTML zaříznout, protože měla standard, ale žádný prohlížeč, který by ho kdy implementoval. Tedy měla nařízení krále, ale neměla vojsko ani nikoho kdo by ho chtěl respektovat.
Tak bych mohl pokračovat dál a dál.
Webový vývoj není kus země ohraničený neprůstřelnou zdí s kulometnými hnízdy, aby do něj neprnikly žádné vlivy z jiných směrů. Ba právě naopak – vlivy klasického programování posilují.
Článek je prostě pokus stylu miluju HTML5 a tak přeci musí vyhrát na celé čáře, protože ho prostě miluju. Nic více neobsahuje za faktická data.
A toto je můj poslední příspěvek pod tímto článkem.
@jan:
– mobilní prohlížeče na tom sice dobře jsou, ale pořád je tu IE u nějž nevěřím, že bude schopné do 5 let implementovat všechny HTML5 standardy. Oni se sice snaží, ale ne dost. Druhá věc je, že i když to implementují tak tu jsou pořád staré verze prohlížečů na které se nedá jen tak vykašlat.
– k těm potřebám a k fakturoid.cz se vyjádřím dohromady. fakturoid je sice pěkná aplikace, ale nemám pocit, že by to byla zrovna jedna z těch co by skutečně plně využívaly HTML5 technologie. Nedávno (cca. měsíc zpátky) jsem programoval generátor PDF dokumentů čistě v JavaScriptu (toto například váš fakturoid řeší na serveru). A toto je právě jedna z věcí co už pokládám za „skutečnou aplikaci“. Schválně mi řekněte z jakého důvodu na fakturoid.cz vytěžujete server generováním faktur, které by se mohlo provést na straně klienta? Ale abych se k tomu vrátil. Vše šlo bez problémů, vyřešil jsem i vkládání obrázků a přibalování fontů (vše na straně klienta), ale problém byl, že dokument šel korektně stáhnout pouze v Chrome. Firefox jej uměl stáhnout, ale bez přípony a korektního názvu. IE neumí vůbec nic. Opera je na tom jako Firefox. Řešení jevyužít flash, nebo Silverlight jen proto, aby se výstup dal stáhnout. Nebo to poslat na server a zase to stáhnout nazpět. Všechno špatně. HTML5 to papírově umožňuje, ale v reálu to nejde.
Další věc jsou třeba databáze. Půlka prohlížečů má IndexedDB, půlka Web SQL Databse a některé ani to ne. A to je to o čem mluvím. Než se toto všechno vyřeší uběhne ještě spousta vody…
A 5 let mi příjde jako dost najivní, ale možná se výrobci prohlížečů polepší a budete mít pravdu :D
@Jan Janoušek: Jasně, že Fakturoid nijak extra nestojí na novinkách HTML5, ale to je přece argument pro to, co říkám já: *Už teď* toho umí HTML+JavaScript+CSS tolik, že to na hooodně věcí stačí.
K tomu tisku PDF: Možná by vás mohlo zajímat http://pdfkit.org
Fakturoid generuje PDF na straně serveru, ale dělá to tak, že ho tiskne pomocí renderu HTML stránky ve WebKitu (zjednodušeně). Takže, až bude podpora prohlížečů dostatečná nebude pro nás přechod na „tisk u klienta“ tak moc velký šok.