MojWindows

V priebehu desiatok rokov existencie a vývoja operačných systémov Microsoft Windows sa vyvíjali aj technológie používané pri tvorbe aplikácií pre tieto operačné systémy. Od konzolových aplikácií s jednoduchým textovým používateľským rozhraním, ktoré boli známe ešte z čias MS-DOS, až po univerzálne aplikácie bežiace na širokej škále zariadení od smartfónov cez počítače až po HoloLens.

Z dôvodu zachovania podpory starších aplikácií boli v operačných systémoch zavedené rôzne režimy kompatibility, ktoré umožňovali spúšťať aplikácie určené pre staršie systémy alebo vyvíjané pomocou starších technológií. Takto bolo dlhú dobu možné spúšťať programy určené pre MS-DOS, ale aj 16-bitové programy pre staré verzie OS Windows. Dokonca aj v dnešnej dobe umožňuje 32-bitová verzia Windows 10 povoliť spúšťanie zastaraných 16-bitových programov.

GUI aplikacie
Obr. 1: Režim kompatibility v OS Windows 7

Spätná kompatibilita aplikácií z pohľadu bezpečnosti

Spätná kompatibilita je užitočná vlastnosť, ale z hľadiska bezpečnosti môžu práve takéto vyše 20 rokov staré programy predstavovať riziko v podobe zraniteľností a vstupných bodov pre útočníkov. Preto sa už v moderných systémoch občas ustúpi od spätnej kompatibility na úkor zvýšenia bezpečnosti a prehľadnosti kódu samotného operačného systému. Navyše, vďaka virtualizácii je možné spustiť staré aplikácie vo virtuálnom počítači. Takto je napr. možné spúšťať 16-bitové programy na počítači so 64-bitým systémom Windows 10.

Aplikácie pre OS Windows je v súčastnosti možné tvoriť pomocou širokej palety technológií, nástrojov, programovacích jazykov, knižníc a frameworkov. Programátor tak má možnosť na písanie kódu použiť C++, C#, VisualBasic, JavaScript, ale aj rôzne exotickejšie jazyky, napr. F#. Pre tvorbu GUI aplikácií je však podstatný výber konkrétnej platformy, ktorý do veľkej miery určuje vzhľad, funkcionalitu aj univerzálnosť výslednej aplikácie.

Rozdielne typy aplikácií pre operačný systém Windows 

Windows API alebo tiež Win32 API predstavuje súbor API rozhraní systému Windows, teda súbor funkcií uložených v knižniciach, ktoré môžu programy využívať. Win32 API je možné rozdeliť do viacerých kategórií. Pre GUI aplikácie sú najzaujímavejšie GDI (Graphics Device Interface) umožňujúce vykreslovať grafický obsah a kategória User Interface spolu s Common Dialog Box a Common Control Library, ktoré umožňujú prácu s oknami, dialógmi, progress barmi a podobne. Zvyšné časti Windows API umožňujú aplikáciám pracovať so súbormi, registrami, sieťovými zaradeniami, ale aj s procesmi a službami.

MFC, resp. Microsoft Foundation Class Library, je knižnica, ktorá zapúzdruje relevantné časti Windows API do podoby C++ tried. Pomocou nej je možné vytvárať desktopové aplikácie pre OS Windows s využitím objektovo-orientovaného programovania a C++. Aj keď počiatky tejto knižnice siahajú ešte do 90-tych rokov, a v súčasnosti sú k dispozícii modernejšie koncepty, stále sa v niektorých starších programoch využíva.

WinForms je grafická knižnica, ktorá poskytuje prístup k časti Windows API z prostredia .NET frameworku. Aplikácie, ktoré pre svoj beh využívajú .NET, tak môžu prostredníctvom tejto knižnice jednoduchšie pristupovať ku prvkom GUI. Táto knižnica je stále podporovaná, avšak nepridáva sa už nová funkcionalita a dochádza len k oprave chýb.

WPF, resp. Windows Presentation Foundation, predstavuje grafický subsystém pre vykresľovanie používateľského rozhrania. Na rozdiel od predchádzajúcich knižníc WPF umožňuje definovať GUI prvky pomocou XAML (jazyk založený na XML) a používateľské rozhranie nie je teda nutné vytvárať priamo v kóde volaním knižničných funkcií. Následne je používateľské rozhranie, ktoré je opísané v XAML súbore, vykreslené do okna prostredníctvom DirectX a nie pomocou volaní staršieho GDI ako v prípade WinForms. Vďaka použitiu XAML je vytváranie GUI rozhrania jednoduchšie a prehľadnejšie. Navyše je možné použiť napr. dizajnérsky nástroj integrovaný priamo vo Visual Studiu. WPF aplikácie je možné vytvárať ako samostatné desktopové aplikácie, ale aj v podobe objektov vložených do webových stránok.

GUI aplikacie 3
Obr. 2: XAML editor vo Visual Studio

Windows Store a UWP aplikácie 

Windows Store aplikácie sa na desktope objavili s príchodom OS Windows 8. Postupne sa vyvíjali s príchodom Windows 8.1, a následne s príchodom Windows 10 boli predstavené aj UWP, resp. Universal Windows Platform aplikácie. Pri týchto aplikáciách nefunguje spätná kompatibilita, to znamená, že UWP aplikácie nespustíme na starších systémoch ako Windows 10. Na druhej strane, UWP aplikácie nám umožňujú vytvárať univerzálne aplikácie spustiteľné na širokej škále zariadení od smartfónov po Surface Hub, či HoloLens. Je možné ich vytvárať použitím jazykov C#, Visual Basic, C++ alebo aj JavaScript. GUI prvky je opäť možné definovať pomocou XAML.

Veľkou výhodou týchto aplikácií je jednoduchá distribúcia pre všetky podporované zariadenia a ich aktualizácia prostredníctvom obchodu Windows Store. Ďalšou výhodou je podpora cloudových služieb. Nevýhodou týchto aplikácií však je, že na rozdiel od predchádzajúcich nemajú prístup k pôvodnému Windows API, využívajú novší Windows Runtime (WinRT). WinRT prináša zvýšenú úroveň bezpečnosti a izolácie aplikácií. Avšak v niektorých prípadoch ho nie je možné použiť, najmä ak aplikácia pre svoju funkčnosť vyžaduje nízkourovňový prístup k objektom operačného systému. Vtedy je nutné využiť niektorý zo starších spôsobov vytvárania aplikácií pre Windows.

GUI aplikacie 2
Obr. 3: Podpora UWP aplikácií

Kombinovanie nových UWP aplikácií využívajúcich WinRT a starších aplikácií s prístupom k Windows API v prostredí OS Windows 10 však má pomerne zaujímavé dôsledky z pohľadu bezpečnosti a ochrany súkromia. Napríklad nastavenia ochrany súkromia platia iba pre UWP aplikácie, kým nastavenia Windows Firewall viac-menej platia iba pre WinAPI aplikácie. Jednoduchým pokusom to môžeme vyskúšať: v nastaveniach ochrany súkromia zakážeme všetkým aplikáciám prístup ku webkamere, avšak po nainštalovaní staršej aplikácie využívajúcej webkameru (napr. staršia nie-UWP verzia Skype) bude môcť táto aplikácia zachytávať obraz z webkamery. Naopak, ak zakážeme vo Windows Firewalle všetky inbound pravidlá, po automatickej aktualizácii niektorých UWP aplikácií budú niektoré tieto pravidlá opäť povolené (napr. pre aplikácie z Microsoft office) aj bez vedomia používateľa.

Možností, ako vyvíjať desktopové (a nielen tie) GUI aplikácie pre OS Windows je v dnešnej dobe naozaj veľa, navyše existujú aj mnohé ďalšie knižnice/frameworky tretích strán pre tvorbu GUI prvkov (napr. Qt, Java Swing. . . ). Záleží tak na programátorovi, na požiadavkách, a na použití konkrétnej aplikácie, ktorý framework je v danej situácií ten najvhodnejší.

Zdroj: Microsoft 1,2

06.03.2017

+