Una carrellata sugli strumenti di sviluppo per le principali piattaforme mobile: Android, iPhone, Windows Phone 7, Symbian e Blackberry.
Le principali caratteristiche, IDE, tool crossplatform e application store.
WhyMCA HappyHour
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
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 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
9. 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
10. 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
11. MonoDroid is a development stack for using C# and core .NET APIs to develop Android-based applications. MonoTouch e MonoDroid
12. 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.
30. 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
35. 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
39. 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
48. 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'
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)
56. 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
57. 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
Notes de l'éditeur
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.
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.
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.
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.
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.
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).
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.
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).
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
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.
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.
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.)
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.
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.
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.
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.
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.
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.
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.
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.
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».
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.