Amit egy fejlesztőnek a Windows 8-ról tudnia érdemes
Redmond nagyot kockáztatva teljesen újragondolta, hogyan is néznek ki és viselkednek a Windows-alkalmazások - ezzel a BUILD-re látogató fejlesztőket is sokkolva kicsit. Megpróbáljuk összefoglalni, mit érdemes egy alkalmazásfejlesztőnek tudnia a Windows 8-ról.
Szeptemberi BUILD rendezvényén a Microsoft nem csak a Windows 8 új felhasználói felületét mutatta be, hanem az új alkalmazásfejlesztési platformot is, amely talán még nagyobb meglepetést okozott a helyszínre látogató szakembereknek mint a Metro interfész.
Windows Runtime
A Windows 8 a korábbi változatokban meglevő API-k mellé teljesen új objektumorientált API-kat kapott, amelyekre Windows Runtime-ként (röviden WinRT) hivatkozik a Microsoft. Ezeknek az alkalmazásprogramozási interfészeknek semmi közük a korábbiakhoz, az alapoktól újraírták őket azoknak az elvárásoknak próbálva megfelelni, amiket a 21. századi felhasználói és fejlesztői igények támasztanak egy modern operációs rendszerrel szemben - egyszerűség, átláthatóság, sebesség. Ennek érdekében például a hosszú lefutású (>50 ms) API-hívásokat aszinkron módon kezeli a Windows 8, a végrehajtás nem blokkolja az operációs rendszer és a többi alkalmazás futását.
A WinRT API-kat nem csak a Microsoft által korábban preferált nyelvekből lehet elérni (pl. C, Visual Basic), hanem C++ és meglepetésre HTML5/JavaScript alól is - a Windows 8 ökoszisztémájában ugyanis ugyanolyan szívesen látottak ezek a webre született technológiák és szabványok mint a menedzselt kód vagy a natív nyelvek. Redmondban feltehetően belátták, hogy egyes feladatok elvégzésére a HTML5/JavaScript páros jelenti a leghatékonyabb megoldást, ezzel a lépéssel a Microsoft egy teljesen új fejlesztői kört tud a Windowshoz vonzani, azokat a webfejlesztőket, akik eddig böngészőre dolgoztak. A Windows 8-nak integrált része a HTML/JavaScript futtatási környezet is, ilyen alkalmazások nem csak a böngészőben indíthatók, hanem futhatnak közvetlenül az asztalon is, a WinRT pedig a HTML5/JavaScript alkalmazások számára is hozzáférést biztosít a modern PC-k olyan eszközeihez mint a giroszkóp, az NFC-chip vagy az érintőkijelző.
Az új - nevezzük ezentúl Metro stílusúnak - fejlesztési modell elvárja az alkalmazásoktól, hogy a WinRT API-kat és a Microsoft által biztosított kontrollokat használják. De mi van azokkal az alkalmazásokkal, amelyek már megszülettek korábbi Windows-verziókra a Win32 API-k használatával, vagy .NET keretrendszerre, vagy ha a programozó ezeket használná inkább? A Windows 8 nem állítja választás elé a fejlesztőket, mivel teljes visszamenőleges kompatibilitást biztosít - amelyik program futott Windows 7-en, biztosan futni fog Windows 8-on. Egyetlen megkötés, hogy a "hagyományos" Windows-alkalmazások, függetlenül attól, hogy azok milyen nyelven készültek (C, C++ , C#, VB, stb.) és milyen környezetben futnak (.NET), nem érhetik el a WinRT API-kat, de ez fordítva is igaz, a Metro programok a Win32 API-tól vannak elzárva.
A Metro stílus
A Metro nem csak új API-kat jelent, hanem egy valóban új alkalmazásfejlesztési hozzáállást is - a Metro stílusú alkalmazások valószínűleg sok területen különbözni fognak a mai programoktól, kevésbé lesznek összetettek, a letisztultság, a gyorsaság és a tartalom középpontba állítása jelennek meg alapértékekként. A Microsoft a Windows 8-ba épített és vele együtt érkező eszközeivel azt próbálja támogatni, hogy a fejlesztők egyszerűen tudjanak mutatós alkalmazásokat készíteni, ehhez rendelkezésre állnak animációkönyvtárak, Metro stílusú UI sablonok és kontrollok.
A Metrónak megvannak a maga korlátai - az új PC-használati modelleket tartja szem előtt és erőteljesen épít az érintéses vezérlésre, noha a Microsoft igyekezett hangsúlyozni, hogy a billentyűzet és az egér továbbra is teljes mértékben támogatottak és "elsővonalbeli" beviteli eszközök maradnak, mivel hosszabb szövegek bevitelére és pontos pozicionálásra ezek a legalkalmasabbak. A Metro alkalmazások teljes képernyőn futnak és nem nyithatnak egymást átlapoló ablakokat sem, így a felhasználói felületüket is ennek megfelelően kell megtervezni, de ha valakinek mégis más elképzelései vannak, továbbra is elérhető a hagyományos Windows desktop a Windows 8-ban.
Ezzel a Microsoft biztosítja a visszamenőleges kompatibilitást úgy, hogy közben párhuzamosan létrehoz egy teljesen új ökoszisztémát. A Metro alkalmazásokkal járó megkötések egy részét persze a jelenlegitől eltérő megoldásokkal feloldja a Microsoft: erre valók például a Windows Phone-ban megismert live tile-ok, azaz élő csempék, amelyek az operációs rendszer felületén tájékoztatni tudják a felhasználókat a program üzeneteiről. Van többféle értesítési lehetőség, amelyen keresztül az alkalmazások interakcióba léphetnek a felhasználóval, valamint vannak ún. szerződések ("contract"), amelyek az alkalmazások egymás közötti kommunikációjára szolgálnak - a Metro alkalmazások "kiajánlhatnak" tartalmat vagy szolgáltatást, amelyet aztán más alkalmazások "elfogyaszthatnak". A szerződéseket úgy is elképzelhetjük, mint egy minden eddiginél intelligensebb vágólapot, de akár egy operációsrendszer-szintű SOA-koncepciót is felfedezhetünk bennük.
Akkor most vége .NET-nek, Silverlightnak?
A Windows 8 kapcsán számos olyan információ reppent fel, amelyek szerint a Microsoft teljesen szakít az eddig bejáratott technológiákkal, nyelvekkel és fejlesztési modellekkel és nyugdíjazza például a .NET-et, a C#-ot vagy a Silverlightot. Ezek a tévhitek valószínűleg abból táplálkoznak, hogy a BUILD fókuszát a Windows 8 új alkalmazásfejlesztési modellje, a Metro interfész és a WinRT API-k képezték. Pedig ahogy korábban is szó volt róla, a Windows 8-ban továbbra is futhatnak .NET alkalmazások, és hogy a Microsoft szerint is van jövője a .NET-nek, azt mi sem bizonyítja jobban, mint hogy a Windows 8 fejlesztői előzetesével együtt adta ki a .NET Framework 4.5-ös verziójának első tesztváltozatát is.
A Metro elsősorban a felhasználói oldalra, a kliensekre koncentrál, a szerveroldali alkalmazások fejlesztéséhez továbbra is a .NET lesz a Microsoft első számú platformja és gőzerővel készül az új C# verzió is. "Már néhány hónapja dolgozunk rajta, de még nem árulhatom el, hogy miről is szól a történet" - mondta a BUILD-en Anders Hejlsberg, a C# lead architectje. "Afelől pedig senkinek semmilyen kétsége ne legyen, hogy a Microsoft és az én csapatom is a .NET-et szilárdnak, jövőbemutató platformnak látja. Rengeteget fektettünk ebbe a platformba, eszünk ágába sincs ezeket az értékeket kidobni, és a jövőt is ennek a platformnak a továbbfejlesztésével képzeljük el. A Windows Runtime nagyszerű dolog, rengeteg mindent felhasználtunk benne a korábbi .NET-es tapasztalatokból, és úgy alakítottuk ki, hogy az a .NET-tel remekül együtt tudjon működni!"
A Silverlightot temetni szintén korai. Ez egy olyan, böngészőbe épülő keretrendszer, amelyre .NET alkalmazásokat lehet írni XAML-ban létrehozott felülettel, a Windows 8 Metro stílusú alkalmazásaihoz pedig ugyanúgy használhatóak a .NET nyelvek és a XAML, egy Silverlight-fejlesztő némi tanulással Windows 8 Metro-fejlesztővé képezheti magát, egy Silverlight-alkalmazást pedig kis befektetéssel Metro-alkalmazássá lehet alakítani. A BUILD konferencián ezt demózta is a Microsoft, a Scott Guthrie blogjában korábban közzétett képkereső alkalmazást, amely eredetileg Windows Phone 7-re készült Silverlightban, néhány apró módosítással pár perc alatt Metro stílusú alkalmazássá alakították át.
"A Silverlight egy nagyon jó technológia és a Microsoft még sokáig a fejlesztői eszköztárában kívánja tartani, a Visual Studioval is hosszú ideig kívánjuk támogatni. A Windows 8-cal az új felhasználói élmény kialakítását célzó XAML-alapú technológia jelentős mértékben a Silverlightban akkumulált tudásra épül" - vélekedett Jason Zander, a Visual Studio csapat vezetője. "Teljesen természetes dolog, hogy a WPF, Silverlight és a Windows 8 XAML-je konvergálni fog. Attól, hogy ezt a technológiát nem Silverlight-nak hívják, még minden Silverlight-fejlesztő számára ismerős lesz. A hamarosan megjelenő Silverlight 5 ennek a konvergenciának is egy fontos lépése lesz, aki ebben fejleszt alkalmazást, biztos lehet benne, hogy azt hosszú ideig, még jónéhány Visual Studio változattal képes lesz karbantartani."
A Silverlight mint böngészőbe épülő plugin napjai viszont feltehetően tényleg meg vannak számlálva: ha a Windows 8-ban az új felhasználói felületről, a Metróról indítjuk el a böngészőt, az pluginek nélkül működik, így se a Flash, se a Silverlight tartalmak megjelenítésére nem képes, a desktopról indított böngészőben viszont továbbra is elérhetők a beépülő modulok.
ARM-kompatibilitás
A Windows 8 az első asztali operációs rendszere a Microsoftnak, amely x86 mellett fut ARM utasításkészlet-architektúrát használó rendszerchipeken is - kézenfekvő kérdés, hogy a két hardveres platform között hogyan teremti meg a kompatibilitást a Microsoft. A Windows 8 alkalmazásfejlesztési modellje, amely a fenti ábrán is látható, hardverplatformtól független. Egy új alkalmazást mindenképpen érdemes Metro stílusban, WinRT API-k használatával írni, mivel ezek futtatására mind az x86, mind az ARM verzió egyaránt képes, mint ahogy a .NET és Silverlight programok is működnek ARM platformon is. A jó hír azonban az, hogy a Win32 API-t is el lehet érni ARM-on, így egy meglevő alkalmazást kis szerencsével csak újra kell fordítani ahhoz hogy elinduljon - persze az élvezhető sebességhez optimalizációra azért szükség lehet.
A Windows 8 fejlesztésével kapcsolatos további információkért érdemes a BUILD konferencia vonatkozó előadásait megnézni. Az operációs rendszer fejlesztői előzetese ugyaninnen letölthető.