This document discusses Windows 10 and the Universal Windows Platform (UWP). It explains that Windows 10 will have a common core and development platform across devices like phones, tablets, desktops, Xbox and more. Developers will be able to write apps once and deploy them across all Windows 10 devices and stores using common APIs and tools in the UWP.
2. Windows 10
Utenti sempre
aggiornati
Ucore unificato e
stessa piattaforma
per le app
DotNetAbruzzo
Windows Phone 7.5
Windows Phone 8
Windows
Phone 8.1
Windows 8
Xbox One
Windows on Devices
Xbox 360
Windows 8.1
Windows 10
Stesso
OS kernel
Convergenza
nello sviluppo
delle app
3. Phone Small Tablet
2-in-1s
(Tablet or Laptop)
Desktops
& All-in-OnesPhablet Large Tablet
Laptop
Classici
Xbox IoTSurface Hub Holographic
Windows 10
4. One Store +
One Dev Center
Reuse
Existing
CodeOne SDK +
Tooling
Adaptive
User Interface
Natural
User Inputs
Una Universal Windows Platform
5. Windows 10
Windows 10
Sistema Operativo
Bridging technologies
Win32
desktop
Web
hosted
Java
Android
Obj.C
iOS
Universal Windows Platform
WWAC++
& CX
.Net
languages
HTML
DirectX
XAML
C++
.Net
languages
MFCWFWPF
.Net
runtime
DotNetAbruzzo
14. One Windows
Desktop
SKU
PC
2 in 1
Mobile
SKU
Tablet
Phablet
Phone
Xbox
SKU
Xbox
IoT
SKU
Raspberry
Pi
Home
Automation
Surface Hub
SKU
Surface Hub
Holographic
SKU
HoloLens
24. var api = "Windows.Phone.UI.Input.HardwareButtons";
if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent(api))
{
Windows.Phone.UI.Input.HardwareButtons.CameraPressed
+= CameraButtonPressed;
}
25.
26. Web Apps
NEW: Hosted Web Apps
Porta le funzionalità del tuo sito web nel
Windows Store
Permette di sfruttare le proprie
competenze nello sviluppo web
Accesso complete alle Universal APIs,
incluse
In Windows Phone 7 il Sistema operative era basato su Windows CE un Sistema operative pensato per device mobile.
Quando è uscito Windows Phone 8 il kernel di Windows CE è stato abbandonato ed è stato utilizzato quello di Windows NT lo stesso della versione PC. Stessa cosa è avvenuta con l’Xbox One
Con Windows 8.1/Windows Phone 8.1 inizia a nascere una piattaforma di sviluppo condivisa. E’ possibile sviluppare app universal per 8.1 che possono condividere una grande percentuale di codice e condividono molte API
Con Windows 10 è stato fatto un ulteriore passo avanti arrivando alla possibilità di creare una singola applicazione che può essere eseguita su tutti i dispositive che utilizzano Windows 10. Windows 10 utilizza un Core unificato per tutti i device e una singola piattaforma di sviluppo app
Windows 10 è disponibile per una grande varietà di dispositive, dai telefoni con schermi da 4,5”, passando per i phablet, tablet, pc, laptot, convertibili come il Surface, I desktop e gli All-in-ones, passando per l’Xbox che abbiamo in salotto fino ad arrivare a grandi schermi di 84” per device pensati per la collaborazione in team come il Surface Hub.
A questi si aggiungono computer in miniature come la Raspberry Pi 2 ed hardware futuristico come gli Hololens.
I dispositivi sono stati quindi divisi in base all’hardware di cui dispongono in differenti famiglie in modo che gli sviluppatori possano più semplicemente sviluppare avendo come target una o più famiglie di dispositivi
<click>
Le famiglie partono da small devices and IoT, telefoni e piccolo tablet appartengono alla famiglia del Mobile, grandi tablet e PC appartengono alla famiglia PC, the Xbox, Surface Hub (o ‘Team’) e per finire Hololens
<click>
Tutte queste famiglie di dispositive sono dotati della stessa developer platforma, la Universal Windows Platform, è quindi possibile realizzare una singola app che potrà girare su tutte le famiglie usando un singolo SDK e distribuendole tramite un singolo store.
Questo non vuole però dire che una sola app girerà allo stesso modo su tutti questi dispositive, è necessario che l’app si adatti ai vari scenari quindi sono state aggiunte API, controlli e tools che aiutano nella costruzione di UI adattive
Vediamo adesso I differenti modi per sviluppare app per Windows 10.
<click>
Prima di tutto abbiamo I metodi tradizionali con cui abbiamo sempre sviluppato app come WPF,MFC e il framework completo .NET. Questo tipo di app vengono definite CWA (Classic Windows Apps) e restano un buon modo di fare app Windows per il desktop. Esistono anche dei tool come il progetto Centennial che permettono di pacchettizzare le CWA e distribuirle attraverso il Windows Store
<click>
Ci sono poi le nuove UWP che sono basate sul Windows Runtime APIs che è possible utilizzare per costruire Windows Store apps su Windows 8.x e Windows Phone 8.1. In questo scenario è possibile utilizzare HTML e JavaScript oltre naturalmente a XAML e C#/VB or C++, oppure è possibile utilizzare DirectX e uno dei framework che ci sono in commercio per creare giochi. Queste applicazioni girano sulle UWP APIs e possono essere eseguite su tutti I dispositivi Windows 10.
<click>
Ultimo scenario è quello delle tecnologie di bridging. Questi facilitano lo sviluppo di app per chi ha competenze che esulano dalla piattaforma windows. Sono disponibili il Windows Bridge for iOS, Windows Bridge for Android, hosted Web Apps per rendere disponibili i propri siti tramite il Windows Store e utilizzare le UWP APIs, oltra ad un Bridge per le classical Windows Apps.
Quindi, cosa è la Universal Windows Platform?
E’ un singolo strato di API che è consistente tra tutti i dispositivi Windows 10 devices.
E’ proprio questo strato garantito di API che permette di sviluppare app funzionanti su tutti i dispositive.
Quello che è stato fatto è prendere il Windows Runtime APIs lanciato con Windows 8, estenderlo in maniera massiccia e componentizzarlo dividendono in un svariati ‘contracts’.
Perchè è stato scelto il nome ‘contract’? – Perchè questi component forniscono un contratto tra la piattaforma e lo sviluppatore che permette di mantenere le API consistenti anche tra molte release minori. Questo permette di espandere e migliorare la piattaforma rilasciando aggiornamenti per i component che espongono nuove capabilities e permette allo sviluppatore di sviluppare app per una certa versione delle API
Ecco un esempio delle API disponibili nella piattaforma UWP API.
Tutto ciò che è necessario fare in un’app può essere eseguito tramite un’API ed è disponibile per tutte le piattaforme. Esiste anche un metodo per chiamare API specifiche per una famiglia di device che vedremo a breve.
Il primo cambiamento sostanziale che ci troviamo davanti è che non stiamo sviluppando app su un OS – Windows 10 – stiamo costruendo app sulla Universal Windows Platform, che è gestita ed aggiornata indipendentemente dall’OS.
Nel vostro Package Manifest, ci sarà una dichiarazione come questa
10.0.10240.0 Prima versione
10.0.10586.0 November update
10.0.14296.0 Anniversary update
Quello che ci dice è che stiamo sviluppando sulla UWP versione 10.0.10240.0 (la prima versione disponibile GA - General Availability). Quando creerete la vostra prima UWP, la MaxVersionTested sarà anch’essa impostata a 10.0.10240.0, ma immaginiamo che nel futuro quando nuove version della UWP saranno rilasciate ed installate insieme alle altre version.
Nel nostro esempio indichiamo che l’app è stata testate con la UWP version 10.0.10586.0, questo non vuol dire non girerà però sulle version precedenti. In questo caso se possibile il runtime forzerà l’utilizzo della versione del runtime 10.0.10586.0.
Lo Windows Store usa inoltre queste informazioni per essere sicuro che l’utente scarichi la miglior versione per il suo dispositivo.
Windows 10 è più di un OS ma è da considerarsi ‘Windows as a Service’ – continuamento sviluppato, migliorato e con nuove funzionalità
In questo ambito UWP è lo strato di API garantito che ci permette di continuare a sviluppare le nostre app venendo costantemente aggiornato ma con una cadenza che è indipendente dal Sistema Operativo
A differenza di Windows 8.1 dove una Universal App crea pacchetti differenti per PC e Phone, con la UWP c’è un singolo pacchetto che può funzionare su ogni dispositivo compatibile con UWP
Il runtime su ogni dispositivo sarà in grado di eseguire le app UWP.
Windows 10 offre opportunità senza precedenti per gli sviluppatori: un singolo dev center da cui gestire le app per tutti I dispositivi Windows 10 ed un singolo store che distribuire le app su tutte le tipologie di device.
Lo store permette inoltre caratteristiche di accessi speciali in ambito Businesses ed Education
Se proviamo a pensare all’interfaccia utente di ogni famiglia di device (xbox, phone,pc) noteremo che ognuna offre un’esperienza di uso diversa ed appropriata per il device. Ogni famiglia ha poi alcune caratteristiche distintive che rendono l’esperienza utente unica e che quindi hanno bisogno di un limitato numero di API specifiche per ogni piattaforma.
Diamo adesso un’occhiata a come vengono gestite le varie famiglie di device. Come abbiamo detto ogni famiglia deve garantire una user experience diversa all’utente e eseguendo la stessa piattaforma per le app su tutto il range di device compatibili.
Quello che si vuole avere non è però una sorta di “minimo comun denominatore” tra le piattaforme che gestisce solo le parti in comume, ma un Sistema di creare app che possano dare il Massimo su ogni tipo di piattaforma all’utente
Prima di parlare delle api parliamo di quello che l’utente nota di più, la UI della nostra applicazione che deve essere adattiva
Quando pensiamo ad un design adattivo quello che vogliamo realizzare è un layout di pagina che usa tecniche responsive senza dimensioni fisse ma con un contenuto che si modifica e si adatta automaticamnte a cambiamenti minori come ad esempio tra schermi di 4.5” e 5”
Molti dei controlli già disponibili sono di base responsive ad esempio quando si usa il toch viene mostrata un’area di interazione più ampia rispetto a quando si usa il mouse (Es . Menu contestuali)
Ma è anche necessario pensare ad una modifica del layout per quando ci sono differenze di dimensioni grandi come ad esempio tra un telefono ed un PC, in questo caso ci vengono in aiuto I Visual States.
In alcuni casi poi ci può essere la necessità di un design personalizzato quindi invece di un adattamento del contenuto è necessario creare un’esperienza personalizzata ed appropriate per il device e l’interazione con esso
Vediamo adesso un esempio di design responsive
Su schermi grandi come quello sulla destra viene sfruttato tutto lo spazio a disposizione, tutti i bottoni sono allineati e l’immagine del chiamante è visualizzata sulla destra.
Sullo schermo di dimensioni inferiori abbiamo essenzialmente gli stessi elementi ma l’immagine è ritagliata, il bottone per terminare la chiamata è ingrandito e posto sotto gli altri mentre il chiamante è stato posizionato poco sopra i pulsanti di controllo.
I controlli adattivi e il layout responsive sono un’ottima soluzione ma ci possono essere delle situazioni in cui ha senso fare qualcosa su misura che i controlli adattivi non permettono di realizzare.
Questa esigenza può nascere da hardware differente, per esempio un’app eseguita su Xbox può aver bisogno di alcune personalizzazioni per permettere la navigazione con un controller.
L’esigenza può anche essere dettata dalle dimensioni dello schermo e dall’usabilità, un designer potrebbe ad esempio voler inserire un menu nella parte inferiore dello schermo del telefono per usarlo con una mano.
In questo caso gli sviluppatori possono creare questa esperienza personalizzata utilizzando lo stesso codice condiviso ma diversi XAML per personalizzare il design a seconda del device
Il design personalizzato va oltre l’adattamento della UX
Pensare le proprie app per Windows 10 utilizzando una UI adaptive è una necessità anche se l’app è pensata esclusivamente per Phone, in quanto anche loro potranno veicolare le app su grandi schermi.
Windows Phone dispone di una funzionalità denominate Continuum che permette di connettere i telefoni di nuova generazione (es Lumia 950 e Lumia 950XL) ad uno schermo esterno ed una volta collegati tastiera e mouse di utilizzarlo come un PC qualsiasi, in questo caso l’app dovrà essere pronta ad adattarsi a qualsiasi tipo di schermo.
Adattare la UI a differenti schermi è la parte più complicate per lo sviluppo di app cross-family, ma è anche necessario poter invocare le API specifiche di ogni famiglia per creare un’esperienza unica.
Questo può essere realizzato tramite ‘Adaptive code’.
La maggior parte delle API sono già presenti nella piattaforma comune delle UWP, se vogliamo accedere a quelle per famiglia di device dobbiamo utilizzare deiPlatform Extension SDKs che possono essere aggiunti come qualsiasi altra libreria . Anche queste estensioni hanno una propria versione e possono essere aggiornate indipendentemente dall’OS e dalla UWP
La cosa principale da capire è che utilizzando questi SDK di una particolare famiglia non si limita l’app solo a quella famiglia di dispositive. Potranno comunque essere eseguite su qualsiasi altra famiglia di dispositivi
Nel caso si voglia limitare la distribuzione dell’app ad una sola famiglia è necessario agire dallo Store
Vediamo di capire come tutto ciò è possibile:
<Click> Ogni famiglia esegue lo stesso Core OS
<Click> Le app utilizzato la UWP che è comune a tutte le famiglie.
<Click> Quando viene aggiunto un riferimento ad un extension SDK, si stanno rendendo queste API disponibili ad essere chiamate dal codice dell’applicazione a runtime sulla famiglia selezionata
<Click> Quando il riferimento viene aggiunto i metadata per le API sono caricati nel progetto in modo che il compilatore e Visual Studio con il suo Intellisense possano funzionare correttamente durante lo sviluppo.
Abbiamo quindi a disposizione queste API specifiche per la piattaforma che possiamo utilizzare solo a runtime su una specifica famiglia. Come possiamo essere sicuri che le API vengano richiamata solo al momento opportune?
La risposta è condizionando queste chiamate al controllo che l’API sia effettivamente disponibile utilizzando i metodi forniti dall’API Windows.Foundation.Metadata.ApiInformation. Il metodo più utilizzato è IsTypePresent() che a runtime controlla che l’API richiesta sia effettivamente caricata ed utilizzabile dall’applicazione che stiamo eseguendo.
Nonostante le potenzialità delle UWP che permettono di scrivere codice una volta e di eseguirlo su diverse tipologie di piattaforme, alcuni sviluppatori non hanno interesse a portare le loro app sulla piattaforma Windows.
Per facilitare questo compito insieme a Windows 10 sono stati realizzati 4 tipologie di Bridge per permettere una veloce portabilità del codice esistente sulla UWP e aggiungere funzionalità come live tiles, active notifications, e Windows Store in-app purchases.
Hosted Web Apps.
Oltre a permettere ai siti web di visualizzati nel migliore dei modi nel browser, Windows 10 fornisce un nuovo metodo per trasformare siti in app vere e proprie.
<click>
Con Windows 10 è possibile riutilizzare il codice web esistente e creare una app che punta direttamente al nostro URL.
Non è necessario riscrivere il codice delle pagina anche se utilizzano tecnologie server side come asp.net o php!
<click>
E’ possibile accedere alle Universal Windows Platform APIs direttamente dal codice web scaricato dal server.
<click>
Le app così costruite potranno essere distribuite nelWindows Store.
Si potrà continuare ad usare gli stessi tool, librerie e servizi utilizzati oggi.
Si potrà continuare a aggiornare l’app sul server come prima e l’app utilizzerà i nuovi file.
Per gli sviluppatori Android™ il Windows Bridge for Android permette di compilare app usando codice Android su Windows 10 phone e piccolo tablet senza lasciare il proprio IDE per Android.
Oltre ad estender l’IDE include un emulatore Windows Phone e capacità di interop che aiutano le app a girare al meglio sulla piattaforma Windows
Per gli sviluppatori iOS®il Windows Bridge for iOS permette di creare app UWP da Visual Studio 2015 usando il codice Objective-C® esistente.
Sarà possibile importare progetti Xcode® direttamente in Visual Studio, permettendo alle app di girare su ogni dispositivo della famiglia Windows e permette di utilizzare le funzionalità delle UWP
Questo bridge non permette semplicemente di far girare app iOS su Windows, ma permette di creare app per Windows usando il codice già esistente e tutte le competenze possibili.
Le caratteristiche principali del bridge sono:
1. Accesso complete alle API Windows da codice Objective-C
2. Riutilizzo del codice esistente
3. Nessuna sandbox, le app iOS e UWP possono lavorare insieme
Il progetto è stato rilasciato come open-source per permettere a chiunque voglia di collaborare a migliorarlo
L’ultimo Bridge è il Windows Bridge for Classic Windows apps (anche chiamato ”Project Centennial”) che permette di pacchettizzare applicazioni .NET e Win32 e di distribuirle tramite lo Store lasciandosi alle spalle tutti i problemi di librerie o danni al Sistema che potevano verificarsi
Inoltre ci sarà anche qui la possibilità di usare tutte le funzionalità della UWP
Il Windows Bridge for Classic Windows apps sarà rilasciato in preview nel prossimo anno.
Visual Studio 2015 è disponibile in varie edizioni
Visual Studio Enterprise with MSDN è una soluzione Enterprise con tool avanzati per il lavoro di gruppo su progetti di qualsiasi dimensione
Visual Studio Professional with MSDN è una soluzione per realtà aziendali di medie dimensioni
Visual Studio Community è gratuito, può essere paragonato alla versione professional ed è utilizzabile da liberi professionisti, enti di ricerca e realtà aziendali con fatturato inferior al milione di euro
Con Windows 10 è cambiato l’approcio alla sviluppo. Non è più necessaria una licenza sviluppatore per ogni dispositivo dove si vuole testare l’applicazione.
Basta abilitare la licenza una volta per tutte nelle impostazioni del device.
In questo modo sarà possibili deployare le app da Visual Studio e anche fare il sideload di app non certificate per il Windows Store.
Dove posso sviluppare?
Visual Studio 2015 ed i Tools for Windows 10 possono funzionare su un PCs che esegue Windows 10, su PCs con Windows 8.1 e su Windows Server 2012 R2.
Dove posso sviluppare?
Visual Studio 2015 ed i Tools for Windows 10 possono funzionare su un PCs che esegue Windows 10, su PCs con Windows 8.1 e su Windows Server 2012 R2.
Per qualsiasi domanda su come costruire app per Windows 10, scaricare i tool ed accedere al Dev Center basta partire dalla homepage : dev.windows.com.
Sono inoltre disponibili tutorials, samples, started guides e la documentazione completa