Teljes PWA-támogatás jön a Windows 10-be
Hatalmas horderejű döntés a Microsofttól: az UWP-vel egyenrangú szintre emeli és a Store-ba is befogadja a webes alkalmazásokat.
Teljes értékű állampolgárrá fogadja Windows környezetben a PWA-kat a Microsoft - jelentette be a vállalat. A cég ezzel egy korábbi ígéretének tett eleget, de messze "túlteljesítve" azt. A hatalmas horderejű döntés a tavaszi "Redstone 4" kódnevű Windows 10 kiadással élesedik, ettől fogva kiteljesedik a PWA-támogatás az Edge böngészőben is, illetve az operációs rendszer is fontos új képességekkel gazdagodik.
A bejelentés alapján megjelenik a Service Worker támogatása a Microsoft Edge-ben, ezzel az utolsó fontosabb hiányzó láncszemet is pótolja a Microsoft böngészője. Ennél sokkal komolyabb bejelentés, hogy a Microsoft kísérleti jelleggel aktívan elkezdi keresni a weben a "minőségi PWA-kat" és listázni fogja azokat a Microsoft Store-ban, ahonnan azok ugyanúgy elérhetőek lesznek, mint minden más Windows 10-es alkalmazás (telepítéssel-eltávolítással együtt)." A Store-ba a fejlesztők saját maguk is tölthetnek be alkalmazásokat, ehhez elegendő azt az AppX csomagolással ellátni és feltölteni a Microsoft megfelelő felületén.
"Más platformokon a PWA-k a böngészőn belülről származnak és kiléphetnek a böngésző keretei közül, amennyiben ehhez a felhasználó beleegyezését adja. Mi ezen továbblépünk a Windowson! Mivel a PWA első osztályú polgára a Store-nak, a telepített PWA-val a felhasználó alkalmazásként léphet kapcsolatba, a felfedezéstől a telepítésig és futtatásig - mindezt a böngésző megnyitása nélkül" - mondja a lényeget a bejegyzés.
A lépés közelről nézve abszolút logikus. A Store-os alkalmazások krónikus hiánya immár fenntarthatatlanná kezd válni a Microsoft számára, ezzel valamit sürgősen kezdeni kellett. A PWA-k adoptálása rövid távon egyszerűnek tűnik, hosszú távon viszont mindent szétverhet, amit a Microsoft a Windows 10 kapcsán felépíteni készült.
Mi is a PWA és miért ekkora probléma?
Első körben gyorsan tisztázzuk, melyik hárombetűs mit is jelent: az UWP, kibontva Universal Windows Platform a Microsoft következő generációs API-ja, amellyel (nevével ellentétben) nem csak a Windows és nem is minden Windows platformja. Hiszen kizárólag Windows 10-en tudnak futni ezek az alkalmazások (viszlát univerzális), és támogatja az Xboxot illetve a Hololenset is (viszlát "Windows"). A nevezéktannál fontosabb viszont, hogy az UWP-t a Microsoft egyértelműen a cég következő generációs fejlesztői platformjaként definiálja, amely a Win32-vel ellentétben folyamatosan fontos fejlesztéseket kap: ez támogatja elvárható módon a magas pixelsűrűségű kijelzőket, ez kapja meg az új grafikus keretrendszert, a Fluent Design Systemet - a lista hosszan-hosszan sorolható.
Ünnepi mix a bértranszparenciától a kódoló vezetőkig Négy IT karrierrel kapcsolatos, érdekes témát csomagoltunk a karácsonyfa alá.
És van a PWA, ami Progressive Web Appot jelent. Erről a HWSW-nek Orosz Gábor írt gyakorló fejlesztői szemszögből jó összefoglalót, ezt érdemes fellapozni, mielőtt folytatjuk. Röviden: ez nem egyetlen technológia, hanem egy gyűjtőfogalom, amely több különböző kezdeményezést fog össze, ezek mindegyike azt célozza, hogy a webes alkalmazások számára biztosítson rendszerszintű API-khoz hozzáférést. Így például push üzenetekhez, perzisztens tároláshoz, kamerához, helyadatokhoz és számtalan más API-hoz kínál a böngésző hozzáférést a webes kód számára (persze ha hagyjuk), sőt, támogatja az offline futást is.
Egyértelmű, hogy a PWA komolyan fenyegeti a natív alkalmazásokat: a pehelysúlyú kliensalkalmazások esetében például közel ekvivalens tud a két megközelítés lenni. Teljesítményigényes, vagy különleges natív API-kra támaszkodó alkalmazásoknál persze szükséges lehet továbbra is a natív alkalmazásokra, de az a terület, ahol a kettő közel ekvivalens, egyre szélesedik, a PWA egyre inkább le tudja fedni a natív alkalmazások vadászterületét. Teljes fedés nyilván soha nem jön el, de nem is ez a PWA célja.
És hogy miért borultak ki a fejlesztők a Microsoft döntésén? Mert a PWA és az UWP által megcélzott alkalmazástípusok között nagyon nagy (közel teljes) az átfedés. És míg az UWP csak Windows 10-en fut (az egzotikus hardvereket hagyjuk), a PWA-k segítségével minden asztali és mobil platform kényelmesen megcélozható, elhozva a webes keresztplatformos viselkedés Kánaánját.
Win32 vs UWP vs PWA (vs Electron?)
A kontextushoz hozzátartozik a Win32-es API is. Ez a Windows "hagyományos" alkalmazásprogramozási interfésze, amely a rendszerhez egészen mély hozzáférést nyújt a fejlesztők számára, gyakorlatilag minden klasszikus asztali alkalmazás ezt használja, az Office-tól a Photoshopig, a Chrome-tól a Total Commanderig és a vírusirtókig. A Win32 nagyon gazdag, nagyon erőteljes - és pontosan ez a probléma vele. A rendszer egészségére, az akkus üzemidőre és számtalan (a felhasználónak nagyon fontos) tényezőre fittyet hányó fejlesztő kódja ugyanis szabadon garázdálkodhat a Windows környezetben.
Ennek szab gátat az UWP, amely sokkal korlátozottabb hozzáférést ad a rendszer erőforrásaihoz, az alkalmazásokat sandboxban futtatja, a modern, a mobilos ökoszisztémákban megszokott hozzáállás mentén. Az UWP azonban sok tekintetben nem passzol az asztali alkalmazások működéséhez, ami a mobilon bevált, az egy PC-n már túlságosan korlátozó. UWP-t használva a fejlesztő nem tud böngészőt, komplex fájlkezelőt vagy épp fájlszinkronizáló alkalmazást írni, mert ezek működéséhez nem kap elegendő hozzáférést.
Így tehát a "komoly" alkalmazásokhoz továbbra is szükséges a Win32, a pehelysúlyúak számára pedig immár az UWP mellett a PWA is elérhető, nagyjából ugyanazt az alkalmazástípust célozva, nagyjából hasonló funkcionalitást kínálva. Utóbbi kettő pedig két teljesen eltérő, nem kompatibilis API-szettet használ, így még ezen a területen is tovább fragmentálja a Windows-fejlesztők bázisát. A Microsoft bejegyzése egyébként kitér arra is, hogy mikor érdemes UWP-t és mikor PWA-t használni, eszerint gyakorlatilag mindig a PWA a nyerő, kivéve, ha a felhasználói élmény minden részletén agonizálunk és a platform által nyújtott élményt maximálisan ki szeretnénk használni, ebben az esetben a "natív talán a legjobb választás".
Ha ehhez hozzávesszük, hogy az UWP még ezen a területen is jobbára sikertelennek bizonyult, az olyan, tipikusan UWP-re termett alkalmazások, mint a Spotify vagy a Slack sem ezt az API-t, hanem a Chromium-alapú (és problémás viselkedése miatt erősen vitatott) Electron platformot használják - ahogy a Microsoft saját fejlesztői eszköze, a Visual Studio Code is. Az Electron és a PWA megközelítése egyébként gyakorlatilag egybeesik: webes technológiákkal, a böngésző API-absztrakcióját használva építeni keresztplatformos alkalmazásokat - nem véletlen, hogy az olyan fejlesztők, akik macOS-t, Windowst és Linuxot egyszerre akarnak megcélozni, gyorsan előhúzzák az Electront és egyetlen kódbázissal lefedik mindhárom nagy asztali környezetet.
A PWA annyiban különbözik ettől, hogy a böngészős réteget lecserélhetővé teszi: a PWA szabványos API-t használó alkalmazást minden olyan böngésző futtatni tudja, amely a szabványokat támogatja. Ez hamarosan minden jelentős böngészőt jelent, a Chrome és a Firefox mellett az Edge (főleg a fenti bejelentés tükrében) és kénytelen-kelletlen a Safari is támogatni fogja a PWA-s API-csokrot.
Embrace, extend, extinguish?
A Microsoft-kritikusok számára persze mindez a cég régi üzleti stratégiájára hasonlít: az "embrace-extend-extinguish" azt a ciklust jelöli, amelyben egy szabványalapú technológiát a Microsoft felkarol, saját nemszabványos megoldásokkal egészít ki, majd kivégzi azt saját hasznára. A kifejezés a nagy amerikai antitröszt-perben kerül a reflektorfénybe, a cég belső levelezésében a HTML kapcsán igyekezett ezt a stratégiát követni. Hatalmas sikerrel, tehetjük hozzá, a webet csak a Firefox megjelenése (és fejlesztőinek hozzáállása) mentette meg az IE6 poklából.
A fentiek fényében figyelmeztető jel lehet, hogy a Microsoft messze túlmegy a PWA-támogatásban azon, amit más böngészők megengednek - a webes fejlesztők a teljes WinRT API-készlethez hozzáférhetnek, beleértve például a helyi naptár és névjegytár adatait is. A fejlesztő pedig a Store-os adatokhoz is kaphat hozzáférést, használati statisztikát, értékeléseket, telepítési és eltávolítási adatokat is nyerhet a rendszerből. Ezzel a fejlesztők kellemetlen választási lehetőséget kapnak: beépítik alkalmazásaikba a Microsoft által kínált gazdag(abb) API-kat és ezzel megtörik a PWA keresztplatformos jellege, vagy kihagyják ezt a lehetőséget és lemondanak a funkcionalitásról.