If you can't read please download the document
Upload
alfredo-morresi
View
1.164
Download
1
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