Windows 10 – univerzálny vývoj aplikácií (UWP)
Windows 10 – univerzálny vývoj aplikácií
Windows 10 prináša mnohé novinky nielen pre používateľov, ale aj pre vývojárov. V tomto príspevku sa dozviete niečo o základných princípoch tvorby univerzálnych Windows 10 aplikácií, ktoré je možné spustiť na širokej škále zariadení, od IoT zariadení (napr. Raspberry PI 2), cez smartfóny, tablety, počítače, až po zariadenia ako XBOX One, Surface Hub alebo holografické zariadenie Hololens. Následne si v sérii ďalších blogov detailnejšie priblížime možnosti implementácie rôznej často používanej aplikačnej funkcionality. Informácie k vývoju Windows 10 aplikácií môžete nájsť aj v nasledovnom kurze na Microsoft Virtual Academy: https://www.microsoftvirtualacademy.com/training-courses/a-developers-guide-to-windows-10
Univerzálny vývoj pre platformu Windows bol do určitej miery dostupný už pre verziu 8.1 a zahŕňal Windows a Windows Phone zariadenia. Tento univerzálny vývoj bol umožnený vďaka množine prekrývajúcich sa „APIčiek“ dostupných ako na Windows 8.1, tak aj na Windows Phone 8.1. Táto množina sa nazýva Win RT. Vytvorenie univerzálnej aplikácie spočívalo z vytvorenia riešenia zloženého z troch projektov. Jeden projekt obsahoval kód špecifický pre Windows 8.1 zariadenia, druhý projekt kód špecifický pre Windows Phone 8.1 a tretí projekt obsahoval zdieľaný kód, t.z. kód, ktorý patril do oboch predošlých projektov. V ideálnom prípade tento zdieľaný projekt obsahoval celú aplikačnú logiku a zvyšné dva projekty obsahovali iba súbory s používateľským rozhraním. V konečnom dôsledku však bolo stále potrebné vytvárať dva rôzne aplikačné balíčky a distribuovať ich do dvoch aplikačných obchodov. (pre viac informácií si môžete prečítať môj starší blog k vývoju univerzálnych Windows-Windows Phone 8.1 aplikácii).
Aj vďaka tomu, že Windows 10 je operačným systémom pre naozaj širokú škálu zariadení, boli možnosti vývoja univerzálnych aplikácií posunuté oveľa ďalej. Univerzálny vývoj na Windows 10 je umožnení novým unifikovaným aplikačným modelom a nástupcom Win RT a síce Universal Windows Platform (UWP), ktorý sprístupňuje najrôznejšie API naprieč rodinami Windows 10 zariadení.
Obr. 1: Stavebné prvky UWP
UWP je samostatnou časťou systému Windows a bude pravidelne updatovaná (oprava chýb, pridávanie API..). Vývojári budú vyvíjať aplikácie nad špecifickou verziou UWP. Na obrázku nižšie môžete vidieť časť aplikačného manifestu, v ktorom je definovaná cieľová verzia UWP a najvyššia verzia UWP, na ktorej bola aplikácia testovaná. (Pozn.: uvedené označenia verzií sú iba ilustračné)
Obr. 2: Cieľové verzie UWP
Pri programovaní Windows 10 aplikácií budete vytvárať jediný aplikačný balíček, ktorý následne publikujete cez jedno developerské centrum do jedného aplikačného obchodu prístupného pre Windows 10 zariadenia. To znamená, že budete môcť veľmi jednoducho distribuovať vašu aplikáciu pre akékoľvek Windows 10 zariadenia. V rámci tohto procesu budete mať samozrejme možnosť špecifikovať, pre ktoré rodiny zariadení je vaša aplikácia určená.
Základnou filozofiou vývoja Windows 10 aplikácií je vytváranie prirodzeného a zjednoteného používateľského zážitku naprieč zariadeniami, pričom sa však kladie dôraz aj na jeho „doprispôsobenie” na mieru danému typu zariadenia (podľa dostupného rozlíšenia obrazovky a iných hardvérových špecifík). Práve to umožňujú dva hlavné princípy a síce adaptívne používateľské rozhranie a adaptívny kód. Tieto princípy si detailnejšie priblížime nižšie.
Adaptívne používateľské rozhranie predstavuje rozhranie, ktoré sa prispôsobí veľkosti rozlíšenia obrazovky. Jeho fungovanie si môžete predstaviť ako fungovanie responzívnej webovej stránky. Takáto stránka sa dokáže prispôsobiť rozlíšeniu napr. využitím tzv. hamburgerového menu, zmenšením a premiestnením grafických prvkov v prípade zníženia dostupného rozlíšenia atď. Podobne funguje aj adaptívne rozhranie v univerzálnych Windows 10 aplikáciách. Využívajú sa pritom princípy ako adaptívnosť (zmena dizajnu, premiestnenie obsahu) a responzívnosť (zmena veľkosti, „reflow“ obsahu). UWP taktiež podporuje možnosť vytvorenia samostatného používateľského rozhrania pre špecifický typ zariadení, tzv. dizajn šitý na mieru (tailored design). Na obrázku nižšie môžete vidieť, ako sa dokáže rozhranie aplikačného obchodu na Windows 10 prispôsobiť obrazovke počítača a smartfónu.
Obr. 3: Adaptívne rozhranie Store aplikácie
Ďalším spomenutým princípom, ktorý umožňuje prispôsobiť aplikáciu určitému typu zariadenia a využiť tak jeho plný potenciál, je adaptívny kód. Vďaka adaptívnemu kódu vieme v aplikácií adresovať špecifiká napríklad smartfónov (kamera s bleskom, HW spätné tlačidlo), pri IoT zariadeniach vieme pristupovať k pripojeným senzorom a pod. Pre každú edíciu Windows 10, t.z. verziu pre špecifickú rodinu zariadení, existujú takzvané rozširujúce SDK (extension SDKs), ktoré sprístupňujú funkcionalitu daného typu zariadení a ktoré môžeme do projektu pridať ako referenciu. Keďže sa však vytvára jeden aplikačný balíček, resp. jedna binárka pre všetky zariadenia, bolo potrebné zabezpečiť, aby kompilátor nehlásil chyby pri použití tried a metód špecifických napr. pre Windows 10 mobile, v prípade kompilovania kódu pre iný typ zariadenia. Každá edícia Windows 10 preto obsahuje minimálne prázdne definície tried a metód jednotlivých extension SDKs. Tým sa predíde chybám o neznámych definíciách, ktoré by kompilátor v opačnom prípade hlásil. Avšak v rámci kódu je potrebné zabezpečiť, aby sa špecifická funkcionalita vyvolala iba na správnom type zariadení. To je možné vykonať s využitím reflexie, ktorá nám umožní zistiť, či je daná funkcionalita dostupná na zariadení, na ktorom aplikácia beží. Nižšie môžete vidieť implementáciu spätnej navigácie, kde rozlišujeme, či zariadenie disponuje HW spätným tlačidlom.
Obr. 4: Zistenie prítomnosti typu počas behu aplikácie
To bolo krátke predstavenie vývoja pre Windows 10 a UWP. V ďalšom príspevku si povieme o takzvaných mostoch (bridges), ktoré UWP ponúka, a ktoré umožňujú tvorbu Windows store aplikácií z webových stránok, existujúcich WIN32/desktopových alebo iOS a Android aplikácií. V ďalších príspevkoch sa budeme následne detailnejšie venovať vybraným súčastiam UWP. Ak chcete získať informácie a vedomosti o vývoji Windows 10 aplikácií už teraz, možete tak spraviť vďaka kurzu na Microsoft Virtual Academy: https://www.microsoftvirtualacademy.com/training-courses/a-developers-guide-to-windows-10
Marek