posts - 644, comments - 2003, trackbacks - 137

My Links

News

Raffaele Rialdi website

Su questo sito si trovano i miei articoli, esempi, snippet, tools, etc.

Archives

Post Categories

Image Galleries

Blogs

Links

L'ardua scelta dei tool per sviluppare su smartphone e tablet

La prima premessa scontata di questo post è che sono un grandissimo fan di tutto lo sviluppo marcato Microsoft. Ho scatole storiche come il compilatore C 5.1 per DOS, QuickC, VC++ 1.0, Developer Studio, la Visual C++ subscription che fu, di fatto, la vera prima versione dell'abbonamento MSDN.

Non c'è dubbio che se il vostro target è quello di sviluppare per l'ambiente Microsoft, disponete dei tool più "cool" e, oltre a lavorare, riuscirete anche a divertirvi, perlomeno è quello che io e i miei collaboratori facciamo quotidianamente su PC.

Fino a pochi anni fa MS non solo aveva il sistema operativo più diffuso, Windows, ma anche la fetta di mercato prevalente del mercato mobile. La situazione di oggi è chiara a tutti e WP7 sta piano piano tornando nel mercato.

Come sviluppatore guardo a cosa ci offrono i vari vendor Apple, Android, BlackBerry, Nokia e Microsoft e senza dubbio, ancora una volta (come peraltro ho sempre sostenuto) lo sviluppo per Windows Phone è senza dubbio quello più agevole e "comodo".

C'è però un problema, della nostra comodità non importa a nessuno. Io ho sempre sviluppato per Windows certamente non solo perché aveva degli strumenti di sviluppo belli e geek ma perché Windows è il sistema operativo leader e quindi le mie applicazioni sono più fruibili rispetto a quelle sviluppate per tutto il resto. A quanto leggo su internet WP7 ha una fetta di mercato del 5.6% e quindi se devo sviluppare per il mercato mobile devo prima considerare gli altri device.

Devo aprire una parentesi ri-spiegando perché non sono un fan sfegatato di WP7: 1. è un prodotto a se stante invece di essere parte della "platform" (che è da sempre la mossa vincente di Microsoft). 2. perché avrei voluto, sempre in chiave platform, vedere dentro WP7 il kernel di Windows full e non, ancora, un derivato di Windows CE, come già scrissi tempo fa. Il secondo punto, a quanto si mormora, sembra diventerà finalmente realtà. Ancora una volta tutto questo, per noi sviluppatori, importa poco o niente. Non siamo noi a decidere dove sviluppare ma è il mercato a chiederti applicazioni per l'uno o l'altro device.

La seconda premessa (scontata anche questa) è che sono un super-tifoso dello sviluppo xaml-based. Da sempre attendo con ansia l'unione di WPF e Silverlight, ma, nel frattempo, ho realizzato tanti progetti WPF (alcuni dei quali sono un vero orgoglio per me) e altrettanti sono in corso di sviluppo. Dire che WPF mi piaccia è assolutamente riduttivo; Silverlight è decisamente una magnifica soluzione anche se lo vedo un po' spiazzato rispetto ai trend attuali, ma pur sempre un'adorabile tecnologia su cui ho sviluppato alcune piccole cosette che mi hanno dato molta soddisfazione.

Come sviluppatore devo osservare che i recenti propositi di Microsoft per Windows 8 e le recenti tecnologie annunciate in CTP da Microsoft mi impongono di prendere atto che conoscere lo sviluppo basato su Html5 e jQuery è un passo dovuto. Sempre per lo stesso teorema di cui sopra, cioè guardare cosa impone il mercato, non si può fare a meno di osservare che gli altri vendor puntano moltissimo su Html5 e jQuery. Browser e device (cellulari, slate e tablet) sono html5 ready (ok, con qualche colpo di tosse ma per lo più le cose funzionano benone). Dopo averci lavorato parecchio in questi ultimi mesi posso affermare che html5 e jQuery consentono di realizzare interfacce complesse e che coprono la maggior parte degli scenari più comuni.

Sempre sul lato device ho sempre riposto grande fiducia in "mono for Android" e "monotouch" (oggi di Xamarin) perché mi consentono di riutilizzare le mie conoscenze di C# e di Framework.net. Sembrava la soluzione più ovvia (arrivando dal Framework.NET) per sviluppare applicazioni basate su mono con C#. Il punto vincente delle librerie è di fornire un vasto wrapper su iPhone/Android per sfruttare a fondo le singole peculiarità. D'altro canto questo vantaggio significa anche di dover gestire due differenti applicazioni per iPhone/iPad e Android e questo implica un costo di ciclo di vita di cui bisogna tenere conto.
Aggiungi ancora che tutto il codice C# deve essere ampiamente elaborato per farlo girare su WP7 e sopratutto che l'interfaccia utente è un discorso ancora più complesso.

Perciò ho rivisto la mia posizione, ho fatto un passo indietro valutando altre soluzioni e mi accorgo che PhoneGap e Titanium sono l'uovo di colombo. Lungi da me confrontarli perché non ho ancora esperienza su questi due sdk, ma entrambi sono basati sul concetto di sviluppo della UI in Html5 e un layer di astrazione che permette di usare i device e la sensoristica in modo da eseguire il porting tra iPhone, Android ed altri device in modo molto semplice (leggo così da chi l'ha già fatto). Titanium permette di creare addirittura una applicazione "quasi-nativa" in modo da ottenere migliori performance. PhoneGap invece è più web-based e, grazie all'uso congiunto (opzionale) di jQuery-Mobile permette di riciclare l'applicazione come applicazione web classica.

Questi due ultimi toolkit (ce ne sono diversi altri) mi hanno favorevolmente impressionato perché:

  • posso raggiungere più velocemente un target installato che supera abbondantemente il 60% del mercato (sono stato volutamente molto scarso)
  • posso usare gli skill di html5 che saranno preziosi anche sotto Windows 8
  • posso (almeno teoricamente) sviluppare anche per Windows Mobile 6 che nel mondo industriale c'è ancora anche se barcolla vistosamente (ma gli investimenti non si buttano velocemente)

Va da se che se ho i numeri (aka mercato) posso permettermi di realizzare tante applicazioni native quante sono le piattaforme di mercato. Costi alti ma giustificati se ho una applicazione come Angry Birds o anche un pochino meno di successo ;-)

A questo punto mi chiedo se l'SDK di Windows Phone 7 non abbia la necessità di essere riveduto e corretto. Se devo sviluppare mobile mi rivolgo prima a chi possiede lo share di mercato più alto e non credo proprio di dire nulla di folle. E se, fatto questo, voglio allargare a WP7 dovrei avere vita facile, e non cominciare un progetto da zero.

Proviamo ad applicare lo stesso ragionamento a chi ha lo share di mercato più alto nelle applicazioni PC, cioè Windows. Sullo sviluppo desktop non avrei dubbi a cominciare a sviluppare per Windows con Visual Studio una bella applicazione WPF o Silverlight, per poi cercare di salvare il salvabile utilizzando mono, moonlight o quant'altro vogliate. La prevalenza di Windows sul mercato è tale che per molte applicazioni posso anche permettermi di non fare alcun porting sugli altri OS. (Non me ne vogliano gli sviluppatori java, sul mio PC di sviluppo ho installato Eclipse, Aptana e Netbeans, ma se sviluppo per Windows e posso scegliere, la mia preferenza è per Visual Studio e il Framework.)

Per la Build Conference a cui parteciperò tra poche settimane non mi aspetto alcuna novità su questo specifico aspetto dello sviluppo ma ovviamente mi aspetto fuochi artificiali per tutto il resto.

Print | posted on lunedì 22 agosto 2011 12:31 |

Feedback

Gravatar

# re: L'ardua scelta dei tool per sviluppare su smartphone e tablet

Condivido in pieno quanto scrivi, anche se, da sviluppatore, piange il cuore quando si torna a lavorare con strumenti che, confrontati con Visual Studio, sembrano essere rimasti all'età della pietra. Quando non si parla poi di debuggare a colpi di messaggi sulla seriale (se la seriale funziona, of course).
Purtroppo, da quanto vedo, Windows Phone 7 non ha sfondato.
In Italia non ho visto un telefono WP7 che non fosse nelle mani di un dipendente microsoft o di qualche MVP. ù
"In the wild" ne ho visto solo uno in Svizzera (nelle mani comunque di un developer).
Entrare nel mercato degli smartphones non è facile per nessuno (chiedere a HP e WebOS per informazioni...).
Questo insuccesso sta trascinando con sè anche Windows CE (Embedded Compact) che negli anni passati era invece stato trascinato dal successo di Windows Mobile.
Microsoft ha puntato pesantemente sulla partnership con Nokia di cui non si vedono ancora frutti (ma dovrebbero arrivare presto), se i finlandesi non riescono a inventarsi qualche prodotto dal rapporto prezzo/prestazioni eccezionale, sarà davvero difficile recuperare il mercato degli smartphones.
La scelta di far girare Windows 8 su architetture "da smartphone" è sicuramente coraggiosa e, in questo caso, MS è la prima a farlo (Apple continua a lavorare su iOS e MacOS e Google tiene separati ChromeOS e Android, mentre RIM e gli altri "player" lavorano solo sui telefoni/tablet), ma, anche in caso di successo di Win8, WP7 sarà un prodotto nato morto (ci potrà essere un layer di compatibilità con le app attuali, visto il ridottissimo accesso alle funzioni del S.O., ma non credo basti a tenere in vita il sistema) e verrà rimpiazzato da qualcosa di molto diverso.
Su Android pende la spada di damocle dei brevetti (ma l'acquisizione di Motorola Mobility ha rafforzato la posizione di Google), ma ad oggi tutti sembrano rincorrere la mela e il robottino (che, per la verità, sui tablet non è che faccia faville, se non su device specializzati come il nook color).
Windows 8 dovrà davvero essere un prodotto stupefacente per riprendere quota anche nel settore embedded dove la quota di mercato (tutt'altro che disprezzabile) di Windows CE viene rapidissimamente erosa dalle varie versioni di Linux Embedded (anche grazie a una politica di licensing folle...) e dove Windows Embedded Standard 7 ha un buon successo ma solo sulla fascia di applicazioni "da PC" dove costi e consumo energetico non sono fattori fondamentali. Sempre, ovviamente, che a MS interessi ancora il mercato embedded.
Con Windows 8 microsoft si gioca tantissimo anche perchè (come dimostra la recente decisione di HP e quella di IBM qualche anno fa) il "PC" come lo conosciamo oggi rischia di sparire a vantaggio di terminali più compatti, semplici e manutenibili con la potenza di calcolo spostata nella "cloud".
Microsoft sembrava aver perso il treno dei sistemi operativi a 32bit (con OS/2), quello di internet (con "the Microsoft Network") e ha saputo resistere a OpenOffice e linux nel mondo server. E' presto per darla per morta, ma sicuramente Windows 8 è un prodotto fondamentale per il suo destino tanto quanto Win95 (che all'epoca non si trovava però contro la stessa concorrenza agguerrita).
Da sviluppatori, come giustamente dici tu, toccherà orientarsi dove va il grosso del mercato (o vivere "di nicchia" fino alla pensione :P), ma se questo volesse dover dire rinunciare a Visual Studio e derivati credo che ci saranno parecchi rimpianti (e parecchi anni di purgatorio accumulati nella pratica d'uso dei "nuovi" tool :P).
22/08/2011 14:13 | Valter Minute
Gravatar

# re: L'ardua scelta dei tool per sviluppare su smartphone e tablet

@Stefano. LOL :). Per quanto riguarda WP7, quando ho espresso da subito le mie perplessità sono stato guardato come il nemico invece di aprire un dibattito e cercare di capire anche il punto di vista di uno dei tanti, il sottoscritto, che vive quotidianamente in contatto con il mercato. Ho parlato anche con il team durante il teched ma sono andati dritti per la loro strada. Tutto quello che posso dire è "in bocca al lupo", sono io il primo che trarrei vantaggi da una piattaforma WP7 robusta e forte sul mercato, ma non sono certo cieco e se ho delle perplessità non posso che dirlo a voce alta.
22/08/2011 15:05 | Raffaele Rialdi
Gravatar

# re: L'ardua scelta dei tool per sviluppare su smartphone e tablet

@Valter, quoto al 100%. Ne abbiamo anche parlato a voce. Spero che serva di lezione alle persone del team di embedded con cui parlai delle licenze fuori mercato già nel 2006 (ho le email davanti).
Adesso non resta che sperare che Win8 faccia realmente i fuochi artificiali. Lo spero per me e per MS. Alla Build mi devono realmente "stupire con effetti speciali e colori ultravivaci" (cit pubblicità degli anni 80).
22/08/2011 15:10 | Raffaele Rialdi
Gravatar

# re: L'ardua scelta dei tool per sviluppare su smartphone e tablet

@Marco. A quanto leggo Titanium è più performante di PhoneGap che ha lo scopo di tentare di mantenere l'applicazione più web-like possibile (almeno nella struttura dei sorgenti). Qualsiasi kit che userai al di fuori delle app native farà un uso tosto di memoria. Lo vedo con le app di mono for android che uso sul mio cellulare.
I due kit che ho citato a mio parere non sono mutualmente esclusivi. Alcune app probabilmente le tiri su velocemente con PhoneGap mentre altre più corpose invece vale la pena di andare su Titanium. Come scrivevo resta l'opzione 'pura nativa' qualora l'applicazione diventi così popolare da valerne la pena.
Concordo infine che nessun kit ti darà la vera indipendenza dall'OS. Capita anche per Silverlight su Mac, figuriamoci con questi kit!
P.S. parliamone quando vuoi, sarà un piacere!!! :)
22/08/2011 15:16 | Raffaele Rialdi
Gravatar

# re: L'ardua scelta dei tool per sviluppare su smartphone e tablet

@robobot. Non lo conosco e sembra più orientato ad applicazioni "d'effetto" che usa sia opengl che html5. Da quel che vedo è molto carino e lo trovo più orientato a games/app molto interattive rispetto alle classiche LOB.
Il vantaggio di PhoneGap è che supporta ben più di iOS e Android, il che è un grosso vantaggio.
Inoltre, parlando in termini molto generali, facendo alla caoticità che Ste8 giustamente rilevava, prediligerei kit basati molto più pesantemente su html5 in quanto, essendo basato su uno standard, hai la possibilità di riusare più facilmente la presentazione.
Ad ogni modo sono considerazioni di carattere generale ... il confronto va sempre fatto a seconda del contesto e quindi non scarto nessun kit che mi permette di andare su più piattaforme.
23/08/2011 11:54 | Raffaele Rialdi
Gravatar

# re: L'ardua scelta dei tool per sviluppare su smartphone e tablet

@Alberto. Permettimi di essere critico e scettico rispetto ad Adobe. Con il reader su PC hanno fatto dei disastri disumani. I risultati di tutte le applicazioni basate su Air sono penosi (copia/incolla che funziona male, non supporta la tastiera nel modo convenzionale, problemi con i caratteri unicode... il tutto vissuto su più applicazioni di vendor differenti).
Inoltre ripeto che ormai html5 è una strada obbligatoria e quindi non avrebbe senso abbandonare il magnifico xaml per andare su una soluzione di quel genere.
23/08/2011 11:58 | Raffaele Rialdi
Gravatar

# re: L'ardua scelta dei tool per sviluppare su smartphone e tablet

@raf: hai ragione HTML5 + JS e CSS sono il futuro, ma sia PhoneGap che Titanium mi sembrano richiedere uno sforzo iniziale non trascurabile rispetto ai potenziali problemi, specie su app complesse. Insomma mi sembrano degli "acrocchi" micidiali :-D
Certo anche Apple che si ostina con questo Objective-C! Sarebbe meglio che optasse per un linguaggio di più alto livello tipo Python, Ruby o altro (non dico Java perché oramai con Oracle il suo destino si avvicina molto a quello che fu del COBOL).

Comunque è un argomento molto caldo questo degli SDK multipiattaforma per il mobile. Mi farebbe piacere vedere altri post da parte tua sull'argomento :-)
23/08/2011 14:12 | robobot
Gravatar

# re: L'ardua scelta dei tool per sviluppare su smartphone e tablet

@raf : Hai ragionissimo!!! Concordo in pieno. Per questo prima suggerivo d'analizzare anche Flex. Con l'ultima versione infatti da Flex crei applicazioni native IOS. Quelli di Adobe hanno fatto molti sforzi proprio per creare questo tool e, se ora devi avere AIR su android, penso che nel prossimo futuro questa necessità smetta d'esistere.
Oltretutto, da fonti abbastanza vicine ad Adobe, sembrerebbe che per il prox. anno vogliano dare la compatibilità con WP7. Magari verrò smentito... però se consideriamo che Apple aveva bloccato Flash, e loro convertono in nativo, mi sembra che la mossa ci sia tutta. E Flex lo vedo veramente molto comodo come Silverlight. Scrivi l'interfaccia in MXML (lo XAML per intenderci) e usi l'ActionScript come linguaggio. E di sviluppatori in Flash/AS3/Flex ne trovi davvero tanti.
24/08/2011 03:19 | Alberto
Gravatar

# re: L'ardua scelta dei tool per sviluppare su smartphone e tablet

Comunque quello che più mi spaventa è, abituato come sono, abbandonare Visual Studio!!!!!!! Per carità, sarò bello e fruibile pure NetBeans, Eclipse etc. però Visual Studio è Visual Studio!
24/08/2011 03:22 | Alberto
Gravatar

# re: L'ardua scelta dei tool per sviluppare su smartphone e tablet

@Alberto. Mi spiace ma proprio di Adobe non mi fido. Come ho già scritto sopra sono troppe le scottature tra il reader e le app Air che ho provato e dove la responsabilità è evidentemente di Air.
Se devo studiarmi qualcosa preferisco investire in una tecnologia standard come html5 ;) e spero tanto che arrivino dei tool per html5 e javascript per l'amato visual studio :)
24/08/2011 04:06 | Raffaele Rialdi
Gravatar

# re: L'ardua scelta dei tool per sviluppare su smartphone e tablet

Alla Build Conference ti regaleranno un tablet con un quadcore :-)
26/08/2011 01:01 | Gabriele Del Giovine
Gravatar

# re: L'ardua scelta dei tool per sviluppare su smartphone e tablet

@Gabriele. Non mi dispiacerebbe :)
26/08/2011 11:42 | Raffaele Rialdi
Gravatar

# re: L'ardua scelta dei tool per sviluppare su smartphone e tablet

Riguardo al tablet slate che regaleranno ai partecipanti della Build Conference, l'hanno anticipato in una intervista su ZDNET.
26/08/2011 17:20 | Gabriele Del Giovine
Gravatar

# re: L'ardua scelta dei tool per sviluppare su smartphone e tablet

@Gabriele. Grazie ho visto in giro parecchi che ne parlavano ma un po' tutti fanno vedere un prototipo che monta Kal-El di nvidia. Da quello che capisco io quel modello non è quello di Build ma semplicemente un prototipo usato da nvidia per mostrare la potenza della loro cpu.
Guarda caso però Asus da tempo sta lavorando ad un tablet (tipo eepad transformer) con Kal-El ed uno schermo 3D che non richiede occhiali. Chissà ... :)
26/08/2011 19:14 | Raffaele Rialdi
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET