Univerzita Hradec Králové Fakulta informatiky a managementu Katedra informatiky a kvantitativních metod

Podobné dokumenty
Efektivní vývoj mobilních aplikací na více platforem současně. Mgr. David Gešvindr MCT MSP MCPD MCITP

Olga Rudikova 2. ročník APIN

Obsah. Úvod 11 Zpětná vazba od čtenářů 13 Errata 14 Poznámka ke kódům 14

Obsah. Úvod 11. Vytvoření emulátoru 20 Vytvoření emulátoru platformy Android 4.4 Wearable 22 Spouštění aplikací na reálném zařízení 23

Obsah. O autorech 9 Earle Castledine 9 Myles Eftos 9 Max Wheeler 9 Odborný korektor 10. Předmluva 11 Komu je kniha určena 12 Co se v knize dočtete 12

Základní informace. Operační systém (OS)

Mobile application developent

Nástroje na vývoj aplikací pro ios Trocha motivace na úvod Co budete potřebovat Co když nemáte k dispozici počítač s macos? Vývojové prostředí Xcode

Formy komunikace s knihovnami

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Obsah. Kapitola 1. Předmluva 11 O této knize 13 Konvence...13

Česká zemědělská univerzita v Praze

MBI - technologická realizace modelu

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

Úvod. Klíčové vlastnosti. Jednoduchá obsluha

1. Úvod do Ajaxu 11. Jak Ajax funguje? 13

EMBARCADERO TECHNOLOGIES. Jak na BYOD chytře? Možnosti zapojování různých mobilních zařízení do podnikových informačních systémů.

Android. Programujeme pro. Jiří Vávrů, Miroslav Ujbányai. DRUHÉ, rozší řené v ydání

IS pro podporu BOZP na FIT ČVUT

Tvorba mobilních aplikací

INFORMAČNÍ SYSTÉMY NA WEBU

Seznámení s prostředím dot.net Framework

Počítačová Podpora Studia. Přednáška 5 Úvod do html a některých souvisejících IT. Web jako platforma pro vývoj aplikací.

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek

Co je Symantec pcanywhere 12.0? Hlavní výhody Snadné a bezpečné vzdálené připojení Hodnota Důvěra

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320 M A T U R I T N Í T É M A T A P Ř E D M Ě T U

IB111 Programování a algoritmizace. Programovací jazyky

Programové vybavení počítačů operační systémy

1.2 Operační systémy, aplikace

Obsah. Úvod 11 O autorovi 11 Koncept knihy 11 Zpětná vazba od čtenářů 12 Zdrojové kódy ke knize 12 Errata 12 ČÁST I VÝVOJ MOBILNÍ APLIKACE

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320

Identifikátor materiálu: ICT-1-17

Apache Cordova (PhoneGap 3)

Obsah. 1) Rozšířené zadání 2) Teorie zásuvných modulů a) Druhy aplikací používajících zásuvné moduly b) Knihovny c) Architektura aplikace d) Výhody

Desigo Control Point řešení pro ovládání a monitorování budov siemens.cz/desigo

ROZVOJ ICT A PDA ZAŘÍZENÍ THE DEVELOPMENT OF ICT AND PDA DEVICES Jiří Vaněk

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Vývoj OS Windows Mobile. Ing. Jiří Šilhán

Ruby on Rails. Bc. Tomáš Juřík Bc. Bára Huňková

Programovací jazyky Přehled a vývoj

RadioBase 3 Databázový subsystém pro správu dat vysílačů plošného pokrytí

NÁVRH EFEKTIVNÍ STRATEGIE MOBILNÍHO BANKOVNICTVÍ: NALEZENÍ SPRÁVNÉHO OBCHODNÍHO MODELU Mobile tech 2014

Matematika v programovacích

Software Základní pojmy a rozdělení. Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1123_Software Základní pojmy a rozdělení_pwp

1 Webový server, instalace PHP a MySQL 13

CineStar Černý Most Praha

Instalace a konfigurace web serveru. WA1 Martin Klíma

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

E LEARNINGOVÁ WEBOVÁ APLIKACE PRO VÝUKU BIOMEDICÍNSKÉHO INŽENÝRSTVÍ Petr Huňka

úvod Historie operačních systémů

3 MOŽNÉ PŘÍSTUPY K TVORBĚ APLIKACÍ NAD SVG DOKUMENTY

VY_32_INOVACE_INF.19. Inkscape, GIMP, Blender

Aplikace je program určený pro uživatele. Aplikaci je možné rozdělit na části:

Sem vložte zadání Vaší práce.

Business Intelligence

Proces vývoje HRIS Vema (Human Resources Information System) Jaroslav Šmarda

Elektronické učebnice popis systému, základních funkcí a jejich cena

Část IV - Bezpečnost 21. Kapitola 19 Bezpečnostní model ASP.NET 23

Snadný vývoj webových aplikací s Nette. Lukáš Jelínek

INOVACE PŘEDMĚTŮ ICT. MODUL 11: PROGRAMOVÁNÍ WEBOVÝCH APLIKLACÍ Metodika

Úvodem Seznámení s HTML Rozhraní Canvas... 47

Kapitola 1 První kroky v tvorbě miniaplikací 11

MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ

Nové jazykové brány do Caché. Daniel Kutáč

Telekomunikační koncová zařízení

Webové rozhraní pro datové úložiště. Obhajoba bakalářské práce Radek Šipka, jaro 2009

Tovek Server. Tovek Server nabízí následující základní a servisní funkce: Bezpečnost Statistiky Locale

Software programové vybavení. 1. část

Bakalářské práce realizované v.net/c# Bachelor thesis implemented in.net/c#

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

modrana: flexibilní navigační systém Martin Kolman

Vývoj Internetu značně pokročil a surfování je dnes možné nejen prostřednictvím počítače, ale také prostřednictvím chytrých telefonů, tabletů a

Karel Bittner HUMUSOFT s.r.o. HUMUSOFT s.r.o.

Magento se představuje

5.15 INFORMATIKA A VÝPOČETNÍ TECHNIKA

ČESKÉ VYSOKÉ UČENÍ TECHNIKÉ Fakulta elektrotechnická. Microsoft Sharepoint 2007 Workflows Průmyslové informační systémy

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

XERXES Portál informačních zdrojů. Ing. Lukáš Budínský PhDr. Ondřej Fabián

Knihovny v mobilních zařízeních. Jan Pokorný Knihovny současnosti 2012

RESTful API TAMZ 1. Cvičení 11

TÉMATICKÝ OKRUH Softwarové inženýrství

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

MST - sběr dat pomocí mobilních terminálů on-line/off-line

XD39NUR Semestrální práce Zimní semestr 2013/2014

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Název DUM: VY_32_INOVACE_2B_9_Software_-_základní_programové_vybavení_počítače

PRODUKTY. Tovek Tools

Aplikační programové vybavení

1. Webový server, instalace PHP a MySQL 13

Nástroje pro vývoj a publikaci mobilní aplikace v Qt. Martin Straka

Nástroje pro vývoj a publikaci mobilní aplikace v Qt. Martin Straka

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

Transkript:

Univerzita Hradec Králové Fakulta informatiky a managementu Katedra informatiky a kvantitativních metod Mobilní platformy Softwarové technologie Bakalářská práce Autor: Milan Radoň Studijní obor: Aplikovaná informatika Vedoucí práce: doc. Ing. Filip Malý, Ph. D. Hradec Králové Září 2015

Prohlášení: Prohlašuji, že jsem bakalářskou práci zpracoval samostatně a s použitím uvedené literatury. V Hradci Králové dne 17. 8. 2015 Milan Radoň

Poděkování: Děkuji vedoucímu doc. Ing. Filipu Malému, Ph. D. za odborné vedení bakalářské práce a za podporu při realizaci bakalářské práce.

Anotace Cílem teoretické části bakalářské práce je porovnat způsoby vývoje aplikační a vizuální vrstvy ve vybraných mobilních nativních i hybridních technologiích. Podrobněji seznámit čtenáře s vybranými zástupci pro vývoj na mobilní platformu Google Android. V praktické části je vytvořen rozšiřující výukový materiál k vybraným nativním i hybridním technologiím pro mobilní operační systém Google Android. Porovnán je vývoj aplikací s popsanými a implementovanými funkcemi pomocí nativního API s Android SDK a hybridního UI frameworku Ionic s aplikačním rámcem AngularJS. Bakalářská práce je zakončena prezentací výsledků výzkumu o mobilních platformách. Annotation Title: Mobile platforms Subtitle: Software technology Target of the theoretical part of the work is to compare the methods of application development and visual layers in selected mobile native and hybrid technologies. Readers more familiar with selected representatives for development on the mobile platform Google Android. The practical part is created by as expanding educational material to selected native and hybrid technologies for the mobile operating system Google Android. Bachelor thesis ends with the presentation of research results about mobile platforms.

Obsah 1 Úvod... 8 2 Historie... 9 3 Cíl a metodika práce...10 4 Teoretická část...11 4.1 Nativní technologie...12 4.1.1 Google Android...13 4.2 Hybridní technologie...24 4.2.1 Ionic...26 4.3 Porovnání...32 4.3.1 Nativní technologie...34 4.3.2 Hybridní technologie...38 5 Praktická část...41 5.1 Použité technologie...44 5.1.1 Apache HTTP Server...44 5.1.2 PHP...44 5.1.3 Nette Framework...44 5.1.4 MySQL...44 5.1.5 HTML5...45 5.1.6 CSS3...45 5.1.7 Twitter Bootstrap 3...45 5.1.8 ECMAScript...45 5.1.9 AngularJS...45 5.1.10 Ionic...46 5.1.11 Java...46

5.1.12 XML...46 6 Shrnutí výsledků...47 7 Závěry a doporučení...48 8 Seznam použité literatury...49 9 Přílohy...52

Seznam obrázků Obr. 1 Architektura Google Android...18 Obr. 2 Struktura nativní aplikace Android...21 Obr. 3 Životní cyklus Aktivity...22 Obr. 4 Architektura Ionic / Cordova / Gulp...28 Obr. 5 Struktura UI frameworku Ionic s AngularJS...30 Obr. 6 Porovnání vzhledu ios / Android / BlackBerry / Windows Phone....36 Obr. 7 Praktická část Mobilní nativní aplikace / Android / Ionic....42 Obr. 8 Praktická část Webová výuková aplikace / Android / Ionic....43 Seznam tabulek Tabulka 1 Historie Androidu - rozšiřování API...14 Tabulka 2 Porovnání nativních a hybridních technologií...32 Tabulka 3 Porovnání mobilních operačních systémů...35 Tabulka 4 Porovnání UI frameworků...39

1 Úvod Mobilní platformy jsou v současné době často diskutované téma. Se zařízeními, která jsou vybaveny moderním operačním systémem, se setkáváme na každém kroku, každý z nás má drahého pomocníka. Buď formou notebooku, mobilního telefonu či tabletu. Tvorba softwarových aplikací na mobilní platformy pro současné publikum je stále více přínosná. Máme-li docenit potenciál, který nabízejí aplikace pro mobilní zařízení, musíme si uvědomit, jaká je situace na obchodním trhu. Trh s chytrými zařízeními stále stoupá, díky stálé lepší cenové dostupnosti zařízení či mobilních internetových sítí od poskytovatele připojení. Mobilní zařízení mají perspektivní budoucnost. Dotykové zařízení přináší nový model používání, který je intuitivní a jednodušší. Mobilní zařízení je oproti klasickému stolnímu počítači pomalejší a nemá rozšířené funkce, bez kterých se zkušenější uživatel neobejde. Chytré zařízení je spíše pro prezentování obsahu, ale pro tvorbu obsahu je nedostačující. Mobilní platforma je kombinace hardwaru (fyzického zařízení) a softwaru (operačního systému). Výrobci dnešních fyzických zařízení staví nejčastěji na architektuře jádra procesoru x86 a ARM. Bakalářská práce se zabývá pouze softwarovými technikami architektury ARM. Současně nejperspektivnější mobilní operační systémy architektury ARM jsou Google Android, Apple ios a Microsoft Windows RT. Platformy se liší základními poskytovanými funkcemi ve formě aplikací, grafickým uživatelským prostředím, aplikacemi třetích stran a rozhraním operačního systému pro vývojáře mobilních aplikací. Bakalářská práce se zabývá mobilními platformami. Teoretická část práce prezentuje implementační metody návrhu aplikací na mobilní platformy. Seznámí se s mobilními operačními systémy pro vývoj uživatelského prostředí a aplikačních funkcí pro platformu Google Android. Vývoj aplikací a uživatelské prostředí je porovnán i z pohledu běžného uživatele, který pro mobilní platformy nikdy nevyvíjel. Vývoj aplikací je prezentován spíše pro zkušenějšího uživatele. Praktická část je zaměřena na využití technologií pro tvorbu aplikací s předchozími znalostmi programování na konkrétní platformu Google Android. Cílem praktické části je porovnání nativní technologie Google Android a hybridního UI frameworku Ionic. Hlouběji jsou rozebrány části o vývoji aplikací a porozumění konkrétním programovacím technologiím. 8

2 Historie Softwarové operační systémy pro mobilní hardwarové zařízení jsou zasazeny do naší minulosti, současnosti i budoucnosti. Kapitola Historie představuje nejdůležitější historické fakty mobilních systémů. V bakalářské práci nalezneme vlastní kapitolu o historii platformy Google Android a hybridního frameworku Ionic. Současné moderní technologie pro vývoj na platformy Windows, Apple a Google Android překonávají každé předchozí verze systému a konkurují si vzájemně mezi sebou. Pomyslnou historii chytrých softwarových mobilních platforem započal Microsoft a Psion. Microsoft představením první verze systému Windows Mobile CE 3. 0 začal historii moderních mobilních operačních systémů. S prvním hardwarovým zařízením Pocket PC 2000 si Microsoft 19. dubna 2000 vytvořil úspěšný mobilní operační systém pro kapesní počítače. Nokia vystoupila se šestou verzí systémů EPOC od firmy Psion s obchodním názvem SymbianOS v roce 2001. Firma Psion operační systém vyvíjela a využívala ve fyzických zařízeních od roku 1980. Platformu mobilních operačních systémů si široká veřejnost oblíbila natolik, že z podvědomí běžného uživatele vytlačila od jejího nástupu ostatní operační systémy. Na Evropském obchodním trhu po dobu 5let jsou nejčastějšími operačními systémy Google Android a Apple ios. Napomohly tomu historické fakty, že v roce 2007 se založila organizace OHA (Open Handset Alliance). Konsorciem byli vystaveny otevřené standardy pro vývoj fyzických zařízení. Tento rok vydali vývojáři i první verze operačních systémů ios a Android. Vývoj aplikací pro tyto systémy byl na začátku pouze pomocí nativních aplikačních rámců. Komunita vývojářů si vytvořila otevřené i placené hybridní technologie, pro vytváření aplikací na mobilní operační systémy. 9

3 Cíl a metodika práce Kapitoly popisují důležitá teoretická i praktická východiska softwarové realizace aplikací. V teoretické části bakalářské práce porovnáme a seznámíme se s dvěma principy vývoje aplikací pro mobilní architekturu ARM. Podrobněji rozebrány jsou části o grafickém uživatelském prostředí, vývojem aplikací, technologií a historií. Začínajícím i zkušeným programátorům aplikací je vytvořen ucelený materiál pro tvorbu mobilních aplikací. Zasvětit čtenáře do procesu vývoje aplikací pro tyto mladé operační systémy. Vytvořit analýzu potřeb a vlastností pro jednotlivé technologie. Seznámit se správnými postupy při návrhu uživatelského prostředí a se základními koncepty vybraných mobilních technologií. Základními předpoklady pro vstup do světa mobilních softwarových technologií je pochopení vlastností a závislostí v dané technologii. Všechny moderní mobilní operační systémy si řeší koncept jinak, dle použitých implementačních technologií. Vývojáři těchto systémů vytvořili vše tak, aby již struktura projektu vedla ke správnému návrhu aplikace. Teoretická část je zpracována za pomocí uvedené literatury. Byly zpracovány dvě kapitoly o Nativních a Hybridních technologiích pro tvorbu mobilních ARM aplikací. Vybrány byli právě dvě rozšířené a otevřené technologie pro tvorbu ARM aplikací. Vybrán byl mobilní otevřený operační systém Google Android a byla využita technologie přímá (nativní API) a hybridní UI framework Ionic pro tvorbu Android aplikací. Závěrem teoretické části bakalářské práce je porovnání hybridních a nativních technologií, porovnání vybraných mobilních operačních systémů a porovnání způsobu návrhu aplikace s hybridními aplikačními rámci. Cílem práce je seznámit čtenáře s vývojem pro mobilní operační systémy Praktická část bakalářské práce je zpracována za pomocí vybraných technologií pro tvorbu aplikací na mobilní platformu Google Android. Praktická část je rozšíření teoretických znalostí Android API a hybridního aplikačního rámce Ionic. Cílem praktické práce je ucelený výukový materiál. 10

4 Teoretická část Teoretickou část bakalářské práce je možno považovat jako vstupní bod k základním dovednostem a potřebné informovanosti budoucích vývojářů pro mobilní platformy. Dále se seznámíme se základními znalostmi aplikačního rozhraní, uživatelským prostředím a vývojem aplikací pro nativní a hybridní platformy. Aplikační rozhraní (API) je nejdůležitějším nástrojem pro vytváření nativních aplikací. Technologie mají API od vývojářů daného frameworku nebo mobilního operačního systému. V bakalářské práci jsou vybrány nativní a hybridní frameworky k reprezentaci mobilních technologií pro tvorbu aplikací. Závěrem teoretické části je porovnání vývoje aplikací. Nativní softwarové platformy jsou porovnány s hybridními technologiemi pro operační systémy. Dále porovnáme vývoj vybraných nativních a hybridních technologií. 11

4.1 Nativní technologie Nativní způsob vývoje aplikací je myšlena implementace zdrojových kódů v jazyce, ve kterém vývojáři daného mobilního operačního systému umožnili ostatním vývojářům (tzv. třetích stran) vytvářet. Konkrétní platforma má z pohledu vývojáře vlastní implementační jazyk, vývojářské prostředí, strukturu aplikace a aplikačního rozhraní (API). Vytváření nativních aplikací je časové náročnější, ale aplikace může být robustnější a mít přímou kompatibilitu se zařízeními, pro které je aplikace vyvíjena. Nativní aplikaci lze lépe optimalizovat a tak je šetrnější s paměťovou náročností a úspornější pro zdroj napájení. Nicméně udržovat několik zdrojových kódů pro jednu aplikaci podle počtu implementovaných platforem, není ideální u méně náročných aplikací, když na každou platformu je potřeba vytvořit vlastní aplikaci. Nativní aplikace jsou finančně náročné, ale s unikátními a robustními možnostmi řešení, různorodé pro každou platformu. V prvotních řešeních je nativní technologie složitější pro vytvoření mobilní aplikace. Studium jednotlivých nativních technologií je složité a časově náročné. Bez předchozích znalostí programování v Java, Objective-C, C#, C++ apod. se neobejdeme. Největší nevýhodou vytváření aplikací pomocí nativních technologií je implementování aplikací pro jednotlivé operační systémy zvlášť. Moderní aplikace pro reálného uživatele by měla být dostupná na více operačních systémech. 12

4.1.1 Google Android Android je rozsáhlý operační systém vytvořený převážně pro mobilní zařízení. Google Android najdeme v PDA, tabletech, mobilních telefonech, hodinkách, navigacích ale i v herních a výukových zařízeních. Operační systém Android je nejrychleji rostoucím a nejrozšířenější systémem na trhu s mobilními technologiemi. Nabízí se otázka, jakým způsobem tento mladý operační systém dosáhl svých výsledků. Hlavními výhodami systému Android je jeho nezávislost, dostupnost a rozsáhlost programovacích prostředků. Společnost Google vydala od základu operační systém Android pod open source licencí. Otevřený systém má volně dostupné všechny části systému ve formě zdrojových kódů. Rozšiřitelnost a přizpůsobení systému má velké výhody jak pro vývoj aplikací, tak i pro výrobce fyzických zařízení. Operační systém je navržen pro optimalizaci operační paměti a fyzických prostředků v mobilním prostředí. V této kapitole naleznete informace o historii, základní informace pro vývoj aplikací, vytváření uživatelského rozhraní a rozšířený vývoj inovativních mobilních aplikací pro platformu Google Android. 13

4.1.1.1 Historie Operační systém Android je jeden z nejmladších systémů v dnešní době. S vývojem tohoto mladého operační systému začala malá firma v Kalifornii v USA. Zakladatelé společnosti Andy Rubin, Rich Miner, Nick Sears a Chris White v roce 2003 založili společnost Android, Inc.[1][2] Společnost Google Inc. odkoupila v roce 2005 Android Inc. a získala zkušené programátory v oblasti mobilních technologií. Google odstartoval vlastní vývoj operačního systému na jádře operačního systému Linux v čele ze zakladatelem tehdejší společnosti Andy Rubinem. [1][3] Oficiální vydání první verze operačního systému Android proběhlo až v roce 2007. Tímto krokem společnost Google Inc. se dostává na trh s mobilními zařízeními. Android 1.0 je vystaven na jádře Linux 2.6 a od té doby přišlo mnoho aktualizací až na dnešní verzi Androidu 5. 2 s přepracovaným virtuálním Javoským strojem (JVM) a uživatelským prostředím.[2] Google jednotlivé verze Androidu pojmenoval podle názvu sladkých zákusků v abecedním pořadí kromě prvních dvou verzí. Více informací o funkcích a vývoji v Android API, najdete v přiložené tabulce Historie Androidu - rozšiřování API. Tabulka 1 Historie Androidu - rozšiřování API Android Verze API Datum vydání Rozšíření a vlastnosti systému Android Market - katalog aplikaci s aktualizacemi jednotlivých aplikací Google Kontakty možnost 1. 0 Alpha 1 23. září 2008 synchronizace s aplikací Kontakty Google Kalendář možnost synchronizace s aplikací Kalendář Google Mapy s funkcí Lantitude (získání polohy z GPS souřadnic) a s funkcí Street View (Panoramatické 14

záběry v rozsahu 360 horizontálně a 290 vertikálně z ulic) Google Synchronizace aplikace pro synchronizaci aplikací Kalendář, Kontakty, atd. Google Talk komunikační služba Gmail emailový klient Youtube přehrávač a Mediální přehrávač Bezdrátové sítě Wi-Fi a Bluetooth podpora bezdrátových sítí Vylepšené uživatelské prostředí Animace přechodů Implementace rotace aplikací a softwarové klávesnice Nahrávání videa a přehrávání 1. 5 Cupcake 3 27. duben 2009 formátu MPEG- 4 a 3GP Nahrávání videa na portál Youtube a nahrávání fotek na Google Picasa Rychlejší získáváni polohy a zrychlení fotoaparátu Podpora Widgetů a podpora automatického Zdroj: Převzato a upraveno z [1] [4] (Zkráceno) 15

Některé verze systému se od sebe liší celkem významně a jiné jen opravou či dokončením menší funkcionality, ale i tímto každá nová verze napomáhá k rozšíření otevřeného systému a ke vzniku kvalitního mobilního operačního systému. Základními návyky pro vytvoření kvalitní mezinárodní aplikace je dobré mít přehled o vydaných a vydávaných verzích systému Google Android a přizpůsobit se novým způsobům vytváření aplikací. Nové grafické a funkcionální prvky ve starších verzích systému nejsou přidávány a tímto se zachovává konzistentní stav verzí pro vytváření uživatelských aplikací. Systém Google Android má mnoho verzí systému v mnoha fyzických zařízeních s různými způsoby nasazení. V reálném prostředí, kde aplikaci nasazujeme, je nutné analyzovat šíři rozsahu verzí, jak z pohledu výkonosti jednotlivých druhů fyzických zařízení tak i nasazené verze systému. Základní principy programování pro tento systém jsou postaveny na jazyku Java. Závislosti zpětné funkcionality ve zdrojovém kódu se mění dle verze jazyka Java a verzi SDK (Software Development Kit) vydanou vývojáři. 16

4.1.1.2 Technologie Vývoj softwaru pro tento operační systém probíhá v tzv. Host-Target vývojovém prostředí. Tím je míněn vývojový proces, ve kterém je aplikace vyvíjena za pomocí vývojového prostředí ve vyšším operačním systému MAC OS, LINUX nebo Windows. Výsledný proces je portován do mobilního zařízení.[1] Nativní aplikace na operační systém Android vytváříme za pomocí programovacího jazyka Android a Software Development Kit (SDK). Pro testování fyzického zařízení a emulování mobilního zařízení vývojáři uvolnili testovací nástroj pro vývojářské prostředí ADT (Android Development Tool). Pro vývoj Android aplikací a testování aplikací vytvořili vývojáři od Googlu vlastní vývojářské prostředí Android Studio.[2] Prvotní testování aplikace emulujeme pomocí virtualizace fyzického zařízení na operačním systému. Finální testování a ladění programu pro optimalizaci je prováděno na konkrétním fyzickém zařízení. Podle zdroje [1] stránky 25: Pro řadu vývojářů je emulátor základním testovacím zařízením a usnadňuje tak počáteční vývoj a ladění programu. Závěrečné zkoušky kompletní funkčnosti aplikace jsou již prováděny již na reálném zařízení.. Android vývojáři dále uvolnili nástroje pro analýzu, nástroje pro optimalizaci samotné vykreslení aplikace a hierarchie pohledů, pro analýzu paměti ve fyzickém zařízení, analýzu vytížení reálného zařízení na energickou spotřebu a analýzu vytížení a náročnosti úkonů procesoru.[2] Architekturu operačního systému Android lze rozdělit do 4 vrstev. V nejnižší vrstvě Linux Kernel se nachází jádro operačního systému. Podle [1] str. 19: Její základní funkcí je implementace abstrakce mezi použitým hardwarem a softwarem ve vyšší vrstvách.. Nejdůležitější vrstva systému, která je určena pro koordinaci všech hardwarových prostředků ve fyzickém zařízení. Představuje všechny softwarové ovladače pro zařízení. Ve druhé vrstvě operačního systému nad jádrem systému postavili knihovny rozhraní vývojářských API ve zdrojovém jazyce C samotného jádra systému. Dále tato vrstva je důležitá z pohledu vývojáře mobilních aplikací, protože obsahuje spouštěcí mechanismus aplikací se základními knihovnami Java. Spouštěná aplikace se kompiluje do bajtkódu pro virtuální stroj Javy. Zkompilovaný 17

kód je v následujícím kroku přeložen pro běhového prostředí Androidu dle verze operačního systému.[1][3] Další vrstva systému Application Framework otevírá vývojářům funkce vizuálního prostředí (View System), správu oznámení (Notification Manager), informace o aplikacích (Package Manager), správu externích zdrojů (Resource Manager), správa aktivit (Activity Manger) a rozhraní pro komunikaci s ostatními aplikacemi (Content Providers).[1][2] Nejvyšší vrstvou jsou uživatelské aplikace. Výrobci fyzických zařízení většinou přizpůsobují základní programovou sadu od vývojářů Googlu. Architektura Google Android je zobrazena na obrázku č. 1 Architektura mobilního systému Google Android. Obr. 1 Architektura Google Android Zdroj: převzato [25] 18

4.1.1.3 Uživatelské prostředí Kapitola může být považována jako vstupní bod do vývoje uživatelského prostředí v operačním systému Android. Podle [1] str. 74: Při návrhu uživatelského rozhraní je potřeba také myslet na zařízení, na kterém aplikace poběží, a to z hlediska rozlišení displeje, popř. z hlediska rotace aplikace při rotaci.. Autor citace vystihuje problém deformací obrazu fyzického zařízení při jeho rotaci. Problém nastává, když autor vizuální komponenty skládá přímo na obrazovku. Aplikace při rotaci, pokud není použita hierarchie uživatelského prostředí, deformuje vizuální komponenty. Prezentační vrstva v aplikaci pro Android reprezentuje vizuální komponentu aktivita (Activity). Reálná aplikace se skládá s aktivit, které na sebe navazují pomocí aplikačního systému LIFO (Last in First out). Tato technika umožňuje uživateli se vrátit zpět do předchozího stavu aplikace přímo v konkrétní aktivitě. Aplikace konstrukcí obsahuje jednu konkrétní aktivitu, která je hlavní a spouští se při inicializaci aplikace. Activity mají implementovaný model poskytující dialogové okno. [1] Hierarchie uživatelského prostředí se skládá ze základní jednotky pohledu (View) a jeho rodiče skupinu pohledu (ViewGroup). Uspořádání uživatelského prostředí lze docílit pomocí předdefinovaných komponent (tvz. Widgets) anebo pomocí vlastních komponent. [1][2] Pohledy v operačním systému Android se implementují pomocí zdrojového jazyka XML. Tento značkovací jazyk dává vývojářům svobodu při tvorbě rozvržení. Třídy pohledy a skupiny pohledů lze do sebe libovolně vkládat. Funkcionalita jednotlivých Widgetů se implementuje ve zdrojovém jazyce Java. Při vytvoření nové Aktivity v metodě oncreate() je možné nastavit konkrétní šablonu s hierarchií uživatelského prostředí.[2] V Android API naleznete několik standardních rozvržení (Layouts), které jsou rozšířením třídy ViewGroup. V API naleznete lineární, relativní, řádkové, tabulkové, rámové, mřížkové a absolutní rozvržení. V aplikaci lze reagovat na změnu orientace displeje, přizpůsobit vnitřní a vnější okraje, relativně volit pozice od ostatních objektů. Pro tvorbu rozhraní Android SDK obsahuje sadu vizuálních komponent 19

s předem přizpůsobitelnými atributy. Tyto standardní komponenty tvoří základní uživatelské prostředí. Vizuálním komponentám lze přizpůsobit grafický vzhled. [3] Základními vizuálními komponentami jsou textová pole, tlačítka, zaškrtávací pole, přepínače, obrázky, seznamy, záložky, dialogy atd. Principem se od sebe jednotlivé vizuální komponenty neliší. Prakticky se jedná o soubor s XML zdrojovým kódem tzv. šablonou. V předgenerovaném zdrojovém kódu Javy při prvním spuštění je aktivita vizuálně prázdná. Šablony s XML kódem se vkládají pomocí metody setcontentview(), která očekává parametr metody objekt typu View. Tato metoda je obvykle volána přímo ve vytváření jedince (instance) aktivity, již ve zmiňované metodě oncreate(). [1][2] Zdrojový kód aplikace přináší oživení aplikačních, prezentačních funkcí a obsluhu datových informací. V další kapitole se zaměříme právě na aplikační kód a konfiguraci aplikace. 20

4.1.1.4 Vývoj aplikací Pro pochopení logiky konstrukce nativních aplikací pro Android je nutné uvažovat, pro které aplikační funkce bude přizpůsobena. Konstrukce aplikace pro platformu jsou přizpůsobeny pro běh na pozadí a popředí. Typ aplikace běžící na popředí jsou vizuální aplikace pro reálného uživatele. Aplikace běžící na pozadí sledují aktuálnost všech prostředků pro aplikace. Základní strukturu projektu na platformu Android zobrazuje přiložený obrázek.[1] Obr. 2 Struktura nativní aplikace Android Zdroj: vlastní zpracování Anatomie aplikace Android se skládá z komponent Aktivit (Activity), Služeb (Servises), Poskytovatele obsahu (Content Providers), Záměry (Intents), Přijímače (Broadcast Receivers) a Oznámení (Notification). Aktivita (prezentační vrstva aplikace) je základní vizuální komponenta prezentující vizuální obsah aplikace. Konkrétněji byl vysvětlen pojem Activity v kapitole Uživatelské prostředí. V této kapitole si ukážeme Activity a všechny ostatní komponenty pro vývoj Android aplikací. [1] Aplikace se skládá z aktivit, které na sebe navazují pomocí systému LIFO (Last in First out). Tímto umožňuje uživateli vrátit se zpět do předchozí aplikace přímo ke konkrétní aktivitě. 21

Nad životním cyklem aplikací nemá systém Android žádnou kontrolu. Dle [1] str. 42: Ve výchozím stavu každá aplikace Android běží ve vlastním procesu, který je spuštěn samostatnou instancí virtuálního stroje Dalvik. Paměť a řízení procesů každé aplikace jsou řešeny výhradně za běhu.. Od verze 3.0 v Androidu implementovali vývojáři novou komponentu fragmenty (Fragments). Grafické komponenty Aktivity a Pohledy obalí vrstva Fragment a ten se přizpůsobí dané velikosti zařízení. Pro zpětnou podporu verzí vývojáři vydali knihovnu, která řeší použití ve starších verzích systému. Support Library k zaručení zpětné kompatibility stačí knihovnu připojit k projektu, ve kterém využíváte Fragmenty.[1] Obr. 3 Životní cyklus Aktivity Zdroj: převzato [24] Životní cyklus aktivity začíná metodou oncreate() při inicializaci aplikace. Pokračuje metodou onstart(), která vizuálně představuje první spuštění aplikace. Při změně aplikace je volána metoda onpause(). Při ukončení je volána metoda ondestroy().[1][2] 22

Služby v systému Android představují meziprocesorovou komunikaci. Služby aplikace běží na pozadí, kde provádějí operace. Služba je volána prostřednictvím komponent v perzistentním nebo neperzistentním stavu. [2] Poskytovatelé obsahu jsou kontejnery, kteří poskytují obsah ze zaregistrovaných aplikací. Pomocí třídy ContentProvider poskytovatel obsahu si zaregistruje vlastní kontejner (Content Provider). [1] Pomocí záměrů (Intents) je možné zasílat zprávy mezi komponentami (Activity). Přijímače slouží k naslouchání aplikací a obsluze činností.[1] Konfigurace aplikace na platformě Google Android je v XML souboru (AndroidManifest.xml). V souboru v kořenovém adresáři AndroidManifest.xml nalezneme název, verzi, vlastnosti, úrovně API, použité vlastní komponenty, systémová práva a ostatní knihovny. [3] Statické soubory na platformě naleznete ve složce res. Vývojáři implementovali statickou generovanou třídu R, která vytváří strukturu atributů. Na platformě Android nalezneme několik základních možností úložiště pro ukládání perzistentních dat. [1] Relační databáze SQLite je odlehčená verze databázových systémů s optimalizací pro výkon. Běží v jednom samostatném procesu a není náročná na fyzickou paměť. Práce s daty v relační databázi pomocí Android SDK ve třídě SQLiteDatabase nám poskytuje metody pro vyhledávání dat execsql(), query() a rawquery(). Pro správu dat nalezneme metody pro úpravu (update()), přidávání (insert()) a mazání (delete()) informací. [3] Preference je typ perzistentního úložiště pomocí vazby klíč -> hodnota. Ukládání probíhá do souboru XML. Ukládá se vybraná hodnota. Preference jsou spíše určeny pro nastavení aplikace nebo samotného operačního systému. Na platformě Google Android lze ukládat trvalá data také do datových souborů. Práce s datovými soubory je stejná jako v jiné programovací technologii. [1] V praktické části naleznete pokračování nativního vývoje aplikací pro Android. 23

4.2 Hybridní technologie Hybridní způsob vytváření aplikací je implementace zdrojových kódů v programovacích jazycích, ve kterých vývojáři vytvořili hybridní framework. Aplikace vytvořené hybridním frameworkem se řadí do mnoha typů dle následného upravení pro konkrétní mobilní operační systém. Vytváření hybridních aplikací může být časové méně náročné, ale nezaručuje přímou kompatibilitu s verzemi operačních systémů, s konkrétními zařízeními nebo aplikačními funkcemi. Nicméně udržovat jeden implementační kód anebo většinu zdrojových kódů pro jednu aplikaci je z časových omezení výhodné u méně či středně náročných aplikací. Nativní způsob je finančně náročné řešení s unikátními a robustními možnostmi řešení pro jednotlivé platformy díky předpřipraveným komponentám pro práci s fyzickými prostředky. Hybridní multiplatformní frameworky je možno rozdělit podle způsobu vytváření aplikace na Runtime, Compilers, Web-to-Native wrapper. [23] Web-to-Native wrapper je způsob vytváření aplikací pomocí webových technologií. Středně pokročilá technika pro vývoj mobilních aplikací je ideální pro vývojáře webových aplikací. Největšími zástupci jsou Apache Cordova/PhoneGap a Trigger.io. Architektura frameworků je vystavena na dvou vrstvách API. Pomocí prvního aplikačního API (většinou pomocí jazyku JavaScript) vytváříme webovou aplikaci a druhé rozhraní je využito při kompilaci pro konkrétní platformu, kdy se implementační kód zkompiluje do balíčku pomocínativního API, které pak lze nainstalovat ve fyzickém zařízení či publikovat v obchodě s aplikacemi. Web-to- Native Wrapper aplikace jsou zapouzdřeny pomocí rozhraní pro prohlížení webových stránek (WebView). Frameworky nabízejí pro komunikaci s fyzickými zařízeními přídavné komponenty (Plug-ins), které obsluhují funkce pro komunikaci s nativním API mobilního operačního systému. [9] Pro tvorbu uživatelského prostředí pro webové nativní aplikace je výhodné využit mobilní UI frameworky, které zaručují kompatibilitu s nativním vzhledem aplikace. Největšími zástupci IU rámců jsou Sencha Touch, PhoneJS, KendoUI a Ionic. 24

Typ aplikací Runtime má vlastní exekuční prostředí podobné WebView. Využívají podobného mostu jako Web-to-Native Wrapper mezi nativním API operačního systému. Představitelé Runtime hybridních frameworků jsou Appcelerator Titanium, RhoMobile, QT Mobile. [8][10] Architektura multiplatformního způsobu Runtime má napsané API pro uživatelské prostředí a programové API, ve kterém vývojář aplikace vytváří. Compilers je nejpokročilejší technika pro vývoj hybridních mobilních nativních aplikací, která využívá tzv. Mezikódu, který je kompilován do nativního jazyka nebo strojového kódu. Komplexní frameworky kombinují typy Runtime a Compilers pro vytváření multiplatformních aplikací. Největším zástupcem kombinující oba způsoby je MoSync a mezi významnější zástupci Compilers hybridních frameworků patří Xamarin a Marmalade.[9] V následujících kapitolách se budeme věnovat UI Frameworku Ionic využívající Web-to-Native frameworku Cordova Apache. 25

4.2.1 Ionic Představíme si UI framework pro tvorbu mobilních webových aplikací a mobilních nativních aplikací. Aplikační rámec Ionic využívá pro aplikační skripty jazyka JavaScript s frameworkem AngularJS. Vizuální stránku aplikace vývojář implementuje pomocí vlastních směrnic, kaskádových stylů CSS/Sass. Struktura šablon Ionic využívá webového značkovacího jazyka HTML5. [6] Velice přizpůsobitelný UI framework, který lze využít pro tvorbu aplikací s funkčním robustním UI rozhraním. Ionic vytváří aplikace pomocí mobilních aplikačních frameworků Web-to-Native Wrapper. Ionic lze využit s aplikačními rámci Apache Cordova/PhoneGap a Trigger.io pro obalení do mobilní nativní aplikace. [7] Framework obsahuje sadu přizpůsobených funkčních komponent pro vytváření robustního vizuálního prostředí pro mobilní webovou i mobilní nativní aplikaci. Aplikační rámec je primárně určen pro vytváření mobilních nativních aplikací. Ionic lze kombinovat i s jinými vizuálními a aplikačními frameworky. Ionic podporuje vytváření nativních aplikací na mobilní operační systémy Android a ios. Podporu ostatních platforem vývojáři Ionicu stále realizují. V následujících kapitolách o použitých technologiích, možnosti přizpůsobení a využití uživatelského rozhraní a o vývoji aplikací. 26

4.2.1.1 Historie UI framework Ionic je jeden z nejmladších aplikačních rámců pro vytváření interaktivního uživatelského prostředí pro mobilní aplikace. První veřejně dostupnou verzi Alfa vývojáři vypustili od společnosti Drifty Co. na konci listopadu 2013. Beta verze byla vydána v březnu 2014. [6] V minulosti společnost Drifty Co. vytvořila dva (Codiga a Jetstrap) komunitou oblíbené drag-and-drop editory (Application Builders) pro výstavbu mobilních interaktivních vizuálních designů za pomocí frameworků JQuery Mobile a Twitter Bootstrap. [6][7] První stabilní verze byla vydána v květnu 2015 pod MIT Licencí. Framework Ionic je perspektivní a jednoduchý UI framework, kterému se v komunitě vývojářů daří díky psaní mobilních aplikací pomocí webových technologií. Ionic podporuje nativní aplikace pro operační systémy Android a ios. [7] Podporu platforem Firefox OS a Windows Phone vývojáři Ionicu stále vyvíjejí. Podpora je zatím zaměřena na nejrozsáhlejší platformy Apple ios a Google Android. [7] 27

4.2.1.2 Technologie Základní struktura aplikace má podobu struktuře balíčku podle aplikačního rámce AngularJS, který ovládá Apache Cordova/PhoneGap API. AngularJS umožňuje v aplikaci použít architekturu MVC (Model-View-Controler) nebo architekturu MVVM (Model-View-ViewModel). [6] Implementace uživatelského rozhraní lze využít preprocesor SASS a kaskádových stylů CSS. Framework má předzpracované grafické komponenty, které lze jednoduše využit jen za pomocí strukturovaného jazyka HTML (Směrnice). [6] Ionic aplikace běží za pomocí JavaScriptového serveru Node.js. Ionic má vlastní konzolové CLI, ve kterém je možné ovládat sestavení externích zdrojů (Gulp) a sestavení nativní aplikace pomocí Web-to-Native frameworku Cordova/PhoneGap API. Obr. 4 Architektura Ionic / Cordova / Gulp Zdroj: převzato [23] Jádro Ionicu má implementovaný modul (ngmodul), který obsluhuje zdrojové kódy napsané v AngularJS, které oživují již vizuálně ztvárněné strukturované bloky HTML pomocí vygenerovaných CSS/SASS kaskádových stylů. Ovládání periferii Ionic řeší pomocí ovladače, který využívá Cordova/PhoneGap API. Pro animace v aplikaci si tvůrci frameworku vytvořili odlehčenou knihovnu jqlite z rodiny frameworku JQuery. [23] 28

4.2.1.3 Uživatelské prostředí Grafické rozhraní UI aplikačního rámce Ionic má robustní vzhled s ideálními a optimalizovanými řešeními pro mobilní nativní aplikace. Ostatní vývojáře vede ke správným principům pomocí předpřipravených vizuálních komponent. Vizuální komponenty se přizpůsobují grafickému rozhraní operačnímu systému. Oficiální podpora grafického prostředí je pro systém Android 4. 1 a ios 7. 0, nicméně hybridní aplikace běží jako instance třídy WebView (Android) a UIWebView (ios). To znamená, že aplikace je vykreslována za pomocí internetového klienta. [6] Grafická struktura je vykreslována pomocí JavaScriptového aplikačního rámce AngularJS, který vývojáři UI frameworku Ionic v hlavním modulu ngmodul využili pro předpřipravené komponenty, které zapouzdřili do dokumentu HTML pomocí vlastních HTML značek pro tvorbu struktury s grafickou vizualizací. [7] Pro tvorbu struktury dokumentu AngularJS má vlastní předpřipravené HTML značky tzv. směrnice (Directivites), které je možné využit i pro tvorbu vlastních směrnic uživatelského rozhraní. Pro efektivní tvorbu využili stylizování aplikace pomocí preprocesoru Sass. [7] Díky frameworku AngularJS se Ionic stal mocným nástrojem, pro vytvoření robustní aplikace. AngularJS staví své aplikace na MVVM architektuře. Model-View- ModelView architektura dokáže poslouchat změny díky řídícím kontrolérům a měnit data v závislosti na nich. Framework má vlastní systém pro tvorbu a předávání pohledů (View). [23] Využívá vlastní rozšířené logiky pro práci s vykreslováním dat a předáváním jich mezi aplikační a vizuální vrstvou aplikace. Pomocí řídící globální proměnné prostor ($scope), lze předávat a pracovat s informacemi pomocí klasických logických operací v aplikačním kódu i ve struktuře šablony. [23] 29

4.2.1.4 Vývoj aplikací Vývoj aplikací v UI frameworku Ionic je rychlý a jednoduchý za předpokladu, že si vystačíme pouze se základními funkcemi a s předem připravenými prvky uživatelského prostředí. Základní uživatelské prostředí se skládá z rozšířitelných Directivites, které lze v šabloně využit. Všechny realizované aplikace frameworkém AngularJS jsou většinou jednostránkové aplikace tzv. Singleton, ve kterém se mění pouze pomocí JavaScriptu jednotlivé šablony.[23] Struktura frameworku Ionic vychází z aplikačního rámce AngularJS, který je aplikačním motorem pro všechny úrovně struktury aplikace. Pro vývoj aplikací je nutné konfigurovat aplikaci, ve které se vytvářejí se pohledy, které mapují kontroléry k šabloně. [6] Obr. 5 Struktura UI frameworku Ionic s AngularJS Zdroj: vlastní zpracování AngularJS má velkou výhodu v přehlednosti ve vytváření modulů pro vnímatelný celek aplikace. V modulech nalezneme aplikační kontroléry, služby a továrny pro použití datových struktur. Kontroléry se využívají k seskupení aplikačních funkcí a předávání dat mezi vrstvami aplikace do pohledu. Pro předávání informací se využívá proměnné $scope pro předání dat do šablony.[23] Pohledy se vytvářejí pomocí Directivites z AngularJS s příponou ng- anebo pomocí Directivites Ionic (Ionic rozšířených HTML značek). Ionic má vlastní 30

vytvořené struktury HTML značek, se stylizováním pomocí CSS přizpůsobitelné ve formě Scss. Dynamika uživatelského prostředí je zastoupena pomocí logických operací a v předávání atributů z globální proměnné $scope.[6] AngularJS využívá továrny pro vytvoření služeb pomocí depedency injection (DI). Služby se vytvářejí, když jsou potřeba nebo pro konkrétní jednoúčelovou instanci.[23] Architektura frameworku AngulerJS využívá služby RESTFul Web Service pro komunikaci s webovým serverem na kterém web běží. Dotazování probíhá pomocí objektu $http, který zasílá požadavky typu GET, POST, PUT, HEAD, DELETE, PATCH, JSONP na webový server. [6] Informace získané od uživatele lze ukládat přímo do internetového klienta pomocí LocalStorage s 5MB limitem pro uložená data. Obsluhu lokálního úložiště vykonává JavaSriptový framework AngularJS pomocí JSONu. Ukládání trvalých dat lze mnoha způsoby, které se využívají za pomocí buď externích plug-inů anebo knihoven. Pro obsluhu relační databáze je výhodné využít v mobilním operačním systému plug-in Cordova SQLite Plugin. [23] Pro komunikaci s potřebným hardwarem telefonu je potřeba přidat daný plug-in k modulů Cordova. Ionic využívá upravené verzi ngcordova (Cordova + AngularJS). Bezpečnost aplikace softwarových i hardwarových prostředků závisí na konkrétní verzi internetového klienta.[7] 31

4.3 Porovnání Závěrečná kapitola obsahové části bakalářské práce pojednává o porovnání možných mobilních technologií pro vývoj aplikací a her. Kapitola je rozdělena na porovnání operačních systémů a hybridních technologií pro vývoj aplikací. V této kapitole rozebereme vývoj aplikací pomocí nástrojů budoucnosti i současnosti. Pokud uvážíme vývoj mobilního trhu, je důležité se správně rozhodnout, na které softwarové platformy budeme chtít vyvíjet a zároveň jakou softwarovou technologii pro vývoj využijeme. Tabulka 2 Porovnání nativních a hybridních technologií Nativní technologie Hybridní technologie Využitelnost zařízení Plně Plně Programovací jazyky Nativní Hybridní / Webové Rychlost Vyšší Střední / Nízká Spotřeba Nízká Střední / Střední Grafické operace Vyšší Střední / Nízké UI/UX Vyšší Střední / Nižší - Střední Náklady Vyšší Střední / Nízké Bezpečnost Komplexní Špatná / Závisí na prohlížeči Publikace Možná Možná Zdroj: Vlastní zpracování 32

Vývoj nativních aplikací je pomocí standardních SDK a jazyků, pro které se rozhodli vývojáři platforem použít. Největší výhodou nativních aplikací je výkon a neomezené využití API. Největší nevýhodou je realizace a následná údržba aplikací pro více mobilních softwarových operačních systémů. Ostatní výhody a nevýhody obou přístupů jsou porovnány v tabulce Porovnání nativních a hybridních technologií.[9] Výhody, které přináší vytváření nativních aplikací pomocí nativního API, např.: spolupracují plně s hardwarovými i softwarovými službami, mohou být využitelné i bez internetového připojení a poskytují přirozené rozhraní k operačnímu systému. Hlavní nevýhodou je vytváření aplikací pro každou platformu zvlášť. Hybridní technologie, které využívají webové technologie, mají výhodu v univerzálnosti produkčního prostředí a není nutno je aktualizovat. Ostatní hybridní technologie nejsou závislé na webovém prohlížeči a mají lepší přístupy k nativnímu API. Lze doporučit využití současných nejpopulárnějších nástrojů pro vývoj aplikací, které nebrání k vytvoření konkrétních aplikačních funkcí v aplikaci. 33

4.3.1 Nativní technologie Nativní technologie pro vývoj aplikací jsou robustnější a přizpůsobitelnější pro herní a klasické aplikace. Operační systémy srovnáme podle rozšířenosti, licencí, uživatelského grafického rozhraní, vývoji aplikací a her, použitých implementačních technologií, bohatství nativních SDK knihoven, dokumentace, nástrojů, možnosti zabezpečení a velikosti komunity. Tyto základní faktory ovlivňují vývojáře k uskutečnění vývoje pro konkrétní mobilní operační systém. Porovnáme operační systém od výrobců Google Inc., Apple Inc., Microsoft, Symbian Ltd., HP, Technical Steering Group (TSG), Research in Motion (RIM), Mozilla a Canonical Ltd. Představení operačního systému Android od firmy Google Inc., který má zdrojové aplikační kódy v implementačním jazyku Java a značkovacím rozšiřitelným jazyku XML pro vytváření šablon uživatelského rozhraní, se kterými se v práci rozebírají podrobněji, se tolik neliší s principy ostatních nativních SDK u jiných operačních systémů. Používají se předělané konstrukce jazyka C, které si vývojáři v technologii obohatili o návrhovou architekturu OOP (Object Orientation Programming), přenositelnost, robustnost, modernost a přehlednost. [2] V tabulce 3. Porovnání mobilních operačních systémů naleznete přehled těchto jazyků s porovnáním a hodnocením mobilního systému. Z tabulky výsledků je závěr zřejmý. Apple ios je odlehčenou verzí vyššího operačního systému Mac OS s podporou dotykového ovládání. V tabulce nejvíce bodů získal ios nad operačními systémy Google Android, Microsoft Windows Phone, HP Web OS (dříve PalmOS), Blackberry OS (dříve RIM), Mozzila Firefox OS, Canonical Ltd Ubuntu OS, TSG Tizen a Symbian Ltd. SymbianOS. Mobilní operační systém Apple ios má přednosti všech moderních technologií pro rozšíření systému a vývoji aplikací. Intuitivní, přehledné, jednoduché a inovativní grafické uživatelské prostředí, které se zásadně neliší od konkurence Google Android. Vývoj uživatelského rozhraní je vytříbený, robustní a jednodušší od ostatních platforem. Vývoj aplikací pro ios je realizováno v editoru Xcode pomocí jazyka 34

Objective-C a Swift s knihovnami Cocoa Touch, Media a Services, které obsahují všechny potřebné moduly pro tvorbu her a aplikací. [16] Tabulka 3 Porovnání mobilních operačních systémů ios Android Windows Phone BlackBerry Verze 8. 4 5. 0. 2 8. 1 10. 3 Programovací jazyky SWIFT, Objective-C, C Java, XML C++, C#, XAML, JavaScript C, C++, QML Vývojové prostředí Xcode Android Studio Visual Studio Momentics IDE Publikace Placená Neplacená Placená Neplacená Popularita 10/10 9/10 7/10 7/10 Bohatství SDK 9/10 9/10 8/10 7/10 UI 9/10 9/10 8/10 7/10 UX 9/10 7/10 5/10 6/10 Nástroje 10/10 9/10 10/10 8/10 Zabezpečení 10/10 8/10 10/10 10/10 Testování aplikace 10/10 6/10 9/10 8/10 Dokumentace 10/10 9/10 9/10 9/10 Trh 10/10 10/10 7/10 7/10 Komunita 9/10 10/10 9/10 7/10 Vyhodnocení 96/100 86/100 82/100 76/100 Zdroj: Vlastní zpracování (zkráceno) 35

Nové verze operačního systému Windows Phone se grafickým rozhraním odlišily od ostatních systémů svými přizpůsobitelnými dlaždicemi na jedné domovské obrazovce. Celková vizualizace mobilního operačního systému Windows Phone je přehledná a moderní, ale neintuitivní a nelíbivá pro běžné uživatele. [15] Reputaci Microsoft dohání pomocí více způsobů vývoje aplikací pro Windows Phone. Pro nové verze je zastoupena varianta psát implementační kód v jazyce C# s vizuálním systémem šablon XAML upraveného jazyka XML. Aplikace lze vytvářet i bez předchozích znalostí programování nebo pomocí JavaScriptu. [15] Google Android se systémem ios se od sebe vizuálním grafických rozhraním zásadně neliší. Oproti systému od firmy Apple Inc., Android pro běžného uživatele umožňuje větší přizpůsobení v samotném systému s vizuální bloky (Widgets). Obr. 6 Porovnání vzhledu ios / Android / BlackBerry / Windows Phone. Zdroj: převzato a upraveno [18][19][20] Mobilní operační systémy Google Android, Apple ios a Windows Phone jsou nejperspektivnější platformy pro vývoj klasických či herních aplikací. Ostatní rozšířené operační systémy pokulhávají na místě nebo se snaží změnit prohraný boj. S inovacemi v novém operačním systému BlackBerry OS nešetřili, ale zatím bez větších tržních výsledků. 36

Porovnání ostatních perspektivních mobilních operačních systémů naleznete v příloze. Souhrn znalostí z kapitoly pojednává o smyslu vytvářet aplikace pro reálné uživatele na fyzických zařízeních v konkrétních operačních systémech, které v současnosti jsou populární, rozmanité a na trhu dostupné. Lze doporučit využití současných nejpopulárnějších mobilních operačních systémů. 37

4.3.2 Hybridní technologie Hybridní technologie pro vývoj aplikací jsou méně robustní a přizpůsobitelnější pro herní i klasické aplikace. Hybridních technologií je mnoho, ve většině případů se od sebe významně neliší. Liší se zásadně v interpretaci aplikace v samotném operačním systému. V této kapitole si porovnáme přístupy k realizaci mobilních aplikací. Porovnáme principy implementace softwarových frameworků Appcelerator Titanium, Ionic, QT, Xamarin, RhoMobile, Corona a MoSync. Hybridní aplikační rámce nabízejí podobné možnosti a vlastnosti ke tvorbě multiplatformních aplikací. Nejvíce se odlišují principy implementace a běhu aplikace ve fyzickém zařízení. [8] Appcelerator Titanium, Xamarin a QT na rozdíl od konkurentů, příkladem je Ionic, kteří jsou založeny na technologii HTML, CSS a JavaScriptu, které pomocí Adobe Cordova/PhoneGap API se webová aplikace zabalí jako nativní aplikace, která při spouštění běží ve vizuálním komponentu grafického uživatelského prostředí pro zobrazení webových stránek. Aplikační frameworky, které vytvářejí aplikace multiplatformně pomocí vlastního API, které aplikací sestaví pomocí nativních API od vývojářů softwarových platforem. [9] Appcelerator Titanium využívá pouze JavaScriptové API s jazykem XML pro tvorbu šablon. Rozdílem mezi Titaniumem, Xamarin využívá jazyka C# pro tvorbu multiplatformních aplikací a framework QT využívá jazyk C++ a pro tvorbu šablon jazyk QML. Některé multiplatformní frameworky kombinují oba přístupy příkladem je MoSync. Tento aplikační rámec kombinuje přístupy pomocí HTML5 s JavaScriptem a vytváření aplikací pomocí C/C++. Hybridní technologie, na které vývojáři použili webové technologie pro tvorbu nativních aplikací, mají jedinou výhodu. Lze využít stejný implementační kód pro vytvoření webové stránky. Ostatní vlastnosti a využitelnost u aplikačních rámců, které sestavují aplikací pomocí nativních API, jsou pro mobilní aplikaci výhodnější a rozšiřitelnější. 38

Technologie porovnáme dle jejich možných nasazení a využitelnosti na konkrétních platformách. Porovnáme webové UI frameworky pro tvorbu mobilních vizuálních rozhraní v pohledu. Některé UI frameworky v novějších verzích si implementovali Web-to-Native Wrapper pro pohodlnější využívání při nasazování aplikace. Tabulka 4 Porovnání UI frameworků SenchaTouch PhoneJS KendoUI ios A A A Android A A A Windows RT A A A Ionic A A N Ostatní A A A A Licence (Ne)Placená (Ne)Placená Placená Bohatství API 4/5 4/5 3/5 UI 4/5 4/5 4/5 UX 4/5 3/5 4/5 Neplacená 3/5 4/5 3/5 Architektura MVVM MVVM Knockout MVVM MVW AngularJS Publikování A A A A Dokumentace 4/5 3/5 3/5 2/5 Komunita 4/5 4/5 4/5 2/5 Vyhodnocení 20/25 18/25 18/25 14/25 Zdroj: Vlastní zpracování 39

Pro vytváření aplikací pomocí hybridních UI frameworků vyšly nejlépe KendoUI a SenchaTouch, díky své univerzálnosti, vlastní architektuře MVVM a dostupné podpoře. KendoUI, PhoneJS a SenchaTouch nabízejí komerční podporu oproti UI frameworku Ionic. Frameworky lze využít spíše za účelem vytváření komerčních projektů. KendoUI, PhoneJS a SenchaTouch jsou frameworky, které staví jedinečný webový design pomocí vlastních grafických komponentů pro uživatele. Tento způsob je časové náročný a pro nekomerční účely je rychlejší využit aplikační rámec, který předepisuje základními bloky a prvky pro webové rozhraní (např.: Ionic, JQuery Mobile). Lze doporučit využití současných nejpopulárnějších řešení pro vývoj aplikací. Pro tvorbu mobilních aplikací pomocí hybridních technologií je důležité si předem vytvořit analýzu návrhu aplikace a vybrat ty nejvhodnější nástroje pro tvorbu uživatelského rozhraní a aplikačních funkcí. 40

5 Praktická část Praktickou část bakalářské práce je možno uvažovat jako rozšíření programátorských dovedností a rozšíření teoretické části, potřebné k budoucímu vývoji pro mobilní platformu Google Android. Pro podporu výuky bakalářské práce je vytvořena webová stránka o platformě Android. Seznámíme se se znalostmi vývojářských prostředí, programování grafických uživatelských intuitivních prostředí a s vývojem aplikací v konkrétních programovacích jazycích, které jsou pro tvorbu aplikací pro platformu Google Android zásadní. V praktické části se zaměříme na úvod do vytváření mobilních aplikací pro platformu Android s aplikačním rámcem od Googlu a porovnáme hybridní proces vývoje aplikace pomocí frameworku Ionic. Vytvářet nativní aplikace budeme pomocí programovacího jazyka Java se základní (standardní) knihovnou Java SE (Standardní edice). Java SE je udržována a spravována pod licencí GNU General Public License a Java Community Process. Programovací jazyk Java je multiplatformní, objektově orientovaný, multiparadigmatický, strukturální, imperativní a reflexivní jazyk, který má otevřený zdrojový kód. Programovací jazyk je ovlivněn i jinými jazyky, ale již několik let drží svou logiku uspořádání a vývoj se vydává vlastním směrem. Hlavní výhody tohoto typového jazyka jsou v jeho bezpečnosti a přenositelnosti mezi platformami. S tímto jazykem se na platformě Google Android setkáme hlavně při tvorbě logických a aplikačních částí mobilní aplikace. Programování aplikací na Android se využívá standardní knihovny Java prostřednictvím aplikačního rámce Application Framework s využitím knihoven Googlu. Grafické prostředí aplikací na platformě Google Android vytváří pomocí šablon jednotlivých pohledů v jazyku XML. Tento strukturální značkovací jazyk je uzpůsoben pro tuto platformu přidáním vlastních atributů s přizpůsobitelnými hodnotami. Jazyka XML využívá platforma i v konfiguraci aplikace. Google Android využívá vlastní principy pro vývoj aplikací. Základní princip tvorby aplikací naleznete na přiloženém mediu se zdrojovými kódy aplikací na platformu Google Android. [2] 41

Vytvářet hybridní aplikace budeme pomocí frameworku Ionic. Seznámíme se strukturou aplikace se základními principy vývoje aplikací pomocí přidruženého frameworku AngularJS, který je využíván v této technologii pro implementaci logických a aplikačních částí. Uživatelské prostředí využívá upraveného webového strukturálního jazyka HTML a kaskádových stylů s upraveným frameworkem Twitter Bootstrap. [6] Nalezneme konfiguraci prostředí pro vývoj aplikací pro platformu Google Android, pomocí jazyků Java, JavaScript, HTML a XML, základní principy aplikačních frameworků a práci s uživatelským grafickým prostředím. Webovou stránku k praktické části naleznete na přiloženém médiu. Závěrem praktické práce je porovnání vybraných hybridních i nativních platforem. V přiloženém médiu naleznete zdrojové kódy webové stránky a dvou mobilních aplikací. Obr. 7 Praktická část Mobilní nativní aplikace / Android / Ionic. Zdroj: vlastní zpracování 42

Výsledným produktem praktické části bakalářské práce je webová aplikace pro výuku programování v nativním SDK Google Android a v hybridním UI frameworku Ionic. V aplikaci je vytvořeno porovnání technologií a dvě mobilní nativní aplikace za pomocí zmíněných technologií. V přiloženém médiu nalezneme webovou stránku s praktickou částí bakalářské práce. Webová stránka je také publikována na http://hybridnativeapps.9e.cz/. Obr. 8 Praktická část Webová výuková aplikace / Android / Ionic. Zdroj: vlastní zpracování 43