Zjednodušte si vývoj aplikací pro smartphony (2.)

15. 7. 2011

Sdílet

Nezáleží na tom, proč firma potřebuje vyvíjet mobilní aplikace. Problémem je naopak to, že jde stále o dost obtížný proces.

Dokončení včerejšího článku...

Distribuce aplikací k uživatelům přes web
Všechny výše uvedené možnosti balí aplikaci do kódu HTML, CSS a JavaScriptu, ale nespecifikují, jak bude přenesena do samotného smartphonu.

Nejjednodušším přístupem je umístit balíček na webový server a nechat internet, ať odvede svou práci. Pokud je kód HTML a CSS navržen dobře, bude výsledek téměř nerozeznatelný od nainstalované aplikace.

Apple iOS má pěknou schopnost vytvářet záložky webových stránek jejich převodem na ikony na domovské obrazovce. Uživatel jen musí klepnout na tlačítko Action při zobrazování stránky v prohlížeči Safari a poté vybrat příkaz „Add to Home Screen“ z nabídky, která se zobrazí. (Ikona tlačítka Action vypadala jako znaménko plus, ale nedávno byla změněna na šipku s rámečkem.)

Na domovské obrazovce se může zobrazovat ikona dané aplikace (namísto obrázku miniatury webové stránky), pokud si uživatel vytvoří obrázek s ikonou ve formátu PNG s rozměry 48 x 48 pixelů nebo větší a ustaví na něj odkaz z hlavičky webové stránky ve formátu .

Podobně i v systému Android 2.1 a novějším můžete vložit záložku na svou domovskou obrazovku a přidat spouštěcí ikonu pomocí stejného kódu hlavičky, jako používá iOS. (Podržení prstu na záložce otevře nabídku, která nabízí možnost přidat odkaz na domovskou obrazovku.)

Zvládnutí problémů s výkonem u hybridních aplikací
Umístění celé aplikace na webovém serveru způsobí významnou závislost na kvalitě internetového připojení daného zařízení. Z tohoto důvodu webové aplikace obvykle nepracují dobře, pokud jsou jejich části ponechány na serveru.

Jedním z řešení problémů s výkonem je použít tzv. cache manifest, což je vylepšení HTML5, které specifikuje, jaké části lze uchovávat lokálně. Dobře navržená architektura dokáže uložit všechny užitečné části, a přitom stále mazat dynamická data, která nejsou využívána.

Manifest lze také kombinovat s místními databázemi k ukládání místních informací. Tato technika také pracuje s moderními prohlížeči HTML5.

Jiným řešením problému s výkonem je vytvořit hybridní řešení, a to zabalením kódu HTML/JavaScript/CSS do nativní aplikace, která jednoduše načte HTML do webového prohlížeče. Výsledkem je program, který se instaluje podobně jako nativní aplikace, ale vypadá a chová se jako HTML kód běžící v prohlížeči. Není to vždy stejné, ale většinou ano.

Zapouzdření HTML do obalu nativní aplikace však znamená, že onen obal musí být vyvinut v primárním  vývojářském prostředí daného druhu zařízení (což ale zpravidla není nijak strašná zátěž), přičemž výsledný program musí být distribuován kanálem tradičního obchodu s aplikacemi se všemi klady a zápory, které to pro vývojáře představuje.

V minulosti firma Apple měla vůči takovým hybridním řešením námitky a často je blokovala, ale nedávno začala být vůči tomuto vývojářskému modelu mnohem otevřenější.

Například prostředí open source PhoneGap balí HTML do hybridních aplikací pro šest platforem: iOS, Android, BlackBerry, Symbian, WebOS a Windows Mobile. Tvůrci dokonce se společností Apple spolupracovali na prozkoumání kódu – a výsledkem je to, že Apple bude kontrolovat jen HTML a další funkce, které uživatel přidá během schvalovacího procesu aplikace. Kód PhoneGap je tedy v podstatě předschválen.

Velkou výhodou je také to, že hybridní aplikace se mohou integrovat hlouběji než kód HTML, protože bezpečnostní omezení zařízení jsou v tomto případě méně striktní. Nativní (a tudíž i hybridní) aplikace mohou například přistupovat k souborům a třeba číst údaje přímo z akcelerometru.

Budoucí verze prostředí PhoneGap budou také schopny přistupovat prostřednictvím funkcí JavaScriptu ke kontaktům, gyroskopu a dalším částem, tvrdí firma Nitobi. Uživatelé si také mohou napsat vlastní nativní rutiny a následně je integrovat do svých aplikací.

Nevýhody webového přístupu pro mobily
Vytváření aplikací pro chytré telefony pomocí HTML je celkem bezbolestným způsobem, jak vytvářet programy pro více platforem, které mohou využívat hlubší části nativního rozhraní API. Sám autor tohoto příspěvku vytvořil tímto způsobem několik aplikací a zjistil, že bez úprav obvykle dobře pracují na smartphonech iPhone i těch s operačním systémem Android.

Navzdory této snadnosti ale podle něj nebyly výsledky vždy zcela konzistentní. Zjistil například, že platforma Android nepoužívá striktní limit velikosti souborů JavaScriptu, takže aplikace, které pracovaly na iPhonu, nemusely vždy fungovat. Jsou zde desítky malých rozdílů, na které lze narazit.

Také zjistil, že hybridní aplikace začínají nepředvídatelně selhávat, pokud je kód větší. Aplikace, které docela dobře pracovaly v odlaďovacím nástroji, zcela kolabovaly, když je přesunul do smartphonů. Proč? Paměti smartphonů jsou mnohem menší a je v nich použito několik nástrojů řídících paměti s JavaScriptem.

Nativní programátoři mohou odvést mnohem lepší práci utěsněním úniků paměti – na rozdíl od programátorů JavaScriptu. Výhody nativních aplikací se ukazují, když začíná být aplikace velká a začne narážet na limity dotyčného smartphonu.

Výkon HTML a hybridních aplikací také bývá průměrný. I když se odstraní potřeba stahovat části programu, je rychlost omezena kódem JavaScriptu. Je zde cena, kterou uživatel platí za relativní snadnost vývoje HTML aplikací.

Výkon není tak dobrý jako u nativního kódu a omezení JavaScriptu a HTML začnou být při velkých objemech dat patrná. Interpreter JavaScriptu také není příliš rychlý a mobilní vývojáři musí dávat větší pozor na využití paměti a omezený výkon procesoru než při vytváření aplikací pro prohlížeče klasických počítačů.

Mnoho stížností mobilních vývojářů píšících v Objective-C a Javě se stále týká žonglování s prostředky. Tyto malé telefony mají na rozdíl od desktopů tak málo paměti, že je zvládnutí tohoto problému vždy výzvou, ať už se vyvíjí aplikace nativně nebo s využitím webových technologií.

Uživatelé by se ale neměli nechat odradit od webového vývoje aplikací díky výše nastíněným problémům. Koneckonců několik hodin, které případně stráví „hraním“ s CSS, je úplné nic ve srovnání s roky, které někteří lidé věnovali v potu tváře práci s ukazateli a problémům s pamětí. HTML aplikace mohou být díky pouhým hodinám práce na nich úžasným úspěchem…

Koupit
Vyšlo v Computerworldu 8/2011
Časopis lze koupit se slevou 20 %