SlideShare a Scribd company logo
www.italiancpp.org
Conoscete
Windows
Bridge?
www.italiancpp.org
PATERNO’ GAETANO
Mail: tanopaterno@gmail.com
Facebook: gaetano.paterno.77
www.italiancpp.org
PATERNO’ GAETANO Mail: tanopaterno@gmail.com
Facebook: gaetano.paterno.77
Con Windows 8, Microsoft ha introdotto Windows
Runtime (WinRT), un'evoluzione dell’app model di
Windows, che doveva essere un'architettura
applicativa comune, ma non lo è stato del tutto.
Al rilascio di Windows Phone 8.1 è stato effettuato
l'allineamento di Windows Runtime tra Windows
Phone 8.1 e Windows. Gli sviluppatori hanno
quindi potuto creare app universali di
Windows 8 destinate sia a Windows che a
Windows Phone con una base di codice condivisa.
www.italiancpp.org
PATERNO’ GAETANO Mail: tanopaterno@gmail.com
Facebook: gaetano.paterno.77
Windows 10 introduce la piattaforma UWP (Universal
Windows Platform), che evolve ulteriormente il
modello di Windows Runtime e lo introduce nella
memoria centrale unificata di Windows 10.
Essendo parte della memoria centrale di Windows 10,
UWP offre ora una piattaforma per app comune,
disponibile su tutti i dispositivi che lo eseguono.
Grazie a questa evoluzione, le app destinate alla
piattaforma UWP possono chiamare non solo le API
WinRT comuni per tutti i dispositivi, ma anche le API
specifiche, incluse le API Win32 e .NET, della famiglia
di dispositivi in cui viene eseguita l'app.
www.italiancpp.org
PATERNO’ GAETANO Mail: tanopaterno@gmail.com
Facebook: gaetano.paterno.77
La piattaforma UWP offre un livello di API di base
garantito su tutti i dispositivi. Questo ti permette di
creare un singolo pacchetto dell'app che può essere
installato su un'ampia gamma di dispositivi.
I controlli dell'interfaccia utente adattivi e i nuovi
pannelli di layout introdotti in UWP, aiutano a
personalizzare l’interfaccia utente per un'ampia
gamma di risoluzioni dello schermo.
Inoltre, con un singolo pacchetto dell'app, Windows
Store offre un canale di distribuzione unificato per
raggiungere ogni tipo di dispositivo su cui può essere
eseguita l’app.
www.italiancpp.org
PATERNO’ GAETANO Mail: tanopaterno@gmail.com
Facebook: gaetano.paterno.77
Porta il tuo codice in
Windows
indipendentemente dalla
destinazione per cui era
pensato il tuo codice.
www.italiancpp.org
PATERNO’ GAETANO Mail: tanopaterno@gmail.com
Facebook: gaetano.paterno.77
WEB
Per i siti Web o le app Web, è possibile usare Visual
Studio 2015 per creare facilmente un'app di Windows
10 che raccoglie in un pacchetto il tuo sito Web o la
tua app Web per la pubblicazione in Windows Store.
Questo tipo di app, nota come Hosted Web App, può
essere usata per chiamare le API UWP direttamente
dal codice JavaScript del tuo sito Web e creare
un'esperienza utente più coinvolgente.
www.italiancpp.org
PATERNO’ GAETANO Mail: tanopaterno@gmail.com
Facebook: gaetano.paterno.77
WINDOWS
Se hai un'app in Silverlight per Windows Phone, è
possibile usare il bridge Silverlight di Mobilize.Net per
trasferirla sulla piattaforma UWP. Questo bridge è
attualmente disponibile come anteprima per gli
sviluppatori e offre un subset iniziale dei mapping di
piattaforma per Silverlight e UWP.
Se hai un'applicazione .NET o basata su Win32,
"Project Centennial" renderà possibili la creazione di
un pacchetto per l'applicazione e la pubblicazione in
Windows Store.
www.italiancpp.org
PATERNO’ GAETANO Mail: tanopaterno@gmail.com
Facebook: gaetano.paterno.77
ANDROID
Se hai un'app per Android, puoi usare il bridge
Android per renderla disponibile per i dispositivi
Windows 10 Mobile usando le estensioni per Android
SDK e vari ambienti IDE noti per Android. Per la
maggior parte delle app sono necessarie poche
modifiche al codice, se non nessuna.
www.italiancpp.org
PATERNO’ GAETANO Mail: tanopaterno@gmail.com
Facebook: gaetano.paterno.77
iOS
Se hai un'app per iOS, puoi usare il bridge iOS per
creare una versione UWP della tua app con Visual
Studio 2015 e il codice Objective-C esistente. Puoi
estendere il codice esistente con le funzionalità native
di Windows, in base alle tue esigenze.
www.italiancpp.org
PATERNO’ GAETANO Mail: tanopaterno@gmail.com
Facebook: gaetano.paterno.77
In questa sessione andremo a vedere un po' più
approfonditamente ciò che è
Windows Bridge for iOS
(precedentemente denominato 'Progetto
Islandwood'), come consente agli sviluppatori iOS di
portare le loro competenze e il codice Objctive-C per
Windows e perché Microsoft a deciso di dare questo
particolare bridge di Windows disponibile come open-
source su GitHub.
www.italiancpp.org
PATERNO’ GAETANO Mail: tanopaterno@gmail.com
Facebook: gaetano.paterno.77
Windows Bridge for iOS e’ stato
rilasciato su GitHub in concomitanza con
l’evento Build 2015 nel mese di aprile,
con rilascio finale prevista per questo
autunno.
www.italiancpp.org
PATERNO’ GAETANO Mail: tanopaterno@gmail.com
Facebook: gaetano.paterno.77
Windows Bridge for iOS è concepito per consentire agli sviluppatori iOS di creare applicazioni Windows utilizzando il
codice esistente in Objective-C e le sue competenze. A tale scopo, questo bridge è costituito da quattro componenti:
Objective-C compiler
un compilatore incluso in
Visual Studio che prende
il codice Objective-C e l’ho
compila in una Windows
Universal App nativa.
Objective-C runtime
per fornire funzionalità
avanzate al linguaggio.
iOS API headers/libs
sulla base delle API di
Objective-C, vengono
fornite delle API che
danno un’ampia
compatibilità
con le API iOS.
Visual Studio IDE
Integration
infine viene fornito
un tool che importa
il progetto Xcode in
Visual Studio 2015.
www.italiancpp.org
PATERNO’ GAETANO Mail: tanopaterno@gmail.com
Facebook: gaetano.paterno.77
Why the bridge is not a port
L’obiettivo del bridge per iOS non è mai stato
semplicemente quello di eseguire applicazioni iOS su
Windows.
Piuttosto l’obiettivo è aiutare a scrivere grandi
applicazioni Windows che utilizzano non molto di piu’
del vostro codice già esistente e tutta la conoscenza
dello sviluppatore.
Naturalmente, stanno continuando a lavorare per
ampliare la compatibilità con iOS.
www.italiancpp.org
PATERNO’ GAETANO Mail: tanopaterno@gmail.com
Facebook: gaetano.paterno.77
Dietro questo obiettivo ci sono tre principi fondamentali che hanno guidato l'architettura e il design del bridge per iOS:
Accesso completo
alle Windows API
rende facile utilizzo
delle Windows API
all'interno di codice
Objective-C.
compatibilità iOS
permettete agli
sviluppatori di
riutilizzare al massimo
il codice esistente
fin dove possibile.
Nessun sandboxing
iOS e le API di
Windows devono
essere in grado
di lavorare insieme.
www.italiancpp.org
PATERNO’ GAETANO Mail: tanopaterno@gmail.com
Facebook: gaetano.paterno.77
Il primo e il terzo principio sono collegati e
particolarmente importanti.
Il primo principio perché Windows ha un set di API
completamente funzionale e ricco, che continua a
crescere ed evolversi.
Il terzo perché avere la possibilità di chiamare e
utilizzare interamente le API di Windows sarebbe
severamente limitata se il set di API sarebbero in
modalità sandbox uno da altro, limitando la capacità
di compilare buone applicazioni Windows in
Objective-C.
www.italiancpp.org
PATERNO’ GAETANO Mail: tanopaterno@gmail.com
Facebook: gaetano.paterno.77
Quando le API Windows e
Objective-C si incontrano
Il bridge utilizza un compilatore personalizzato (clang
+ cl) per compilare codice sorgente Objective-C, e i file
oggetti generati sono poi collegati insieme utilizzando
il linker di Microsoft.
Questo approccio è ottimo perché permette a
Objective-C e C++/CX di poter coesistere nello stesso
progetto e chiamarsi tra loro utilizzando le interfacce
di C o C++.
www.italiancpp.org
PATERNO’ GAETANO Mail: tanopaterno@gmail.com
Facebook: gaetano.paterno.77
L'approccio funziona, ma c'è una piccola complicazione
con esso.
Perché clang non "capisce" le estensioni CX (che sono
necessari per chiamare le API di Windows), quindi è
sarebbe necessario creare il file cpp e quindi connettere
manualmente Objective-C e C++/ CX in modo che si
possa sfruttare appieno l'insieme delle API Windows
Universal Platform (UWP).
Mentre questo è perfettamente fattibile, in Microsoft
hanno creduto che avrebbero potuto fare di meglio e
questo è stato possibile con le "proiezioni" (projections).
www.italiancpp.org
PATERNO’ GAETANO Mail: tanopaterno@gmail.com
Facebook: gaetano.paterno.77
Per chi è nuovo, in breve, ciò che noi chiamiamo
"bindings" Microsoft ora lo chiama "projections".
Le proiezioni sono il processo di esposizione delle API
per tre ambienti: nativo (C e C++), HTML/JavaScript e
.NET. Se si crea un componente in C++ o un linguaggio
.NET, le sue API verranno memorizzate in un file
WinMD e saremo in grado di consumarle da tutti e tre
gli ambienti (nativi, JavaScript e .NET).
Per il bridge hanno preso e usato questo stesso
schema per consentire di utilizzare le API di Windows
direttamente da Objective-C. Attualmente il bridge
consente di utilizzare la gran parte delle API UWP e si
spera di raggiungere l'intero utilizzo.
www.italiancpp.org
PATERNO’ GAETANO Mail: tanopaterno@gmail.com
Facebook: gaetano.paterno.77
Ad esempio, esaminiamo come è possibile richiamare in modo asincrono un browser nella vs app utilizzando il bridge:
1
auto uri = ref new
Windows::Foundation::Uri("http://www.example.com");
2
concurrency::task<bool> launchUriOperation
(Windows::System::Launcher::LaunchUriAsync(uri));
3 launchUriOperation.then([](bool success)
4 {
5 if (success)
6 {
7 // URI launched
8 }
9 else
10 {
11 // URI launch failed
12 }
13 });
Opzione 1 (invocando il browser dal codice c++/cx): Opzione 2 (invocando la stessa API dal codice Objective-C):
[WSLauncher launchUriAsync:[WFUri
createUri:@“http://www.example.com/”] success:nil failure:nil];
www.italiancpp.org
PATERNO’ GAETANO Mail: tanopaterno@gmail.com
Facebook: gaetano.paterno.77
XAML e UIKit: insieme all'ultimo
Ora che è possibile chiamare le API di Windows da Objective-C,
per non limitare l'utilizzo di tale set di API, invece di
implementare un compositor separato per gli elementi iOS/UIKit,
l'intera applicazione utilizza il compositor XAML, con CALayers
(che sono alla base essenzialmente di ogni vista in iOS) legato agli
elementi XAML corrispondenti.
www.italiancpp.org
PATERNO’ GAETANO Mail: tanopaterno@gmail.com
Facebook: gaetano.paterno.77
Perchè Windows Bridge for iOS è
disponibile su GitHub
Microsoft ha messo a disposizione su GitHub tutti i sorgenti del
framework e dei tools per permettere agli sviluppatori di
contribuire in tanti modi al progetto WinObjC, come?
- Segnalando un bug
- Verificando la correzione dei bug
- Inviando codice per la correzione di un bug
- Inviando una richiesta di funzionalità
- Inviando una prova di funzionalità
- Dire agli altri sul progetto WinObjC
- Dire gli sviluppatori quanto apprezzi il progetto
www.italiancpp.org
PATERNO’ GAETANO Mail: tanopaterno@gmail.com
Facebook: gaetano.paterno.77
Wiki
Su GitHub è disponibile anche una pagina Wiki che guida passo-
passo su come scaricare, installare e usare l’sdk ed il tool
vsimporter.
Il tool vsimporter consente di importare il progetto Xcode in una
nuova soluzione UWP, con supporto ad Objective-C, per Windows
10.
Se si vuole una soluzione per Windows 8.1, utilizzare l'opzione -
format e specificare uno dei target: winstore8.1, winphone8.1 o
winstore10 (winstore10 è il predefinito).
Per ulteriori informazioni utilizzare l'opzione -help nella riga di
comando per vedere la serie completa di opzioni supportate.
www.italiancpp.org
PATERNO’ GAETANO Mail: tanopaterno@gmail.com
Facebook: gaetano.paterno.77
DEMO
www.italiancpp.org
PATERNO’ GAETANO Mail: tanopaterno@gmail.com
Facebook: gaetano.paterno.77
Che cosa è ancora in fase di sviluppo?
Dato che questo progetto è ancora in fase di sviluppo, ci sono alcune
caratteristiche che non sono ancora disponibili:
- E’ supportata solo la piattaforma x86, ARM è in arrivo
- Alcune ottimizzazioni/personalizzazioni del compilatore non
funzionano correttamente, mandando in crash clang
- Il supporto storyboard (al momento l’interfaccia è da rifare)
- MapKit
- AssetsLibrary
- Rubrica
- Annunci
- Annotazioni Objective-C
- Cattura e riproduzione media
www.italiancpp.org
PATERNO’ GAETANO Mail: tanopaterno@gmail.com
Facebook: gaetano.paterno.77
Problemi o quesiti?
Potete raggiungere il team di sviluppo in vari modi:
- Tweeter @WindowsDev e segnare le domande con #winobjc
- Inviare domande sui post di StackOverflow con il tag winobjc
- Visitare il canale #winobjc su IRC (webchat.freenode.net)
Visitate i siti:
- https://dev.windows.com/it-it/bridges
- https://dev.windows.com/it-it/bridges/ios
- https://github.com/Microsoft/WinObjC
- https://github.com/Microsoft/WinObjC/wiki

More Related Content

What's hot

Ecco gli strumenti necessari per sviluppare la tua App Android
Ecco gli strumenti necessari per sviluppare la tua App AndroidEcco gli strumenti necessari per sviluppare la tua App Android
Ecco gli strumenti necessari per sviluppare la tua App Android
Flavius-Florin Harabor
 
Introduction to iOS development with Xamarin
Introduction to iOS development with XamarinIntroduction to iOS development with Xamarin
Introduction to iOS development with XamarinRaffaele Fanizzi
 
Creazione componenti con Vue js
Creazione componenti con Vue jsCreazione componenti con Vue js
Creazione componenti con Vue js
Gianfranco Castro
 
WordPress Facilissimo: guida alla sicurezza
WordPress Facilissimo: guida alla sicurezzaWordPress Facilissimo: guida alla sicurezza
WordPress Facilissimo: guida alla sicurezza
Flavius-Florin Harabor
 
Model-View-ViewModel con Windows Store Apps
Model-View-ViewModel con Windows Store AppsModel-View-ViewModel con Windows Store Apps
Model-View-ViewModel con Windows Store Apps
codeblock
 
Visual studio code
Visual studio codeVisual studio code
Visual studio code
Marco Buttolo
 
Android - Programmazione Avanzata
Android -  Programmazione AvanzataAndroid -  Programmazione Avanzata
Android - Programmazione Avanzata
Stefano Sanna
 
Reportage "RAD Studio XE2 World Tour"
Reportage "RAD Studio XE2 World Tour"Reportage "RAD Studio XE2 World Tour"
Reportage "RAD Studio XE2 World Tour"
Marco Breveglieri
 
Wp7 to the max!
Wp7 to the max!Wp7 to the max!
Wp7 to the max!
Matteo Pagani
 
Servizi online della Microsoft per gli studenti
Servizi online della Microsoft per gli studentiServizi online della Microsoft per gli studenti
Servizi online della Microsoft per gli studenti
Wilfried Mbouenda Mbogne
 

What's hot (11)

Ecco gli strumenti necessari per sviluppare la tua App Android
Ecco gli strumenti necessari per sviluppare la tua App AndroidEcco gli strumenti necessari per sviluppare la tua App Android
Ecco gli strumenti necessari per sviluppare la tua App Android
 
Mobile development .net
Mobile development .netMobile development .net
Mobile development .net
 
Introduction to iOS development with Xamarin
Introduction to iOS development with XamarinIntroduction to iOS development with Xamarin
Introduction to iOS development with Xamarin
 
Creazione componenti con Vue js
Creazione componenti con Vue jsCreazione componenti con Vue js
Creazione componenti con Vue js
 
WordPress Facilissimo: guida alla sicurezza
WordPress Facilissimo: guida alla sicurezzaWordPress Facilissimo: guida alla sicurezza
WordPress Facilissimo: guida alla sicurezza
 
Model-View-ViewModel con Windows Store Apps
Model-View-ViewModel con Windows Store AppsModel-View-ViewModel con Windows Store Apps
Model-View-ViewModel con Windows Store Apps
 
Visual studio code
Visual studio codeVisual studio code
Visual studio code
 
Android - Programmazione Avanzata
Android -  Programmazione AvanzataAndroid -  Programmazione Avanzata
Android - Programmazione Avanzata
 
Reportage "RAD Studio XE2 World Tour"
Reportage "RAD Studio XE2 World Tour"Reportage "RAD Studio XE2 World Tour"
Reportage "RAD Studio XE2 World Tour"
 
Wp7 to the max!
Wp7 to the max!Wp7 to the max!
Wp7 to the max!
 
Servizi online della Microsoft per gli studenti
Servizi online della Microsoft per gli studentiServizi online della Microsoft per gli studenti
Servizi online della Microsoft per gli studenti
 

Viewers also liked

You that i missed
You that i missedYou that i missed
You that i missed
Wafiqhah Abbas
 
Hour of Code - 13/01/2016
Hour of Code - 13/01/2016Hour of Code - 13/01/2016
Hour of Code - 13/01/2016
Gaetano Paternò
 
OpenDay 3 TIM WCap - 05/05/2016
OpenDay 3 TIM WCap - 05/05/2016OpenDay 3 TIM WCap - 05/05/2016
OpenDay 3 TIM WCap - 05/05/2016
Gaetano Paternò
 
Google IO Catania - 20/05/2016
Google IO Catania - 20/05/2016Google IO Catania - 20/05/2016
Google IO Catania - 20/05/2016
Gaetano Paternò
 
Microsoft Azure for DreamSpark Academic Tour - 22/01/2016
Microsoft Azure for DreamSpark Academic Tour - 22/01/2016Microsoft Azure for DreamSpark Academic Tour - 22/01/2016
Microsoft Azure for DreamSpark Academic Tour - 22/01/2016
Gaetano Paternò
 
GdG DevFestMed 2016 - 06/11/2016
GdG DevFestMed 2016 - 06/11/2016GdG DevFestMed 2016 - 06/11/2016
GdG DevFestMed 2016 - 06/11/2016
Gaetano Paternò
 
DevOpsHerous 2016 - 29/10/2016
DevOpsHerous 2016 - 29/10/2016DevOpsHerous 2016 - 29/10/2016
DevOpsHerous 2016 - 29/10/2016
Gaetano Paternò
 
ancaman dibidang sosial budaya
ancaman dibidang sosial budayaancaman dibidang sosial budaya
ancaman dibidang sosial budaya
noviasaharani
 
Laporan praktikum biologi Pertumbuhan dan Perkembangan
Laporan  praktikum biologi Pertumbuhan dan PerkembanganLaporan  praktikum biologi Pertumbuhan dan Perkembangan
Laporan praktikum biologi Pertumbuhan dan Perkembangan
Wafiqhah Abbas
 

Viewers also liked (9)

You that i missed
You that i missedYou that i missed
You that i missed
 
Hour of Code - 13/01/2016
Hour of Code - 13/01/2016Hour of Code - 13/01/2016
Hour of Code - 13/01/2016
 
OpenDay 3 TIM WCap - 05/05/2016
OpenDay 3 TIM WCap - 05/05/2016OpenDay 3 TIM WCap - 05/05/2016
OpenDay 3 TIM WCap - 05/05/2016
 
Google IO Catania - 20/05/2016
Google IO Catania - 20/05/2016Google IO Catania - 20/05/2016
Google IO Catania - 20/05/2016
 
Microsoft Azure for DreamSpark Academic Tour - 22/01/2016
Microsoft Azure for DreamSpark Academic Tour - 22/01/2016Microsoft Azure for DreamSpark Academic Tour - 22/01/2016
Microsoft Azure for DreamSpark Academic Tour - 22/01/2016
 
GdG DevFestMed 2016 - 06/11/2016
GdG DevFestMed 2016 - 06/11/2016GdG DevFestMed 2016 - 06/11/2016
GdG DevFestMed 2016 - 06/11/2016
 
DevOpsHerous 2016 - 29/10/2016
DevOpsHerous 2016 - 29/10/2016DevOpsHerous 2016 - 29/10/2016
DevOpsHerous 2016 - 29/10/2016
 
ancaman dibidang sosial budaya
ancaman dibidang sosial budayaancaman dibidang sosial budaya
ancaman dibidang sosial budaya
 
Laporan praktikum biologi Pertumbuhan dan Perkembangan
Laporan  praktikum biologi Pertumbuhan dan PerkembanganLaporan  praktikum biologi Pertumbuhan dan Perkembangan
Laporan praktikum biologi Pertumbuhan dan Perkembangan
 

Similar to Italian C++ MeetUp - 24/10/2015

Sviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinSviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinFabio Cozzolino
 
Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5
Gabriele Gaggi
 
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Gaetano Paternò
 
Meet no Neet: presentazione del progetto App per organizzare eventi
Meet no Neet: presentazione del progetto App per organizzare eventiMeet no Neet: presentazione del progetto App per organizzare eventi
Meet no Neet: presentazione del progetto App per organizzare eventi
Fondazione Mondo Digitale
 
Presentazione+Android
Presentazione+AndroidPresentazione+Android
Presentazione+AndroidNicola Pedot
 
XeDotNet - .Net MAUI
XeDotNet - .Net MAUIXeDotNet - .Net MAUI
XeDotNet - .Net MAUI
Marco Bortolin
 
Flash Platform su dispositivi mobili
Flash Platform su dispositivi mobiliFlash Platform su dispositivi mobili
Flash Platform su dispositivi mobili
luca mezzalira
 
Windows AppStudio, app without code
Windows AppStudio, app without codeWindows AppStudio, app without code
Windows AppStudio, app without code
Angelo Gino Varrati
 
Mobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web DevelopersMobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web Developers
sparkfabrik
 
Costruire app per WinPhone, iOS e Android con C# e Xamarin
Costruire app per WinPhone, iOS e Android con C# e XamarinCostruire app per WinPhone, iOS e Android con C# e Xamarin
Costruire app per WinPhone, iOS e Android con C# e Xamarin
Fabio Cozzolino
 
MobileDevCamp2012 - Android
MobileDevCamp2012 - AndroidMobileDevCamp2012 - Android
MobileDevCamp2012 - Android
mobiledevcamp
 
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaMulti-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
Andrea Dottor
 
Mobile platforms development overview
Mobile platforms development overviewMobile platforms development overview
Mobile platforms development overview
Alfredo Morresi
 
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Codemotion
 
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
Marco Parenzan
 
Introduzione alle app Windows Universal
Introduzione alle app Windows UniversalIntroduzione alle app Windows Universal
Introduzione alle app Windows Universal
Alessandro Scardova
 
7. Applicazioni Web e CMS
7. Applicazioni Web e CMS7. Applicazioni Web e CMS
7. Applicazioni Web e CMS
Roberto Polillo
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
Gabriele Gaggi
 
Webcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio OnlineWebcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio Online
Davide Benvegnù
 

Similar to Italian C++ MeetUp - 24/10/2015 (20)

Sviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinSviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarin
 
Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5
 
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
 
Meet no Neet: presentazione del progetto App per organizzare eventi
Meet no Neet: presentazione del progetto App per organizzare eventiMeet no Neet: presentazione del progetto App per organizzare eventi
Meet no Neet: presentazione del progetto App per organizzare eventi
 
Presentazione+Android
Presentazione+AndroidPresentazione+Android
Presentazione+Android
 
XeDotNet - .Net MAUI
XeDotNet - .Net MAUIXeDotNet - .Net MAUI
XeDotNet - .Net MAUI
 
Flash Platform su dispositivi mobili
Flash Platform su dispositivi mobiliFlash Platform su dispositivi mobili
Flash Platform su dispositivi mobili
 
Windows AppStudio, app without code
Windows AppStudio, app without codeWindows AppStudio, app without code
Windows AppStudio, app without code
 
Mobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web DevelopersMobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web Developers
 
Costruire app per WinPhone, iOS e Android con C# e Xamarin
Costruire app per WinPhone, iOS e Android con C# e XamarinCostruire app per WinPhone, iOS e Android con C# e Xamarin
Costruire app per WinPhone, iOS e Android con C# e Xamarin
 
MobileDevCamp2012 - Android
MobileDevCamp2012 - AndroidMobileDevCamp2012 - Android
MobileDevCamp2012 - Android
 
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaMulti-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
 
Mobile platforms development overview
Mobile platforms development overviewMobile platforms development overview
Mobile platforms development overview
 
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
 
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
 
Android
AndroidAndroid
Android
 
Introduzione alle app Windows Universal
Introduzione alle app Windows UniversalIntroduzione alle app Windows Universal
Introduzione alle app Windows Universal
 
7. Applicazioni Web e CMS
7. Applicazioni Web e CMS7. Applicazioni Web e CMS
7. Applicazioni Web e CMS
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
 
Webcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio OnlineWebcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio Online
 

Italian C++ MeetUp - 24/10/2015

  • 3. www.italiancpp.org PATERNO’ GAETANO Mail: tanopaterno@gmail.com Facebook: gaetano.paterno.77 Con Windows 8, Microsoft ha introdotto Windows Runtime (WinRT), un'evoluzione dell’app model di Windows, che doveva essere un'architettura applicativa comune, ma non lo è stato del tutto. Al rilascio di Windows Phone 8.1 è stato effettuato l'allineamento di Windows Runtime tra Windows Phone 8.1 e Windows. Gli sviluppatori hanno quindi potuto creare app universali di Windows 8 destinate sia a Windows che a Windows Phone con una base di codice condivisa.
  • 4. www.italiancpp.org PATERNO’ GAETANO Mail: tanopaterno@gmail.com Facebook: gaetano.paterno.77 Windows 10 introduce la piattaforma UWP (Universal Windows Platform), che evolve ulteriormente il modello di Windows Runtime e lo introduce nella memoria centrale unificata di Windows 10. Essendo parte della memoria centrale di Windows 10, UWP offre ora una piattaforma per app comune, disponibile su tutti i dispositivi che lo eseguono. Grazie a questa evoluzione, le app destinate alla piattaforma UWP possono chiamare non solo le API WinRT comuni per tutti i dispositivi, ma anche le API specifiche, incluse le API Win32 e .NET, della famiglia di dispositivi in cui viene eseguita l'app.
  • 5. www.italiancpp.org PATERNO’ GAETANO Mail: tanopaterno@gmail.com Facebook: gaetano.paterno.77 La piattaforma UWP offre un livello di API di base garantito su tutti i dispositivi. Questo ti permette di creare un singolo pacchetto dell'app che può essere installato su un'ampia gamma di dispositivi. I controlli dell'interfaccia utente adattivi e i nuovi pannelli di layout introdotti in UWP, aiutano a personalizzare l’interfaccia utente per un'ampia gamma di risoluzioni dello schermo. Inoltre, con un singolo pacchetto dell'app, Windows Store offre un canale di distribuzione unificato per raggiungere ogni tipo di dispositivo su cui può essere eseguita l’app.
  • 6. www.italiancpp.org PATERNO’ GAETANO Mail: tanopaterno@gmail.com Facebook: gaetano.paterno.77 Porta il tuo codice in Windows indipendentemente dalla destinazione per cui era pensato il tuo codice.
  • 7. www.italiancpp.org PATERNO’ GAETANO Mail: tanopaterno@gmail.com Facebook: gaetano.paterno.77 WEB Per i siti Web o le app Web, è possibile usare Visual Studio 2015 per creare facilmente un'app di Windows 10 che raccoglie in un pacchetto il tuo sito Web o la tua app Web per la pubblicazione in Windows Store. Questo tipo di app, nota come Hosted Web App, può essere usata per chiamare le API UWP direttamente dal codice JavaScript del tuo sito Web e creare un'esperienza utente più coinvolgente.
  • 8. www.italiancpp.org PATERNO’ GAETANO Mail: tanopaterno@gmail.com Facebook: gaetano.paterno.77 WINDOWS Se hai un'app in Silverlight per Windows Phone, è possibile usare il bridge Silverlight di Mobilize.Net per trasferirla sulla piattaforma UWP. Questo bridge è attualmente disponibile come anteprima per gli sviluppatori e offre un subset iniziale dei mapping di piattaforma per Silverlight e UWP. Se hai un'applicazione .NET o basata su Win32, "Project Centennial" renderà possibili la creazione di un pacchetto per l'applicazione e la pubblicazione in Windows Store.
  • 9. www.italiancpp.org PATERNO’ GAETANO Mail: tanopaterno@gmail.com Facebook: gaetano.paterno.77 ANDROID Se hai un'app per Android, puoi usare il bridge Android per renderla disponibile per i dispositivi Windows 10 Mobile usando le estensioni per Android SDK e vari ambienti IDE noti per Android. Per la maggior parte delle app sono necessarie poche modifiche al codice, se non nessuna.
  • 10. www.italiancpp.org PATERNO’ GAETANO Mail: tanopaterno@gmail.com Facebook: gaetano.paterno.77 iOS Se hai un'app per iOS, puoi usare il bridge iOS per creare una versione UWP della tua app con Visual Studio 2015 e il codice Objective-C esistente. Puoi estendere il codice esistente con le funzionalità native di Windows, in base alle tue esigenze.
  • 11. www.italiancpp.org PATERNO’ GAETANO Mail: tanopaterno@gmail.com Facebook: gaetano.paterno.77 In questa sessione andremo a vedere un po' più approfonditamente ciò che è Windows Bridge for iOS (precedentemente denominato 'Progetto Islandwood'), come consente agli sviluppatori iOS di portare le loro competenze e il codice Objctive-C per Windows e perché Microsoft a deciso di dare questo particolare bridge di Windows disponibile come open- source su GitHub.
  • 12. www.italiancpp.org PATERNO’ GAETANO Mail: tanopaterno@gmail.com Facebook: gaetano.paterno.77 Windows Bridge for iOS e’ stato rilasciato su GitHub in concomitanza con l’evento Build 2015 nel mese di aprile, con rilascio finale prevista per questo autunno.
  • 13. www.italiancpp.org PATERNO’ GAETANO Mail: tanopaterno@gmail.com Facebook: gaetano.paterno.77 Windows Bridge for iOS è concepito per consentire agli sviluppatori iOS di creare applicazioni Windows utilizzando il codice esistente in Objective-C e le sue competenze. A tale scopo, questo bridge è costituito da quattro componenti: Objective-C compiler un compilatore incluso in Visual Studio che prende il codice Objective-C e l’ho compila in una Windows Universal App nativa. Objective-C runtime per fornire funzionalità avanzate al linguaggio. iOS API headers/libs sulla base delle API di Objective-C, vengono fornite delle API che danno un’ampia compatibilità con le API iOS. Visual Studio IDE Integration infine viene fornito un tool che importa il progetto Xcode in Visual Studio 2015.
  • 14. www.italiancpp.org PATERNO’ GAETANO Mail: tanopaterno@gmail.com Facebook: gaetano.paterno.77 Why the bridge is not a port L’obiettivo del bridge per iOS non è mai stato semplicemente quello di eseguire applicazioni iOS su Windows. Piuttosto l’obiettivo è aiutare a scrivere grandi applicazioni Windows che utilizzano non molto di piu’ del vostro codice già esistente e tutta la conoscenza dello sviluppatore. Naturalmente, stanno continuando a lavorare per ampliare la compatibilità con iOS.
  • 15. www.italiancpp.org PATERNO’ GAETANO Mail: tanopaterno@gmail.com Facebook: gaetano.paterno.77 Dietro questo obiettivo ci sono tre principi fondamentali che hanno guidato l'architettura e il design del bridge per iOS: Accesso completo alle Windows API rende facile utilizzo delle Windows API all'interno di codice Objective-C. compatibilità iOS permettete agli sviluppatori di riutilizzare al massimo il codice esistente fin dove possibile. Nessun sandboxing iOS e le API di Windows devono essere in grado di lavorare insieme.
  • 16. www.italiancpp.org PATERNO’ GAETANO Mail: tanopaterno@gmail.com Facebook: gaetano.paterno.77 Il primo e il terzo principio sono collegati e particolarmente importanti. Il primo principio perché Windows ha un set di API completamente funzionale e ricco, che continua a crescere ed evolversi. Il terzo perché avere la possibilità di chiamare e utilizzare interamente le API di Windows sarebbe severamente limitata se il set di API sarebbero in modalità sandbox uno da altro, limitando la capacità di compilare buone applicazioni Windows in Objective-C.
  • 17. www.italiancpp.org PATERNO’ GAETANO Mail: tanopaterno@gmail.com Facebook: gaetano.paterno.77 Quando le API Windows e Objective-C si incontrano Il bridge utilizza un compilatore personalizzato (clang + cl) per compilare codice sorgente Objective-C, e i file oggetti generati sono poi collegati insieme utilizzando il linker di Microsoft. Questo approccio è ottimo perché permette a Objective-C e C++/CX di poter coesistere nello stesso progetto e chiamarsi tra loro utilizzando le interfacce di C o C++.
  • 18. www.italiancpp.org PATERNO’ GAETANO Mail: tanopaterno@gmail.com Facebook: gaetano.paterno.77 L'approccio funziona, ma c'è una piccola complicazione con esso. Perché clang non "capisce" le estensioni CX (che sono necessari per chiamare le API di Windows), quindi è sarebbe necessario creare il file cpp e quindi connettere manualmente Objective-C e C++/ CX in modo che si possa sfruttare appieno l'insieme delle API Windows Universal Platform (UWP). Mentre questo è perfettamente fattibile, in Microsoft hanno creduto che avrebbero potuto fare di meglio e questo è stato possibile con le "proiezioni" (projections).
  • 19. www.italiancpp.org PATERNO’ GAETANO Mail: tanopaterno@gmail.com Facebook: gaetano.paterno.77 Per chi è nuovo, in breve, ciò che noi chiamiamo "bindings" Microsoft ora lo chiama "projections". Le proiezioni sono il processo di esposizione delle API per tre ambienti: nativo (C e C++), HTML/JavaScript e .NET. Se si crea un componente in C++ o un linguaggio .NET, le sue API verranno memorizzate in un file WinMD e saremo in grado di consumarle da tutti e tre gli ambienti (nativi, JavaScript e .NET). Per il bridge hanno preso e usato questo stesso schema per consentire di utilizzare le API di Windows direttamente da Objective-C. Attualmente il bridge consente di utilizzare la gran parte delle API UWP e si spera di raggiungere l'intero utilizzo.
  • 20. www.italiancpp.org PATERNO’ GAETANO Mail: tanopaterno@gmail.com Facebook: gaetano.paterno.77 Ad esempio, esaminiamo come è possibile richiamare in modo asincrono un browser nella vs app utilizzando il bridge: 1 auto uri = ref new Windows::Foundation::Uri("http://www.example.com"); 2 concurrency::task<bool> launchUriOperation (Windows::System::Launcher::LaunchUriAsync(uri)); 3 launchUriOperation.then([](bool success) 4 { 5 if (success) 6 { 7 // URI launched 8 } 9 else 10 { 11 // URI launch failed 12 } 13 }); Opzione 1 (invocando il browser dal codice c++/cx): Opzione 2 (invocando la stessa API dal codice Objective-C): [WSLauncher launchUriAsync:[WFUri createUri:@“http://www.example.com/”] success:nil failure:nil];
  • 21. www.italiancpp.org PATERNO’ GAETANO Mail: tanopaterno@gmail.com Facebook: gaetano.paterno.77 XAML e UIKit: insieme all'ultimo Ora che è possibile chiamare le API di Windows da Objective-C, per non limitare l'utilizzo di tale set di API, invece di implementare un compositor separato per gli elementi iOS/UIKit, l'intera applicazione utilizza il compositor XAML, con CALayers (che sono alla base essenzialmente di ogni vista in iOS) legato agli elementi XAML corrispondenti.
  • 22. www.italiancpp.org PATERNO’ GAETANO Mail: tanopaterno@gmail.com Facebook: gaetano.paterno.77 Perchè Windows Bridge for iOS è disponibile su GitHub Microsoft ha messo a disposizione su GitHub tutti i sorgenti del framework e dei tools per permettere agli sviluppatori di contribuire in tanti modi al progetto WinObjC, come? - Segnalando un bug - Verificando la correzione dei bug - Inviando codice per la correzione di un bug - Inviando una richiesta di funzionalità - Inviando una prova di funzionalità - Dire agli altri sul progetto WinObjC - Dire gli sviluppatori quanto apprezzi il progetto
  • 23. www.italiancpp.org PATERNO’ GAETANO Mail: tanopaterno@gmail.com Facebook: gaetano.paterno.77 Wiki Su GitHub è disponibile anche una pagina Wiki che guida passo- passo su come scaricare, installare e usare l’sdk ed il tool vsimporter. Il tool vsimporter consente di importare il progetto Xcode in una nuova soluzione UWP, con supporto ad Objective-C, per Windows 10. Se si vuole una soluzione per Windows 8.1, utilizzare l'opzione - format e specificare uno dei target: winstore8.1, winphone8.1 o winstore10 (winstore10 è il predefinito). Per ulteriori informazioni utilizzare l'opzione -help nella riga di comando per vedere la serie completa di opzioni supportate.
  • 24. www.italiancpp.org PATERNO’ GAETANO Mail: tanopaterno@gmail.com Facebook: gaetano.paterno.77 DEMO
  • 25. www.italiancpp.org PATERNO’ GAETANO Mail: tanopaterno@gmail.com Facebook: gaetano.paterno.77 Che cosa è ancora in fase di sviluppo? Dato che questo progetto è ancora in fase di sviluppo, ci sono alcune caratteristiche che non sono ancora disponibili: - E’ supportata solo la piattaforma x86, ARM è in arrivo - Alcune ottimizzazioni/personalizzazioni del compilatore non funzionano correttamente, mandando in crash clang - Il supporto storyboard (al momento l’interfaccia è da rifare) - MapKit - AssetsLibrary - Rubrica - Annunci - Annotazioni Objective-C - Cattura e riproduzione media
  • 26. www.italiancpp.org PATERNO’ GAETANO Mail: tanopaterno@gmail.com Facebook: gaetano.paterno.77 Problemi o quesiti? Potete raggiungere il team di sviluppo in vari modi: - Tweeter @WindowsDev e segnare le domande con #winobjc - Inviare domande sui post di StackOverflow con il tag winobjc - Visitare il canale #winobjc su IRC (webchat.freenode.net) Visitate i siti: - https://dev.windows.com/it-it/bridges - https://dev.windows.com/it-it/bridges/ios - https://github.com/Microsoft/WinObjC - https://github.com/Microsoft/WinObjC/wiki