1. Argumentace výběru tématu
Téma a název tohoto textu je velmi blízké tématu mé diplomové práce „Porovnání vývoje
aplikací pro Android a HTML5“, kterou momentálně píšu, a je možné, že poslouží jako
některá její část. Tyto technologie mají do budoucna velký potenciál a speciálně HTML5
v poslední době prochází značnými inovacemi. Obě technologie mají také vysoké uplatnění
v moderním webu a tvorbě revolučních aplikací.
Anotace
Text představuje krátký úvod do problematiky dvou odlišných programovacích metodik,
kde se proti sobě stavějí webově orientovaná HTML5 technologie a nativní Android. Obě
mají, nejen z pohledu vývojáře, své výhody i nevýhody, které jsou v textu dále rozvedeny a
porovnány. Jsou zde uvedeny aspekty, které je nutné před samotným vývojem zvážit tak,
aby aplikace nebyla už od samotného začátku vyvíjena špatným způsobem a bylo možné ji i
v budoucnu podporovat a aktualizovat.
Klíčová slova
HTML5, Android, platforma, nativní aplikace, webová aplikace
2. Porovnání vývoje aplikací pro HTML5 a Android
Svět mobilních platforem, internetu a hlavně technologií, které díky existenci těchto dvou
platforem vznikají, se neustále vyvíjí mílovými kroky kupředu. Díky této rychlosti a neustále
se měnících požadavků uživatelů však není vždy jisté, kdy, a zda vůbec, se některé z těchto
rozličných technologií uchytí. V následujícím textu jsem se zaměřil na dvě technologie,
pomocí kterých se dají vytvářet rozličné aplikace a hry.
Webová platforma HTML5
Velmi dynamický vývoj můžeme sledovat u této relativně mladé nadstavby značkovacího
jazyka HTML, její podpory, inovace a standardizace [1]. Většina funkcí a schopností HTML5
se neustále vylepšuje a každá další aktualizace některého z internetových prohlížečů jej
podporuje o něco více a přispívá tak k jeho pomalému rozšiřování mezi veřejnost. Hlavní
zastánci HTML5, v čele se společností Google, rádi vytvářejí dojem, že HTML5 už "je tu" [2]
a je připraven ovládnout web a mobilní internet. V praxi je to téměř plnohodnotná technologie
a její nasazení je již v současné době výhodné z mnoha důvodů, avšak jakási realizace a
ustálení standardů ze strany vývojářů postupuje pomaleji a věci, které HTML5 dnes neumí,
mohou být implementovány třeba do měsíce. Celý vývoj tak působí dojmem jakési rozdělané
práce a veřejnost její „kouzla“ objevuje postupně a v malých dávkách.
Nativní platforma Android
Situace ve světě nativních1 aplikací je přesně opačná. Ať už se jedná o jakoukoliv
platformu (iOS, Android, Windows Mobile), společnost, která ji zaštiťuje, vydává poměrné
časté aktualizace. Tyto bývají většinou uváděny na trh spolu s nějakými novými výrobky, jako
jsou například chytré mobilní telefony, na kterých jsou nové funkce rovnou prezentovány.
Sada aktualizovaných vývojářských nástrojů bývá často vypuštěna na internet přímo po
skončení těchto prezentačních akcí (například v případě společnosti Apple známé jako
„keynotes“). Dokumentace k jednotlivým platformám bývají většinou velmi dobře zpracované,
dostupné na internetu [3] a případné problémy a nejasnosti jsou řešeny v internetových
diskusích. Neexistuje zde tedy pocit rozdělané práce a standardizace ze strany autorů
platforem a jsou zde jasně dány limity toho, co naprogramovat lze a co naopak není ani
podporováno.
1
Nativní aplikace označuje software, který je plně přizpůsoben zařízení, na kterém je nainstalován a
dokáže bez výrazných komplikací a programů třetích stran využívat všechny jeho funkce
3. Aspekty
V následujících řádcích porovnáme důležité aspekty, týkající se vývoje aplikace pro obě
platformy. Pomocí aktuálních poznatků z praxe dojdeme u každého z těchto aspektů
k závěru, pro kterou platformu je lepší a na konci porovnáme výhody a nevýhody obou
platforem pomocí grafu.
Multiplatformnost
Nejhůře na tom, z hlediska přenosnosti aplikace mezi různými platformami, jsou aplikace
a hry, vyvíjené pro nativní platformu. Pokud totiž chtějí vývojáři svůj výsledek prezentovat
širšímu publiku, nevyhnou se přepisování aplikace na ostatní platformy, kde v současné
chvíli figurují iOS, Android a několik platforem společnosti Microsoft.
Lépe na tom jsou vývojáři, kteří vytvářejí aplikaci webovou. Ta totiž bude fungovat na
všech platformách, neboť k jejímu spuštění stačí, aby zařízení disponovalo internetovým
prohlížečem. Pokud je ale aplikaci náročná na výkon, například nějaká webová hra, pak ani
zde kvůli výkonnostním limitům současných internetových prohlížečů nejsou možnosti
neomezené.
Výkon
Nativní aplikace nemají z hlediska výkonu sebemenší problém, protože běží „blízko
hardwaru“ a využívají technologie jako GPU akcelerace nebo běh aplikací na více jádrech
(multithreading). Programování her a náročných aplikací pro nativní platformu, spíše než
jako webových aplikací, se tak jeví jako logické.
Grafický výkon webových prohlížečů se však v poslední době také zvýšil, a to hlavně díky
V8 JavaScript Enginu2, hardwarové akceleraci a jiným optimizačním technikám.
Cena vývoje a aktualizace
Vývoj nativní aplikace, a to především pro více než jednu platformu, se může projevit jako
velmi nákladné řešení. Cena, společně s programátorskou kapacitou, hraje klíčovou roli
během celého vývoje aplikace i po něm, protože s rostoucími potřebami uživatelů musí růst i
aplikace. Je proto potřeba, aby byl tým programátorů připraven i po uvedení aplikace na trh
programovat a vydávat aktualizace, opět na více platforem najednou.
Naopak při tvorbě webové aplikace se případné updaty projevují téměř okamžitě po
aktualizaci souborů na serveru a na počet platforem nemusí být brán zřetel. Rovněž zde
odpadá nutná administrativa, která je přítomna u nativních aplikací v podobě jejich
podepisování a umisťování na Google Play Store, App Store a jiné obchody.
Programovací jazyky
Programovací jazyky jako Java, C a C++, používané při vývoji nativních aplikací, jsou
koncipovány pro vývoj komplexních aplikací [4] a jsou velmi robustní, kdežto jazyky HTML a
CSS3 mají jednoduchý syntax a snadněji se učí. Pokud například vyvíjíme nativní aplikaci
v jazyce Java, k jejímu zprovoznění na iPhone OS (nebo na jiné platformě) je nutné počítat
s přepsáním aplikace do jiného jazyka, v tomto případě objektového C. Webovou aplikaci
vytvoříme jen jednou, a ta pak pojede na všech platformách. [5]
2
V8 JavaScript Engine je open source engine, vyvíjený společností Google, které je součástí
prohlížeče Google Chrome.
4. Graf a závěr
0% 20% 40% 60% 80% 100%
Multiplatformnost 90% 10%
Výkon 33% 67%
HTML5
Android
Cena a aktualizace 68% 32%
Programovací jazyky 61% 39%
Pozn: větší číslo je lepší
Ve srovnávacím grafu obou platforem je vidět, že obě barvy zabírají téměř stejně velkou
plochu, ale že zároveň každá z nich dominuje na jiném poli. Obě mají své výhody a
nevýhody a často velmi záleží na charakteru vyvíjené aplikace. Ve většině případů lze
doporučit vývoj obou typu aplikací najednou, případně nejdříve zvolit cestu webové aplikace,
která se takto dostane širšímu publiku a poté se až zaměřit na vývoji její nativní verze.
Zdroje
[1] WHATWG. HTML: The Living Standard: WEB APPLICATION APIS [online]. 2012 [cit.
14.12.2012]. Dostupné z: http://developers.whatwg.org/webappapis.html#webappapis
[2] Google I/O 2011: HTML5 versus Android: Apps or Web for Mobile Development?. MILLER,
Michael. YOUTUBE.COM. YouTube [online]. 2011, 12.05 [cit. 2012-12-14]. Dostupné z:
http://www.youtube.com/watch?v=4f2Zky_YyyQ
[3] GOOGLE. Developers: Training [online]. 2012 [cit. 2012-12-14]. Dostupné z:
http://developer.android.com/training/index.html
[4] HASHIMI, Sayed Y a Satya KOMATINENI. Pro Android. Berkeley: Apress, c2009, xxiii, 437 s.
Expert's voice in open source. ISBN 978-143-0215-967.
[5] RAMIREZ, Enrique. Coding An HTML 5 Layout From Scratch. In: Smashing Magazine [online].
4.8.2009 [cit. 2012-12-14]. Dostupné z:
http://coding.smashingmagazine.com/2009/08/04/designing-a-html-5-layout-from-scratch/
ad [1] – pro někoho možná „suchá“ specifikace, pro jiné aktuální zdroj informací k dané
problematice; ze specifikace čerpá mnoho vývojářů, a také ji zpětně formují; podobné weby
používám i pro svou diplomovou práci.
ad [2] – přednášející jsou odborníci přímo ze společnosti Google; názorné ukázky přímo z
„programátorské kuchyně“; rychlé srovnání obou platforem na místě a vyvozený závěr.
5. ad [3] – kvalitní a vysvětlující návody a dokumentace; příklady a ukázky hotových aplikací;
možnost hledat potřebné funkce v poli „hledat“; možnost stažení aplikací i vývojářských
nástrojů; spousta materiálu, o kterém lze psát a za pomocí kterého lze tvořit nové věci.
ad [4] – detailní a neotřelé postupy; skvělé články o nových technologiích; moderní témata;
ad [5] – Vynikající kniha dvou zkušených programátorů; praktické ukázky a detailní postupy;
průvodce platformou Android; základy mých aplkací pocházejí právě z této knihy.