Mobile platforms development overview

Embed Size (px)

Citation preview

PowerPoint Presentation

Future platforms: iPhone, Android, Windows Phone, Nokia, BlackberryLo sviluppo di applicazioni mobili: linguaggi, strumenti e potenzialit

Twitter@qmatteoqBloghttp://[email protected] PaganiAlfredo MorresiTwitter@rainbowbreezeBloghttp://[email protected] 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

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.

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).

AndroidJava 1.5, C/C++Activity, Service, Broacast Receiver, Content ProviderIntent FiltersPorting librerie gia' esistentiXML per la grafica e l'animazioneRisorse parametrizzabiliLibrary projectJunit e AndroidTestCaseOpenGLScreen density/orientationVisual Studio 2010 lambiente 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.

NokiaC'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

Visual Studio 2010 lambiente 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.

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 e MonoDroidMonoTouch allows developers to create C# and .NET based applications that run on Apple's iPhone, iPad, and iPod, reusing both code and librariesthat have been built for .NET.

Visual Studio 2010 lambiente 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.

MonoTouch e MonoDroidMonoDroid is a development stack for using C# and core .NET APIsto develop Android-based applications.

Visual Studio 2010 lambiente 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.

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 dellapplicazione

Interface Builder per linterfaccia grafica

Versione attuale: 3.2

Versione in preview per gli sviluppatori: 4

Versioni stable gratuite, versioni beta disponibili solo per chi iscritto alliPhone Developer Program.

Xcode lambiente 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 unapplicazione) 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 alliPhone 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 sullApp 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 dellIDE che introduce sostanziose novit (come lintegrazione di Interface Builder in Xcode).

XCode

La struttura di un progetto iPhone grossomodo la seguente:I file .h identificano linterfaccia 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 linterfaccia grafica di una classe e sono prodotti da Interface Builder.

Interface Builder

Interface Builder permette di inserire i vari controlli allinterno dellinterfaccia grafica, che per sono concettualmente separati dal codice. Il collegamento tra oggetti nellinterfaccia e la relativa definizione nel codice non automatico: va opportunamente impostato tramite la definizione di outlet (gli elementi nellinterfaccia) e actions (i metodi che si scatenano in seguito allinterazione con linterfaccia grafica).

Lemulatore

Lemulatore 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

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 lambiente 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

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.

Blend

Lo XAML un linguaggio di markup che permette la definizione dellinterfaccia 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.)

Lemulatore

Lemulatore di WP7 non un emulatore ma una vera e propria virtual machine: il vantaggio che in questo modo lemulatore pu direttamente interfacciarsi con lhardware 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.

AndroidEclipse + Android plugin ufficialmente supportato da GoogleNetBeans o altro editor preferitoMultipiattaforma (Lin / Win / Mac)Google App Inventor http://appinventor.googlelabs.com

Visual Studio 2010 lambiente 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.

IDE - EclipseVisual Studio 2010 lambiente 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.

Emulatore (e non solo)Mock per GPS, chiamate, batteria, SMS ecc...Si installa Android e si prova su altro hardwareVisual Studio 2010 lambiente 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.

Google App InventorLot of Free software inside, powered by MIT ;)

NokiaQT CreatorMultipiattaforma (Lin / Win / Mac), ma no Mac per Maemo

Visual Studio 2010 lambiente 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.

QT Creator

Qt Simulator

BlackberryBlackBerry 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 deployVisual Studio 2010 lambiente 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.

BlackBerry

Sviluppo di applicazioni tradizionali

iPhone

CocoaTouch

E lambiente 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 linterazione 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).

CocoaTouch, un derivato di Cocoa, lambiente 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 quanaltro. 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 lallocazione 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.

Windows Phone 7

Silverlight

Ambiente di sviluppo ad alto livello

Separazione dei ruoli tra developer e designer.

Linterfaccia 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

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.

Linterfaccia 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 unapplicazione.

Android

E' come sviluppare un'applicazione Java, con qualche accortezzaTutta la UI e' gestita per mezzo di file XML o via codiceSupporto nativo alla localizzazione, diverse risoluzioni schermo e orientamento del deviceE' possibile usare librerie esterne e progetti libreriaSupporto 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 lambiente 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

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: lunica 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.

Android

Nessun supporto particolare alla grafica 2D avanzataOccorre ricorrere al C++ per le performanceAPI 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 ununica configurazione hardware

Con luscita 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.

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 lestetica e il supporto alla connettivit 3G.Le cose sono cambiate con luscita di iPhone 3GS e iPhone 4, che hanno introdotto nuovi sensori e differenze nel processore e nella RAM disponibile.

iPhone 2G e 3G

Accelerometro

GPS

Bluetooth

Fotocamere da 2 MP

CPU 620MHz (underclocked to 412MHz)

GPU PowerVR MBX Lite 3D GPU

RAM 128MB 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 lhardware

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 filtroGrande 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 linterfacciamento 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 nellIsolated 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 esternaExternal Storage: file pubblici nella memoria esternaSQLite 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: loperazione a carico dello sviluppatore.

Possibilit per il business limitate: il programma per la distribuzione ad hoc allinterno di unazienda 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: loperazione 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 approvazioneNon ci sono limiti al numero di applicazioni pubblicabiliFee one-time di $25 per pubblicare applicazioniRevenue 70/30Si 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 1Revenue 70/30

Click to edit Master text styles

Second level

Third level

Fourth level

Fifth level

Click to edit Master title style

Click to edit Master subtitle style

Click to edit Master title style

Click to edit Master text styles

Second level

Third level

Fourth level

Fifth level

Click to edit Master title style

Click to edit Master text styles

Click to edit Master title style

Click to edit Master text styles

Second level

Third level

Fourth level

Fifth level

Click to edit Master text styles

Second level

Third level

Fourth level

Fifth level

Click to edit Master title style

Click to edit Master text styles

Click to edit Master text styles

Second level

Third level

Fourth level

Fifth level

Click to edit Master text styles

Click to edit Master text styles

Second level

Third level

Fourth level

Fifth level

Click to edit Master title style

Click to edit Master title style

Click to edit Master text styles

Second level

Third level

Fourth level

Fifth level

Click to edit Master text styles

Click to edit Master title style

Click to edit Master text styles

Click to edit Master title style

Click to edit Master text styles

Second level

Third level

Fourth level

Fifth level

Click to edit Master title style

Click to edit Master text styles

Second level

Third level

Fourth level

Fifth level

Click to edit Master text styles

Second level

Third level

Fourth level

Fifth level

Click to edit Master title style

Click to edit Master subtitle style

Click to edit Master title style

Click to edit Master text styles

Second level

Third level

Fourth level

Fifth level

Click to edit Master title style

Click to edit Master text styles

Click to edit Master title style

Click to edit Master text styles

Second level

Third level

Fourth level

Fifth level

Click to edit Master text styles

Second level

Third level

Fourth level

Fifth level

Click to edit Master title style

Click to edit Master text styles

Click to edit Master text styles

Second level

Third level

Fourth level

Fifth level

Click to edit Master text styles

Click to edit Master text styles

Second level

Third level

Fourth level

Fifth level

Click to edit Master title style

Click to edit Master title style

Click to edit Master text styles

Second level

Third level

Fourth level

Fifth level

Click to edit Master text styles

Click to edit Master title style

Click to edit Master text styles

Click to edit Master title style

Click to edit Master text styles

Second level

Third level

Fourth level

Fifth level

Click to edit Master title style

Click to edit Master text styles

Second level

Third level

Fourth level

Fifth level