Focus Day, tutto ciò che non vi ho detto
60 minuti erano il minimo indispensabile per raccontarvi tutto ciò che avevo da dire. Ma i blog esistono anche per questo, e quindi aprofitto del mio per integrare un po’ di contenuti.
Mi rendo conto che i contenuti di questo post sono molto a rischio, per un semplice motivo. Ognuno di noi sviluppatori vede, credo, “la sua fetta di mondo”. Uno sviluppatore Web crede che il mondo sia governato solo ed esclusivamente dal Web; crede che in giro ci siano clienti che gli chiederanno solo ed esclusivamente portali, siti ed applicazioni Web. Assolutamente falso. Ma sbaglia anche lo sviluppatore desktop che crede che in giro ci sia solo ed esclusivamente desktop. In realtà, ci sono aziende che chiedono applicazioni a tutto tondo, capaci di esistere sul desktop, sul Web, sul cloud, sul mobile. Il Web è un grande collante, è una serie di fili che collega un dispositivo all’altro. Di sicuro non esiste più un’applicazione disconnessa: un’applicazione moderna in ogni caso sincronizza i dati, si basa sul cloud, salva su OneDrive, parla con servizi esterni e remoti, e via dicendo.
Quindi, di volta in volta dobbiamo scegliere le tecnologie giuste.
Arriviamo al dunque, in merito al contenuto della mia sessione al Focus Day.
Ma se Windows Phone muore, che senso ha UWP?
UWP non è solo telefono, anzi. Il destino di Windows Phone non c’entra nulla con il destino di Universal Windows Platform. Windows Phone è destinato a morire, per il semplice fatto che Windows Phone 8 o 8.1 è destinato a morire. Gli smartphone che potranno farlo migreranno verso Windows 10. E su Windows 10 c’è e e ci sarà UWP per un bel pezzo di tempo.
Windows 10 ha una piccola fetta di mercato, che senso ha imparare/sviluppare UWP?
Non è vero. Windows 10 non ha una piccola fetta di mercato, anzi tutt’altro. Lo è se considerate solo ed esclusivamente il mondo degli smartphone. E quindi dipende dal mercato che volete o dovete seguire. Ma Windows 10 attualmente è installato su 300.000.000 milioni di PC in giro per il mondo (fonte), e cresce ogni giorno. Se dovete sviluppare un client per Windows, UWP può essere una scelta.
Ma se Microsoft dismette gli smartphone Windows 10, che senso ha UWP?
Beh, ha perfettamente senso. Se come me è circa 20 anni che sviluppate per il desktop, UWP può essere la scelta ideale. Perchè dico “può”? Perchè ad oggi UWP richiede Windows 10, e può essere benissimo che i vostri clienti – per miliardi di motivi diversi – non possano e non vogliano migrare. Se cadete in questa situazione, scegliete ovviamente WPF. Per tornare alla domande, se anche gli smartphone Windows 10 dovessero scomparire, UWP continuerebbe ad esistere, perchè UWP significa Windows 10, e Windows 10 non è solo telefoni, ma molto di più.
Ma Microsoft non potrebbe inventarsi un porting di UWP verso Android ed iOS?
Sarebbe imho una grande follia. UWP è un framework strettamente legato a feature del sistema operativo Windows. Comprende classi legate a XAML ed al suo essere vettoriale, Cortana, Live Tile, drag’n’drop, push notification, OneDrive, utilizzo della penna o della tastiera, Azure. UWP è Windows, punto. Deve essere la scelta se il sistema che dovete raggiungere è esclusivamente Windows.
Non avrebbe davvero senso affrontare un porting UWP verso altri sistemi operativi. Se il vostro obiettivo è quello di scrivere codice una volta e di eseguirlo ovunque (write once, run everywhere), Xamarin Forms DEVE essere la vostra scelta.
UWP è in diretta concorrenza con Android?
No. Android è un sistema operativo mobile per smartphone/tablet, UWP è anche questo e molto di più. UWP è solo ed esclusivamente per Windows, e raggiunge smartphone, ultrabook, desktop, IoT, HoloLens, magari in futuro le XBOX.
UWP è in diretta concorrenza con iOS?
No. iOS è il sistema operativo di Apple, che raggiunge iPhone ed iPad. Valgono le stessa considerazioni fatte per Android qui sopra.
Dovrei scegliere UWP o Xamarin?
Bella domanda. UWP è legato esclusivamente al mondo Windows. Xamarin è un framework per lo sviluppo di applicazioni mobile cross-platform (Android, iOS, Windows Phone, ed anche UWP). Scegliete UWP se il vostro cliente vi chiede esclusivamente un’applicazione per Windows desktop/mobile, da distribuire tramite gli Store (pubblico o quello For Business); consiglio spassionato: scrivete bene il vostro codice (mvvm a go-go & PCL, tanto per citare due keyword), così siete pronti a reagire al cambiamento e potete scrivere codice non totalmente relegato alla piattaforma UWP. UWP secondo me è un’ottima scelta per applicazioni business simil-desktop, nativamente mobile, e se il sistema operativo è Windows 10. Potete realizzare app che una volta avreste implementato con WPF, ma con una miriade di feature in più, come ho accennato nella mia sessione del Focus Day del 27 maggio scorso: Cortana, Live Tile, notifiche push, impostazioni in roaming, distribuzione tramite gli Store (che vi evitano deploy via ClickOnce o via file zip da scaricare), etc.
Scegliete Xamarin se dovete fare un’app consumer multi-piattaforma, quindi se dovete raggiungere, oltre alla piattaforma Windows, anche Android iOS.