BUILD: Windows 8 è tra noi!

Con qualche giorno di ritardo, ma finalmente eccomi qui a parlarvi del grande protagonista di BUILD, la conferenza Microsoft ancora in corso a Los Angeles: Windows 8!
Qualche mese fa, precisamente durante il MIX, era stato annunciato che a BUILD sarebbe stato sollevato l’alone di mistero creato attorno alla nuova versione del sistema operativo di Microsoft e così è stato: in quasi due ore e mezza, Steven Sinofsky ha mostrato tutte le caratteristiche di Windows 8 sia dal punto di vista utente che dal punto di vista degli sviluppatori.
Ma andiamo per gradi.
Metro, tablet e touch
L’obiettivo principale di Windows 8 è quello di entrare prepontemente nel mercato dei tablet, attualmente dominato da Apple con l’iPad e con una percentuale crescente di tablet basati su Android. Windows 8, però, sceglie una strada completamente diversa dalla concorrenza: i tablet Windows 8 sono infatti dei computer a tutti gli effetti e non “una via di mezzo” tra il computer e il cellulare. Questa strategia è resa possibile dall’adozione di una nuova interfaccia pensata per il touchscreen (ma fruibile anche con mouse e tastiera) che rappresenta il nuovo menu Start di Windows: è un po’ spiazzante all’inizio, ma la pressione del menu Start di Windows non apre più il classico elenco di opzioni a cui siamo abituati, bensì ci porta direttamente all’interfaccia touch.
Interfaccia che attinge a piene a mani dallo stile Metro, che i possessori di Windows Phone conoscono bene: ogni applicazione rappresenta una tile, che possiamo spostare e organizzare nello schermo a piacimento. Le tile si animano e possono mostrare informazioni, esattamente come avviene in Windows Phone. Le applicazioni pensate per questa nuova interfaccia sposano in pieno questa filosofia, offrendo un’esperienza a tutto schermo e pensata soprattutto per un utilizzo tramite touch screen e gestures.
E per un utilizzo più tradizionale? Il desktop è ora diventato “una” delle applicazioni disponibili: selezionandola, verremo portati all’interfaccia che tutti conosciamo grazie a Windows 7 e che, per il momento, non ha subito particolari restyling (se non per un nuovo Task Manager e un nuovo Explorer dotato di ribbon).
In realtà, ci sarebbe tanto altro ancora da dire: una nuova lock screen, che esattamente come in Windows Phone mostra le informazioni essenziali direttamente sullo schermo (mail non lette, carica della batteria, ecc.); una forte integrazione con Windows Live: facendo sign in con il proprio Live Id le impostazioni del computer verranno salvate sul cloud, per essere poi applicate a tutti gli altri nostri computer sui quali faremo sign in con lo stesso account; supporto integrato alla ricerca di dati e alla condivisione su Internet o sui social network; tempi di avvio ridicolosamente bassi (meno di 5 secondi dall’accensione alla lock screen).
Insomma, sotto questo punto di vista Windows 8 mi ha veramente convinto: dopo essere stato possessore di un iPad per circa due mesi, ho capito che il tablet secondo la filosofia Apple e Google non faceva per me. Sono oggetti fantastici dal punto di vista tecnologico, ma per il sottoscritto fondamentalmente inutili: alla fine, mi riducevo ad usarlo per guardare la posta, i social network e provare qualche gioco, attività che posso benissimo fare con il telefono. Qualsiasi attività più produttiva era preclusa: per scrivere un articolo impiegavo il quintuplo del tempo rispetto a farlo su pc con tastiera e mouse. La filosofia Windows 8 invece la trovo molto intelligente: un solo device che può essere usato sia sul treno per navigare in internet o leggere un documento, sia a casa (collegato ad una docking station) come computer vero e proprio per scrivere un post o sviluppare con Visual Studio.
.NET è morto, lunga vita a .NET
Windows 8 è, per gli sviluppatori, allo stesso tempo una rivoluzione e un ambiente famigliare. Famigliare perchè, per lo sviluppo di applicazioni tradizionali abbiamo ancora a disposizione il framework .NET, portato alla versione 4.5 in Windows 8. Appoggiandoci a .NET, potremo continuare ad usare tutte le tecnologie che conosciamo: Silverlight, WPF, Windows Forms, ecc. Sinofsky ha garantito che tutto ciò che attualmente funziona su Windows 7, funzionerà anche con Windows 8. Ho parlato però di applicazioni tradizionali, ovvero programmi che non sono pensati per la nuova interfaccia Metro, ma che si appoggiano alla versione “classica” di Windows, fatta di icone e finestre.
La rivoluzione arriva per le applicazioni Metro, ovvero quelle native di Windows 8, in grado di girare in full screen e di essere eseguite direttamente dalla nuova interfaccia. In questo caso, Microsoft ha creato un nuovo set di librerie chiamato WinRT, che attinge a piene mani dal framework .NET (namespace, nomi delle classi, ecc. sono molto simili) ma ha una importante differenza: non si tratta di codice managed ma nativo! Inoltre, le applicazioni Metro, gireranno in una sorta di sandbox, un po' come in Windows Phone, e non avranno libero accesso a tutte le risorse del sistema, accesso invece che rimane disponibile per le applicazioni tradizionali.
Qui arrivano le cose interessanti: sopra questo strato Microsoft ha creato una serie di “projectors”, ovvero dei traduttori in grado di farci interagire con WinRT da diversi linguaggi, con i quali andremo a costruire la nostra UI (potendo scegliere tra HTML / JS e XAML) e logica (con un linguaggio a scelta tra C#, VB.NET e C++). Chi sosteneva che Windows 8 avrebbe portato l’interoperabilità delle applicazioni a tutti i costi (grazie al supporto nativo per HTML) sarà deluso, ma sinceramente era anche impensabile potesse accadere: nel momento in cui si vuole scendere più in profondita per comunicare con il sistema operativo HTML e JS standard non sono sufficienti.
Vi segnalo questo post del grande Raf, in cui ha sintetizzato bene la visione di Microsoft per quanto riguarda lo sviluppo in Windows 8.
La strada intrapresa da Microsoft mira invece a consentire a consentire a tutti gli sviluppatori sul mercato (e non solo quelli già famigliari con le tecnologie Microsoft) di sviluppare applicazioni per Windows 8: in tutti i casi ci sarà comunque da studiare e imparare qualcosa di nuovo (WinRT non è .NET), però almeno le conoscenze del linguaggio e della sintassi potranno essere riciclate.
Chi prevedeva la scomparsa di Silverlight e WPF con Windows 8 può stare tranquillo: Silverlight e WPF sono effettivamente “morti” (almeno per quanto riguarda le applicazioni native), ma la conoscenza di XAML, Blend e C# accumulata in questi anni può essere riciclata praticamente in toto. Ne è dimostrazione come, durante il keynote, sia stato mostrato come la trasformazione di un’applicazione Silverlight in una Windows 8 abbia richiesto la modifica di sole due o tre righe di codice, dovute perlopiù alla differenza di namespace.
Non dimentichiamo inoltre che, per forza di cose, non tutte le applicazioni potranno e dovranno essere Metro style: ci sono alcune tipologie di programmi che mal si adattano allo stile Metro (sia in termini di UI, che di funzionalità, che di necessità di accedere a determinate risorse) e pertanto continueranno a essere sviluppate con le tecnologie che già conosciamo. Banalmente, gli stessi Visual Studio e Blend non sono disponibili in versione Metro e vengono lanciati direttamente nel desktop tradizionale.
Una volta sviluppata la nostra applicazione, potremo fare il deploy sul Microsoft Store (una sorta di Marketplace per le applicazione Windows 8) oppure distribuirla in maniera tradizionale. Nel primo caso, dovremo superare un processo di certificazione della nostra applicazione, ma ci porteremo a casa una piattaforma per la vendita e la gestione del ciclo di vita della nostra applicazione. La cosa interessante è che, se vogliamo distribuire l’applicazione con canali tradizionali (ricordiamoci infatti che il Microsoft Store sarà aperto solo alle applicazioni Metro style), possiamo comunque usare lo store come vetrina: in questo caso, al posto del pulsante per l’installazione avremo un link al nostro sito.
Che lo sviluppo abbia inizio!
Da quando sarà possibile iniziare a fare esperimenti con Windows 8 e le nuove applicazioni? Da subito! La sera stessa del keynote Microsoft ha infatti rilasciato una Developer Preview di Windows 8, liberamente scaricabile e perfettamente funzionante. Tale preview contiene anche tutti i tool di sviluppo necessari per iniziare a fare esperimenti con WinRT: sono incluse infatti le Developer Preview in versione Express di Visual Studio 2011 e Blend 5 (in grado ora di elaborare anche l’HTML). Le versioni complete delle Developer Preview, installabili anche su Windows 7, sono state rilasciate invece da qualche giorno sul portale MSDN per gli abbonati.
Ci sono molti modi per installare Windows 8: nativamente, in virtuale, creando una partizione dedicata, ecc. Personalmente, ho utilizzato (e vi consiglio) il metodo spiegato da Scott Hanselman in questo post e gentilmente segnalatomi da Corrado: tale metodo consiste nella creazione di un VHD (un disco virtuale, quindi), che però viene montato all’avvio e visto da Windows 8 come una partizione reale. In questo modo avrete i vantaggi di entrambi i mondi: non dovrete creare una partizione ad hoc (se perciò volete tornare indietro in qualsiasi momento, vi basterà cancellare il file) e Windows 8 potrà accedere nativamente al vostro hardware, sfruttandone perciò tutta la potenza.
In conclusione
Insomma, di carne al fuoco ce n’è davvero tanta e nei prossimi mesi ci sarà da divertirsi: sicuramente in futuro approfonderemo il discorso e vedremo, soprattutto nell’ottica di uno sviluppatore Windows Phone, come potremo portare e adattare le nostre applicazioni a Windows 8. Vi lascio segnalandovi che, sul sito ufficiale di BUILD, sono a disposizione per lo streaming e il download sia i due keynote (del primo e del secondo giorno), che tutte le sessioni di approfondimento che si sono tenute durante la conferenza. Se volete approfondire l’argomento, sono sicuramente un ottimo punto di partenza!

#1 da http://qmatteoq.tostring.it/blog/post/i-primi-passi-con-windows-8-e-winrt-listbox-e-collezioni-di-dati
qmatteoq.tostring.it - I primi passi con Windows 8 e WinRT: Listbox e collezioni di dati