Future platforms: iPhone, Android, Windows Phone, Nokia, Blackberry Lo sviluppo di applicazioni mobili: linguaggi, strumenti e potenzialità Twitter @qmatteoq Blog http://qmatteoq.tostring.it E-mail [email_address] Matteo Pagani Alfredo Morresi Twitter @rainbowbreeze Blog http://www.rainbowbreeze.it E-mail [email_address] Mobile Software Engineers
Linguaggi
iPhone Objective-C Linguaggio di programmazione derivato da C. E’ il linguaggio nativo delle applicazioni per Mac e iOS. In certi aspetti, ha una sintassi molto diversa dagli altri linguaggi di programmazione. Attualmente alla versione 2.0 del linguaggio. La miglior piattaforma mobile per l'accessibilita'.
La curva di apprendimento Piuttosto ripida E’ un linguaggio per certi versi molto diverso da Java e C# A meno che non si abbia già esperienza di Objective-C, realizzare una semplice applicazione per la prima volta richiede molto tempo. Richiede allo sviluppatore di usare metodologie di lavoro ben precise, anche per lo sviluppo di piccole applicazioni
Windows Phone 7 C# è il linguaggio nativo per lo sviluppo delle applicazioni Windows Phone 7 Da meno di un mese è stata rilasciata la CTP dei tool di sviluppo per VB.NET Attualmente alla release 4.0, si evolve assieme al framework .NET
La curva di apprendimento Molto dolce Fondamentalmente è C#, quindi se si è già programmatori .NET o Java è molto semplice da capire Si può lavorare a diversi livelli e con diversi pattern (logica nel code behind, MVVM, ecc), a seconda delle esigenze Poco tempo necessario per imparare ad utilizzare le funzioni più comuni (ad esempio, si può realizzare un lettore RSS in due ore partendo da zero).
Android Java 1.5, C/C++ Activity, Service, Broacast Receiver, Content Provider Intent Filters Porting librerie gia' esistenti XML per la grafica e l'animazione Risorse parametrizzabili Library project Junit e AndroidTestCase OpenGL Screen density/orientation
Nokia C'era una volta Symbian S40 ed S60: J2ME, C++  :°( Poi venne QT: Symbian S60, Windows CE, Maemo, Symbian^3, Linux X11, Windows, Mac OS. Android (unofficial) Si sviluppa in C++ QT Mobility API: contatti, location, multimedia Prossima release QT 4.8 (Q2 2011) In: QT Mobility API 1.1, QT Quick (QML), supporto MeeGo Out: supporto Windows CE, S60, Maemo 5
BlackBerry Si sviluppa in J2ME con supporto a: Connected Limited Device Configuration (CLDC) 1.1 Mobile Information Device Profile (MIDP) 2.0 RIM UI Library per keyboard, trackball e touchscreen
MonoTouch allows developers to create C# and .NET based applications that run on Apple's iPhone, iPad, and iPod, reusing both code and libraries that have been built for .NET. MonoTouch e MonoDroid
MonoDroid is a development stack for using C# and core .NET APIs to develop Android-based applications. MonoTouch e MonoDroid
PhoneGap The PhoneGap mission is to Web-enable native device functionality with open standards like HTML, CSS and JavaScript so that you can focus on the app you're building, not on authoring complex platform compatibility layers.
Appcelerator Titanium Mobile HTML, Javascript, [PHP, Ruby & Python for Desktop apps]
Ambienti e strumenti di sviluppo
iPhone XCode per il codice e la logica dell’applicazione Interface Builder per l’interfaccia grafica Versione attuale: 3.2 Versione in preview per gli sviluppatori: 4 Versioni stable gratuite, versioni beta disponibili solo per chi è iscritto all’iPhone Developer Program.
XCode
Interface Builder
L’emulatore
Windows Phone 7 Visual Studio 2010 per la logica e la UI Blend per la UI e rivolto ai designer I tool di sviluppo, usciti 6 mesi dopo il rilascio di Visual Studio, vengono distribiuti a parte in maniera gratuita Completamente gratuito (se non si possiedono Visual Studio e Blend, viene installata la versione Express)
Visual Studio 2010
Blend
L’emulatore
Android Eclipse + Android plugin -> ufficialmente supportato da Google NetBeans o altro editor preferito Multipiattaforma (Lin / Win / Mac) Google App Inventor – http://appinventor.googlelabs.com
IDE - Eclipse
Emulatore (e non solo) Mock per GPS, chiamate, batteria, SMS ecc... Si installa Android e si prova su altro hardware
Lot of Free software inside, powered by MIT ;) Google App Inventor
Nokia QT Creator Multipiattaforma (Lin / Win / Mac), ma no Mac per Maemo
QT Creator
Qt Simulator
Blackberry BlackBerry Java Development Environment aka JDE (Windows) Eclipse plugin (Windows) BlackBerry Smartphone Themes and Animated Graphics - crea SVG, importando anche da Adobe Flash e Photoshop BlackBerry Web Plug-in per Visual Studio ed Eclipse – crea browser based app e widget, con debug e deploy
BlackBerry
Sviluppo di applicazioni tradizionali
iPhone CocoaTouch E’ l’ambiente di programmazione per iOS Fortemente basato sul pattern MVC Definisce tutte le classi e gli oggetti per lavorare ad alto livello Si occupa della gestione della memoria (assente su iOS) Composto da Foundation Kit (libreria generica per lavorare ad oggetti) e App Kit (per l’interazione con la UI) Rispetto a Cocoa, supporta gli oggetti specifici per iOS (sensori, gestione del touch screen, ecc.) Le classi hanno prefisso NS (da NextStep, ambiente di programmazione creato dalla società omonima poi acquisita da Apple).
Windows Phone 7 Silverlight Ambiente di sviluppo ad alto livello Separazione dei ruoli tra developer e designer. L’interfaccia grafica è definita dallo XAML, un linguaggio di markup estremamente potente. Stessa architettura delle applicazioni Silverlight per il web, con alcune caratteristiche esclusive del device. Attualmente basato sulla release 3 di Silverlight
Android E' come sviluppare un'applicazione Java, con qualche accortezza Tutta la UI e' gestita per mezzo di file XML o via codice Supporto nativo alla localizzazione, diverse risoluzioni schermo e orientamento del device E' possibile usare librerie esterne e progetti libreria Supporto ai test automatici per la Business Logic e per la UI
Sviluppo di videogames
iPhone UIKit , per la gestione della grafica bidimensionale . OpenGL ES (subset di OpenGL per i device mobile) Open AL per la parte audio Grazie al supporto a Objective-C++, è possibile utilizzare per lo sviluppo di giochi per iOS librerie scritte in C++ Non c’è uno standard unico , ma diverse librerie e framework (Cocos2D ) Game Center Novità di iOS 4.1 Disponibile su iPhone 3GS e iPhone 4 I giochi si possono interfacciare per integrare achievements e multiplayer
Windows Phone 7 XNA è l’ambiente di sviluppo dedicato ai videogiochi A differenza di Silverlight, supporta il 3D e permette di accedere ai dati «grezzi» del telefono (ad esempio, la pressione dello schermo) E’ lo stesso linguaggio utilizzato per lo sviluppo di giochi Xbox Visual Studio permette di gestire agevolmente il deploy dello stesso gioco su più piattaforme diverse (PC, Xbox, Windows Phone), mantenendo sincronizzate le classi comuni. Integrazione con Xbox Live
Android Nessun supporto particolare alla grafica 2D avanzata Occorre ricorrere al C++ per le performance API Open GL ES (per device mobili) Scarseggiano le librerie di supporto (Rokon) Frammentarieta' delle caratteristiche hw/schermo della piattaforma rendono impegnativo uno sviluppo diffuso
Framework specializzati Unity3D, supporta iPhone, iPad e Android (in beta nella nuova release)
Il device e l'interazione con l'hardware
iPhone Inizialmente un solo device con un’unica configurazione hardware Con l’uscita di iPhone 3GS le cose sono iniziate a cambiare Differenza di processore e memoria disponibile = performance differenti Disponibilità di sensori diversi Gli sviluppatori hanno iniziato a dover riconoscere il tipo di device su cui girano le applicazioni e, in alcuni casi, a tagliare fuori alcuni device.
iPhone 2G e 3G Accelerometro GPS Bluetooth Fotocamere da 2 MP CPU 620 MHz (underclocked to 412 MHz) GPU PowerVR MBX Lite 3D GPU RAM 128 MB DRAM
iPhone 3GS Accelerometro GPS Bluetooth Fotocamera da 3 MP Bussola CPU 833 MHz (underclocked to 600 MHz) ARM Cortex GPU PowerVR SGX535 256 MB DRAM
iPhone 4 Accelerometro GPS Bluetooth Fotocamera da 5 MP con Flash Bussola Giroscopio CPU ARM Cortex-A8 Apple A4 GPU PowerVR SGX535 512 MB DRAM Retina Display
Windows Phone 7 Microsoft, al contrario di Apple, non sviluppa direttamente l’hardware Windows Phone 7 gira su device differenti di produttori diversi Microsoft ha fornito ai vendor delle caratteristiche hardware minime da rispettare, sia come potenza che come sensori disponibili Quello che può variare sono le performance, non le funzionalità supportate dalle nostre applicazioni
Le caratteristiche hardware Multitouch capacitivo con 4 punti di contatto Sensori: A-GPS, Accelerometro, Bussola (non utilizzabile dagli sviluppatori), Luce, Prossimità Bluetooth (non utilizzabile dagli sviluppatori) Fotocamera: 5 MP con Flash Schermo: WVGA (480x800) al lancio, GPU: accelerazione DirectX 9 Memoria: 256 MB Ram Storage: 8 GB CPU: ARMv7 Cortex / Scorpion da 1GHz
Android Molti tipi di device supportati: smartphone, tablet, setup-box, netbook, hardware specifico. API a supporto di: accelerometro, giroscopio, luce, campo magnetico, temperatura, pressione, prossimita' Posso montare Android sul mio hardware e creare i driver necessari per supportarlo (kernel GNU/Linux) Posso specificare nel Manifest dell'app quale hardware deve essere presente nel dispositivo e il Market lo usa come filtro Grande flessibilita' della piattaforma, problemi di frammentarieta'
Memorizzare i dati
iPhone File Plist (simili ai file XML, ma nativamente supportati da Cocoa tramite una serie di classi dedicate che ne facilitano il parsing). SQL Lite Managed Object: si tratta di una sorta di ORM, che permette di memorizzare dati in un database lavorando però ad alto livello con classi e oggetti. Scarsa apertura ai servizi: non esistono librerie integrate per l’interfacciamento con web services
Windows Phone 7 Isolated Storage: ogni applicazione ha a disposizione uno spazio di storage privato, a cui le altre applicazioni non possono accedere. Si tratta di un normale file system con dimensione massima di 2 GB. File XML (con supporto a LINQ to XML) IsolatedStorageSettings per memorizzare le impostazioni Pieno supporto ai servizi web / WCF Sono disponibili database di terze parti, come Ninja DB e SQL Lite, che permettono di gestire database sconnessi salvati su un singolo file nell’Isolated Storage. In roadmap c’è una versione di SQL CE compatibile con Windows Phone, ma non c’è ancora una data di rilascio.
Android Shared Preferences : valori primitivi in key-value. Internal Storage : file privati all'app nella memoria del device o in memoria esterna External Storage : file pubblici nella memoria esterna SQLite Databases : dati relazionali memorizzati in un database privato, acesso SQL. Content Provider : dati pubblici accessibili per mezzo di un provider (Contatti, Calendario ecc)
Distribuzione delle applicazioni
App Store Pagamento di una quota annuale di 99$ per pubblicare applicazioni Submit illimitato di applicazioni gratuite e a pagamento, sia per iPhone che per iPad Possibilità di registrare fino a 100 device per lo sviluppo Processo di certificazione tecnica e dei contenuti da superare per la pubblicazione Le applicazioni sono firmate con un certificato digitale: l’operazione è a carico dello sviluppatore. Possibilità per il business limitate: il programma per la distribuzione ad hoc all’interno di un’azienda è disponibile solo per quelle dai 500 dipendenti in su, altrimenti bisogna utilizzare un account dev tradizionale (niente aggiornamenti distribuiti).
Marketplace Pagamento di una quota annuale di 79€ per pubblicare applicazioni Submit illimitato di applicazioni a pagamento, massimo 5 applicazioni gratuite poi costo di 20$ per applicazione Possibilità di registrare fino a 3 device per lo sviluppo Processo di certificazione tecnica e dei contenuti da superare per la pubblicazione Le applicazioni sono firmate con un certificato digitale: l’operazione è a carico di Microsoft Unico App Hub per la gestione delle applicazioni Windows Phone e Xbox Live. Il target iniziale di Windows Phone 7 è consumer: il Marketplace non prevede perciò gli scenari tipici del mondo business
Android Market Market ufficiale dei device Android, gestito da Google. Le applicazioni sono disponibili non appena vengono pubblicate, senza processi di approvazione Non ci sono limiti al numero di applicazioni pubblicabili Fee one-time di $25 per pubblicare applicazioni Revenue 70/30 Si possono filtrare le applicazioni per tipo di device, lingua, stato Non e' l'unico market disponibile : ce ne sono per produttori di device, di generalisti alternativi, per adulti e per molte altre esigenze specifiche
Nokia OVI Market ufficiale dei device Nokia, gestito da Nokia stessa. Le applicazioni sono disponibili dopo l'approvazione. Fee one-time di 1€ Revenue 70/30

Mobile platforms development overview

  • 1.
    Future platforms: iPhone,Android, Windows Phone, Nokia, Blackberry Lo sviluppo di applicazioni mobili: linguaggi, strumenti e potenzialità Twitter @qmatteoq Blog http://qmatteoq.tostring.it E-mail [email_address] Matteo Pagani Alfredo Morresi Twitter @rainbowbreeze Blog http://www.rainbowbreeze.it E-mail [email_address] Mobile Software Engineers
  • 2.
  • 3.
    iPhone Objective-C Linguaggiodi programmazione derivato da C. E’ il linguaggio nativo delle applicazioni per Mac e iOS. In certi aspetti, ha una sintassi molto diversa dagli altri linguaggi di programmazione. Attualmente alla versione 2.0 del linguaggio. La miglior piattaforma mobile per l'accessibilita'.
  • 4.
    La curva diapprendimento Piuttosto ripida E’ un linguaggio per certi versi molto diverso da Java e C# A meno che non si abbia già esperienza di Objective-C, realizzare una semplice applicazione per la prima volta richiede molto tempo. Richiede allo sviluppatore di usare metodologie di lavoro ben precise, anche per lo sviluppo di piccole applicazioni
  • 5.
    Windows Phone 7C# è il linguaggio nativo per lo sviluppo delle applicazioni Windows Phone 7 Da meno di un mese è stata rilasciata la CTP dei tool di sviluppo per VB.NET Attualmente alla release 4.0, si evolve assieme al framework .NET
  • 6.
    La curva diapprendimento Molto dolce Fondamentalmente è C#, quindi se si è già programmatori .NET o Java è molto semplice da capire Si può lavorare a diversi livelli e con diversi pattern (logica nel code behind, MVVM, ecc), a seconda delle esigenze Poco tempo necessario per imparare ad utilizzare le funzioni più comuni (ad esempio, si può realizzare un lettore RSS in due ore partendo da zero).
  • 7.
    Android Java 1.5,C/C++ Activity, Service, Broacast Receiver, Content Provider Intent Filters Porting librerie gia' esistenti XML per la grafica e l'animazione Risorse parametrizzabili Library project Junit e AndroidTestCase OpenGL Screen density/orientation
  • 8.
    Nokia C'era unavolta Symbian S40 ed S60: J2ME, C++ :°( Poi venne QT: Symbian S60, Windows CE, Maemo, Symbian^3, Linux X11, Windows, Mac OS. Android (unofficial) Si sviluppa in C++ QT Mobility API: contatti, location, multimedia Prossima release QT 4.8 (Q2 2011) In: QT Mobility API 1.1, QT Quick (QML), supporto MeeGo Out: supporto Windows CE, S60, Maemo 5
  • 9.
    BlackBerry Si sviluppain J2ME con supporto a: Connected Limited Device Configuration (CLDC) 1.1 Mobile Information Device Profile (MIDP) 2.0 RIM UI Library per keyboard, trackball e touchscreen
  • 10.
    MonoTouch allows developersto create C# and .NET based applications that run on Apple's iPhone, iPad, and iPod, reusing both code and libraries that have been built for .NET. MonoTouch e MonoDroid
  • 11.
    MonoDroid is adevelopment stack for using C# and core .NET APIs to develop Android-based applications. MonoTouch e MonoDroid
  • 12.
    PhoneGap The PhoneGapmission is to Web-enable native device functionality with open standards like HTML, CSS and JavaScript so that you can focus on the app you're building, not on authoring complex platform compatibility layers.
  • 13.
    Appcelerator Titanium MobileHTML, Javascript, [PHP, Ruby & Python for Desktop apps]
  • 14.
  • 15.
    iPhone XCode peril codice e la logica dell’applicazione Interface Builder per l’interfaccia grafica Versione attuale: 3.2 Versione in preview per gli sviluppatori: 4 Versioni stable gratuite, versioni beta disponibili solo per chi è iscritto all’iPhone Developer Program.
  • 16.
  • 17.
  • 18.
  • 19.
    Windows Phone 7Visual Studio 2010 per la logica e la UI Blend per la UI e rivolto ai designer I tool di sviluppo, usciti 6 mesi dopo il rilascio di Visual Studio, vengono distribiuti a parte in maniera gratuita Completamente gratuito (se non si possiedono Visual Studio e Blend, viene installata la versione Express)
  • 20.
  • 21.
  • 22.
  • 23.
    Android Eclipse +Android plugin -> ufficialmente supportato da Google NetBeans o altro editor preferito Multipiattaforma (Lin / Win / Mac) Google App Inventor – http://appinventor.googlelabs.com
  • 24.
  • 25.
    Emulatore (e nonsolo) Mock per GPS, chiamate, batteria, SMS ecc... Si installa Android e si prova su altro hardware
  • 26.
    Lot of Freesoftware inside, powered by MIT ;) Google App Inventor
  • 27.
    Nokia QT CreatorMultipiattaforma (Lin / Win / Mac), ma no Mac per Maemo
  • 28.
  • 29.
  • 30.
    Blackberry BlackBerry JavaDevelopment Environment aka JDE (Windows) Eclipse plugin (Windows) BlackBerry Smartphone Themes and Animated Graphics - crea SVG, importando anche da Adobe Flash e Photoshop BlackBerry Web Plug-in per Visual Studio ed Eclipse – crea browser based app e widget, con debug e deploy
  • 31.
  • 32.
  • 33.
    iPhone CocoaTouch E’l’ambiente di programmazione per iOS Fortemente basato sul pattern MVC Definisce tutte le classi e gli oggetti per lavorare ad alto livello Si occupa della gestione della memoria (assente su iOS) Composto da Foundation Kit (libreria generica per lavorare ad oggetti) e App Kit (per l’interazione con la UI) Rispetto a Cocoa, supporta gli oggetti specifici per iOS (sensori, gestione del touch screen, ecc.) Le classi hanno prefisso NS (da NextStep, ambiente di programmazione creato dalla società omonima poi acquisita da Apple).
  • 34.
    Windows Phone 7Silverlight Ambiente di sviluppo ad alto livello Separazione dei ruoli tra developer e designer. L’interfaccia grafica è definita dallo XAML, un linguaggio di markup estremamente potente. Stessa architettura delle applicazioni Silverlight per il web, con alcune caratteristiche esclusive del device. Attualmente basato sulla release 3 di Silverlight
  • 35.
    Android E' comesviluppare un'applicazione Java, con qualche accortezza Tutta la UI e' gestita per mezzo di file XML o via codice Supporto nativo alla localizzazione, diverse risoluzioni schermo e orientamento del device E' possibile usare librerie esterne e progetti libreria Supporto ai test automatici per la Business Logic e per la UI
  • 36.
  • 37.
    iPhone UIKit ,per la gestione della grafica bidimensionale . OpenGL ES (subset di OpenGL per i device mobile) Open AL per la parte audio Grazie al supporto a Objective-C++, è possibile utilizzare per lo sviluppo di giochi per iOS librerie scritte in C++ Non c’è uno standard unico , ma diverse librerie e framework (Cocos2D ) Game Center Novità di iOS 4.1 Disponibile su iPhone 3GS e iPhone 4 I giochi si possono interfacciare per integrare achievements e multiplayer
  • 38.
    Windows Phone 7XNA è l’ambiente di sviluppo dedicato ai videogiochi A differenza di Silverlight, supporta il 3D e permette di accedere ai dati «grezzi» del telefono (ad esempio, la pressione dello schermo) E’ lo stesso linguaggio utilizzato per lo sviluppo di giochi Xbox Visual Studio permette di gestire agevolmente il deploy dello stesso gioco su più piattaforme diverse (PC, Xbox, Windows Phone), mantenendo sincronizzate le classi comuni. Integrazione con Xbox Live
  • 39.
    Android Nessun supportoparticolare alla grafica 2D avanzata Occorre ricorrere al C++ per le performance API Open GL ES (per device mobili) Scarseggiano le librerie di supporto (Rokon) Frammentarieta' delle caratteristiche hw/schermo della piattaforma rendono impegnativo uno sviluppo diffuso
  • 40.
    Framework specializzati Unity3D,supporta iPhone, iPad e Android (in beta nella nuova release)
  • 41.
    Il device el'interazione con l'hardware
  • 42.
    iPhone Inizialmente unsolo device con un’unica configurazione hardware Con l’uscita di iPhone 3GS le cose sono iniziate a cambiare Differenza di processore e memoria disponibile = performance differenti Disponibilità di sensori diversi Gli sviluppatori hanno iniziato a dover riconoscere il tipo di device su cui girano le applicazioni e, in alcuni casi, a tagliare fuori alcuni device.
  • 43.
    iPhone 2G e3G Accelerometro GPS Bluetooth Fotocamere da 2 MP CPU 620 MHz (underclocked to 412 MHz) GPU PowerVR MBX Lite 3D GPU RAM 128 MB DRAM
  • 44.
    iPhone 3GS AccelerometroGPS Bluetooth Fotocamera da 3 MP Bussola CPU 833 MHz (underclocked to 600 MHz) ARM Cortex GPU PowerVR SGX535 256 MB DRAM
  • 45.
    iPhone 4 AccelerometroGPS Bluetooth Fotocamera da 5 MP con Flash Bussola Giroscopio CPU ARM Cortex-A8 Apple A4 GPU PowerVR SGX535 512 MB DRAM Retina Display
  • 46.
    Windows Phone 7Microsoft, al contrario di Apple, non sviluppa direttamente l’hardware Windows Phone 7 gira su device differenti di produttori diversi Microsoft ha fornito ai vendor delle caratteristiche hardware minime da rispettare, sia come potenza che come sensori disponibili Quello che può variare sono le performance, non le funzionalità supportate dalle nostre applicazioni
  • 47.
    Le caratteristiche hardwareMultitouch capacitivo con 4 punti di contatto Sensori: A-GPS, Accelerometro, Bussola (non utilizzabile dagli sviluppatori), Luce, Prossimità Bluetooth (non utilizzabile dagli sviluppatori) Fotocamera: 5 MP con Flash Schermo: WVGA (480x800) al lancio, GPU: accelerazione DirectX 9 Memoria: 256 MB Ram Storage: 8 GB CPU: ARMv7 Cortex / Scorpion da 1GHz
  • 48.
    Android Molti tipidi device supportati: smartphone, tablet, setup-box, netbook, hardware specifico. API a supporto di: accelerometro, giroscopio, luce, campo magnetico, temperatura, pressione, prossimita' Posso montare Android sul mio hardware e creare i driver necessari per supportarlo (kernel GNU/Linux) Posso specificare nel Manifest dell'app quale hardware deve essere presente nel dispositivo e il Market lo usa come filtro Grande flessibilita' della piattaforma, problemi di frammentarieta'
  • 49.
  • 50.
    iPhone File Plist(simili ai file XML, ma nativamente supportati da Cocoa tramite una serie di classi dedicate che ne facilitano il parsing). SQL Lite Managed Object: si tratta di una sorta di ORM, che permette di memorizzare dati in un database lavorando però ad alto livello con classi e oggetti. Scarsa apertura ai servizi: non esistono librerie integrate per l’interfacciamento con web services
  • 51.
    Windows Phone 7Isolated Storage: ogni applicazione ha a disposizione uno spazio di storage privato, a cui le altre applicazioni non possono accedere. Si tratta di un normale file system con dimensione massima di 2 GB. File XML (con supporto a LINQ to XML) IsolatedStorageSettings per memorizzare le impostazioni Pieno supporto ai servizi web / WCF Sono disponibili database di terze parti, come Ninja DB e SQL Lite, che permettono di gestire database sconnessi salvati su un singolo file nell’Isolated Storage. In roadmap c’è una versione di SQL CE compatibile con Windows Phone, ma non c’è ancora una data di rilascio.
  • 52.
    Android Shared Preferences: valori primitivi in key-value. Internal Storage : file privati all'app nella memoria del device o in memoria esterna External Storage : file pubblici nella memoria esterna SQLite Databases : dati relazionali memorizzati in un database privato, acesso SQL. Content Provider : dati pubblici accessibili per mezzo di un provider (Contatti, Calendario ecc)
  • 53.
  • 54.
    App Store Pagamentodi una quota annuale di 99$ per pubblicare applicazioni Submit illimitato di applicazioni gratuite e a pagamento, sia per iPhone che per iPad Possibilità di registrare fino a 100 device per lo sviluppo Processo di certificazione tecnica e dei contenuti da superare per la pubblicazione Le applicazioni sono firmate con un certificato digitale: l’operazione è a carico dello sviluppatore. Possibilità per il business limitate: il programma per la distribuzione ad hoc all’interno di un’azienda è disponibile solo per quelle dai 500 dipendenti in su, altrimenti bisogna utilizzare un account dev tradizionale (niente aggiornamenti distribuiti).
  • 55.
    Marketplace Pagamento diuna quota annuale di 79€ per pubblicare applicazioni Submit illimitato di applicazioni a pagamento, massimo 5 applicazioni gratuite poi costo di 20$ per applicazione Possibilità di registrare fino a 3 device per lo sviluppo Processo di certificazione tecnica e dei contenuti da superare per la pubblicazione Le applicazioni sono firmate con un certificato digitale: l’operazione è a carico di Microsoft Unico App Hub per la gestione delle applicazioni Windows Phone e Xbox Live. Il target iniziale di Windows Phone 7 è consumer: il Marketplace non prevede perciò gli scenari tipici del mondo business
  • 56.
    Android Market Marketufficiale dei device Android, gestito da Google. Le applicazioni sono disponibili non appena vengono pubblicate, senza processi di approvazione Non ci sono limiti al numero di applicazioni pubblicabili Fee one-time di $25 per pubblicare applicazioni Revenue 70/30 Si possono filtrare le applicazioni per tipo di device, lingua, stato Non e' l'unico market disponibile : ce ne sono per produttori di device, di generalisti alternativi, per adulti e per molte altre esigenze specifiche
  • 57.
    Nokia OVI Marketufficiale dei device Nokia, gestito da Nokia stessa. Le applicazioni sono disponibili dopo l'approvazione. Fee one-time di 1€ Revenue 70/30

Editor's Notes

  • #6 C# è il linguaggio di sviluppo «ufficiale» di WP7: meno di un mese fa è stato introdotto il supporto a VB.NET, ma per ora è ancora in versione CTP. Non è ancora possibile perciò fare il submit sul Marketplace di applicazioni sviluppate in VB.NET. E’ un linguaggio ad alto livello, giunto attualmente alla release 4.0.
  • #8 Visual Studio 2010 è l’ambiente di sviluppo per le applicazioni WP7: il focus è sulla logica e sul codice, ma integra anche gli strumenti per la UI. Blend invece è lo strumento dedicato ai designer per la creazione delle UI.
  • #9 Visual Studio 2010 è l’ambiente di sviluppo per le applicazioni WP7: il focus è sulla logica e sul codice, ma integra anche gli strumenti per la UI. Blend invece è lo strumento dedicato ai designer per la creazione delle UI.
  • #11 Visual Studio 2010 è l’ambiente di sviluppo per le applicazioni WP7: il focus è sulla logica e sul codice, ma integra anche gli strumenti per la UI. Blend invece è lo strumento dedicato ai designer per la creazione delle UI.
  • #12 Visual Studio 2010 è l’ambiente di sviluppo per le applicazioni WP7: il focus è sulla logica e sul codice, ma integra anche gli strumenti per la UI. Blend invece è lo strumento dedicato ai designer per la creazione delle UI.
  • #16 Xcode è l’ambiente di sviluppo ufficiale per quanto riguarda il mondo iPhone e iPad. Consta di una serie di strumenti e applicazioni separati: oltre a tool di profiling, i due programmi principali sono Xcode (per la scrittura di codice e la parte di logica di un’applicazione) e Interface Builder (per la progettazione delle interfacce grafiche). La versione attuale è la 3.2.4, che permette di compilare applicazioni fino ad iOS 4.1 ed è disponibile gratuitamente, previa registrazione all’iPhone Developer Program (anche con un account gratuito). Esistono poi due versioni beta, riservate a chi ha un account a pagamento (quello che permette di pubblicare applicazioni sull’App Store): la 3.2.5 (che permette di compilare applicazioni per iOS di 4.2 di prossima uscita) e la 4, che è la prossima major release dell’IDE che introduce sostanziose novità (come l’integrazione di Interface Builder in Xcode).
  • #17 La struttura di un progetto iPhone è grossomodo la seguente: I file .h identificano l’interfaccia di una classe: definisce le proprietà e i metodi che saranno implementate. I file .m identificano la classe vera e propria: definisce la logica dei metodi e implementa i vari delegate che servono per interfacciarsi con il device. I file .xib identificano l’interfaccia grafica di una classe e sono prodotti da Interface Builder.
  • #18 Interface Builder permette di inserire i vari controlli all’interno dell’interfaccia grafica, che però sono concettualmente separati dal codice. Il collegamento tra oggetti nell’interfaccia e la relativa definizione nel codice non è automatico: va opportunamente impostato tramite la definizione di outlet (gli elementi nell’interfaccia) e actions (i metodi che si scatenano in seguito all’interazione con l’interfaccia grafica).
  • #19 L’emulatore consente di testare applicazioni con un device reale: Contiene un set minimo di applicazioni (Contacts, Safari, Pictures, Settings) Permette di simulare la rotazione del device e alcune gestures (ad esempio zoom) Non è possibile testare accelerometro, GPS e, in generale, tutti i sensori del device
  • #20 Visual Studio 2010 è l’ambiente di sviluppo per le applicazioni WP7: il focus è sulla logica e sul codice, ma integra anche gli strumenti per la UI. Blend invece è lo strumento dedicato ai designer per la creazione delle UI.
  • #21 Un progetto Windows Phone è caratterizzato dai file XAML, che corrispondono alle varie view della nostra applicazione. Ad ogni XAML corrisponde un file di code-behind, che è il codice che gestisce la view: gli eventi, le proprietà, i metodi. Sono supportati però anche approcci (come MVVM) che permettono di avere una completa separazione tra logica e interfaccia grafica.
  • #22 Lo XAML è un linguaggio di markup che permette la definizione dell’interfaccia grafica: Blend permette di farlo in maniera visuale e offre supporto a molte feature che facilitano la vita del designer (importazione di file grafici dai prodotti Adobe, generazione di dati fittizzi, ecc.)
  • #23 L’emulatore di WP7 non è un emulatore ma una vera e propria virtual machine: il vantaggio è che in questo modo l’emulatore può direttamente interfacciarsi con l’hardware del proprio computer (ad esempio, il microfono per la registrazione vocale, un monitor multitouch per simulare lo schermo, ecc.). Lo svantaggio è che non è possibile utilizzarlo in un ambiente virtuale.
  • #24 Visual Studio 2010 è l’ambiente di sviluppo per le applicazioni WP7: il focus è sulla logica e sul codice, ma integra anche gli strumenti per la UI. Blend invece è lo strumento dedicato ai designer per la creazione delle UI.
  • #25 Visual Studio 2010 è l’ambiente di sviluppo per le applicazioni WP7: il focus è sulla logica e sul codice, ma integra anche gli strumenti per la UI. Blend invece è lo strumento dedicato ai designer per la creazione delle UI.
  • #26 Visual Studio 2010 è l’ambiente di sviluppo per le applicazioni WP7: il focus è sulla logica e sul codice, ma integra anche gli strumenti per la UI. Blend invece è lo strumento dedicato ai designer per la creazione delle UI.
  • #28 Visual Studio 2010 è l’ambiente di sviluppo per le applicazioni WP7: il focus è sulla logica e sul codice, ma integra anche gli strumenti per la UI. Blend invece è lo strumento dedicato ai designer per la creazione delle UI.
  • #31 Visual Studio 2010 è l’ambiente di sviluppo per le applicazioni WP7: il focus è sulla logica e sul codice, ma integra anche gli strumenti per la UI. Blend invece è lo strumento dedicato ai designer per la creazione delle UI.
  • #34 CocoaTouch, un derivato di Cocoa, è l’ambiente utilizzato per la programazione di iOS e fornisce accesso a tutta una serie di classi e oggetti per lavorare ad alto livello e manipolare stringhe, oggetti e quan’altro. CocoaTouch introduce, rispetto a Cocoa, il supporto a tutti gli oggetti e i delegate legati al device: utilizzo dei sensori, gestione delle gestures, ecc. Cocoa si occupa della gestione della memoria, anche se purtroppo questo aspetto è assente su iOS: non esiste garbage collector, è nostro incarico gestire l’allocazione e la deallocazione degli oggetti che usiamo. Si tratta di uno dei punti più «critici» nello sviluppo di apps per iOS: non è banale infatti maneggiarlo (soprattutto se arrivate da ambienti come .NET dove viene tutto gestito in automatico dal garbage collector), ma è indispensabile farlo per realizzare applicazioni performanti e che, soprattutto, non vadano in crash.
  • #35 Silvelright è un ambiente di sviluppo ad alto livello, che rispetto ad altri linguaggi (anche di Microsoft stessa) permette una netta distinizione tra i ruoli di developer e designer, in particolar modo se si adotta un pattern come MVVM. L’interfaccia grafica è definitia dallo XAML, che è un linguaggio di markup molto potente e permette non solo di definire come visualizzare i dati ma anche quali sono i dati da mostrare (binding). Silverlight per Windows Phone è basato su Silverlight 3 e offre le stesse feature della versione dedicata al mondo web: Windows Phone ha in più alcune feature esclusive legate al device, come la gestione dei sensori o del ciclo di vita di un’applicazione.
  • #39 XNA è un ambiente per lo sviluppo dedicato ai videogiochi che si appoggia alle DirectX come librerie grafiche. E’ lo stesso ambiente utilizzato per lo sviluppo di giochi Xbox: Visual Studio permette di definire più target per lo stesso progetto, creando dei duplicati che vengono mantenuti in sincrono. Per uno sviluppatore Xbox è facile fare il porting dei proprio giochi su Windows Phone: l’unica parte da adattare è quella degli input di controllo, che variano da tastiera su PC al joypad su Xbox al touch screen su WP7. Windows Phone 7 integra Xbox Live, permettendo di condividere avatar, achievements e multiplayer con la console «maggiore».
  • #43 Fino ad iPhone 3G lo sviluppo di applicazioni per iOS poteva contare su un unico ambiente di test: le caratteristiche hardware erano infatti le medesime, unica differenza era l’estetica e il supporto alla connettività 3G. Le cose sono cambiate con l’uscita di iPhone 3GS e iPhone 4, che hanno introdotto nuovi sensori e differenze nel processore e nella RAM disponibile.