Xamarin vs. PhoneGap

Tutti abbiamo o avremo molto presto il problema di scrivere nel minor tempo possibile applicazioni mobile per almeno due piattaforme, forse tre. Inutile dire che due delle piattaforme sono in un qualche ordine dettato dal business e sono iOS e Android; la terza piattaforma è altrettanto ovviamente Windows Phone. Quali opzioni abbiamo oggi per ridurre il costo di sviluppo portandolo al di sotto della soglia data dalla semplice somma dei costi di sviluppo per ciascuna piattaforma? Di opzioni ce n’è almeno tre: Xamarin Studio, una qualsivoglia implementazione di Cordova e Appcelerator Titanium. In questo post mi limito ad un confronto diretto tra Xamarin Studio e PhoneGap, l’implementazione più conosciuta (ma non certo l’unica) della piattaforma open-source Cordova.

Xamarin Studio è un IDE separato, addirittura disponibile come estensione di Visual Studio, che permette di scrivere applicazioni per iOS e Android. È disponibile per Windows e Mac. Le applicazioni si basano sugli SDK nativi delle piattaforme ma la API esposta al programmatore è essenzialmente una variante del .NET Framework. Si trovano a disposizione classi ad hoc per la piattaforma target e classi con la stessa interfaccia di quelle del .NET Framework. Il linguaggio di programmazione è C#. La parte “magica” della soluzione Xamarin è che il compilatore rimappa le chiamate alle classi C# su funzionalità base della piattaforma sottostante e produce un eseguibile ARM imfiocchettato come un bundle iOS o Android.

L’applicazione che viene generata è una classica applicazione nativa in cui la struttura—presentation e business logic—viene sviluppata nello stesso modo di una analoga applicazione nativa scritta usando direttamente gli SDK della piattaforma. PhoneGap è una implementazione di Cordova—la piattaforma open-source attualmente gestita da Apache Software Foundation e originariamente basata sul prodotto PhoneGap acquistato da Adobe nel 2011. Oggi PhoneGap è semplicemente una distribuzione Cordova gestita da Adobe e paragonabile a Icenium di Telerik e PhoneJS di Devxpress. L’applicazione che viene generata è una applicazione nativa a tutti gli effetti. Lo sviluppo, tuttavia, è basato su HTML, CSS e JavaScript.

Un’applicazione PhoneGap è semplicemente una collezione di pagine HTML che, lette dalle risorse dell’applicazione nativa, girano dentro una WebView a tutto schermo. Dal punto di vista della struttura fisica l’applicazione è basata su una sola view (o activity secondo il gergo Android). Tutto ciò che accade viene gestito via JavaScript, codificato via HTML e sottoposto ai vincoli e alle performance del browser del dispositivo. Tanto un’applicazione Xamarin che un’applicazione PhoneGap sono perfettamente in linea con le direttive Apple e sono approvate o respinte unicamente sulla base di quello che fanno o non fanno.

Un’applicazione creata con Xamarin Studio ha il solo difetto di essere un tantino grossa come dimensione visto il peso specifico del runtime Mono che si porta appresso. Per il resto non presenta problematiche particolari e nella stragrande maggioranza dei casi (per non dire sempre) non si riscontrano penalità di alcun tipo. Un’applicazione creata con PhoneGap (o simili) è strutturalmente soggetta al dazio della performance. Già la semplice navigazione da pagina a pagina dà una misura concreta di ciò. Si può navigare seguendo un click e lasciando il browser a caricare la pagina successiva magari dalla cache: niente animazione, ed è il modo più veloce, oppure con animazione JavaScript e il rischio di movimenti a singhiozzo su quasi tutti i device. Per dirla tutta, un’applicazione PhoneGap realistica è lenta e poco fluida se paragonata ad una nativa. Punto. Tuttavia, la minore velocità e fluidità non la rendono necessariamente inutilizzabile o inutile.

Cosa scegliere?

Il punto fondamentale dello sviluppo mobile non è tanto nell’abbattimento dei costi di N-1 piattaforme quanto nel taglio lineare dei costi di sviluppo per piattaforma. Il totale del costo di sviluppo per N piattaforme non sarà mai uguale al costo unitario più un quid: il resto è noia. La sostenibilità dello sviluppo mobile passa per strumenti intelligenti capaci di far scrivere la stessa app in una frazione del tempo per ciascuna piattaforma e nell’individuazione di forme di riuso di codice di business. In questo contesto trovo che il backend sia un canale importante—per molte app mobile la logica che serve può tranquillamente stare sul server e viaggiare solo online. Il grosso del mobile è presentation e presentation e UX devono essere massimizzati perché il risultato sia accattivante. In questo contesto l’applicabilità di PhoneGap si riduce. Io scelgo Xamarin.

posted @ Monday, November 11, 2013 10:28 AM

Print

Comments on this entry:

# re: Xamarin vs. PhoneGap

Left by Johannes at 11/11/2013 2:02 PM
Gravatar
Secondo me hai sbagliato, lasciare a parte Titanium. Tanti guardano su Titanium come un'altro Phonegap, ma è tanto diverso da Phonegap. La unica cosa in comune é che si scrive lo codice in JavaScrip. Ma se guardi il fatto des user interface, con Titanium usi tutte le componente native (come Xamarin), ma invece di creare tutte le UI dedicato ad una piattaforma, sei in grado di dividere tanto codice fra le piattaforme. Per questo vedo in tanti casi la occasione di usare Titanium, perchè i maggiori difetti di Xamarin e pure di Phonegap vengono togliti.

Saluti
Johannes

# re: Xamarin vs. PhoneGap

Left by despos at 11/11/2013 3:40 PM
Gravatar
Non ho usato Titanium di recente e per questo l'ho tenuto fuori. Per quello che ne so, comunque, continuo a ritenere Xamarin la cosa migliore proprio perché l'app deve essere nativa e specifica di Android o iOS. E se deve essere cross-UI, anche PhoneGap torna ad avere il suo senso. Anche se Titanium ha l'aria di superare brillantemente i problemi di performance di PhoneGap.

# re: Xamarin vs. PhoneGap

Left by Andrea at 11/13/2013 7:52 PM
Gravatar
Come alternativa esiste anche QT, permette di scrivere apps per tutte le piattaforme su riportate.

# re: Xamarin vs. PhoneGap

Left by despos at 11/13/2013 8:45 PM
Gravatar
Max,
non direttamente ma grazie alle Portable Class Libraries (annuncio di oggi) dovrebbe diventare finalmente possibile usare la stessa DLL per app WP, Win8, iOS e Android. Resta il fatto che la UI e presentation layer devono essere fatti conoscendo bene la piattaforma. Quindi per rispondere alla domanda, per app WP riusi stesso codice backend e VS.

# re: Xamarin vs. PhoneGap

Left by despos at 11/13/2013 8:48 PM
Gravatar
Andrea,
ce n'è diverse, ma ciò che rende Xamarin diversa e paragonabile in questo senso alla sola Titanium è il fatto di scrivere app platform-specific. E considera che purtroppo il futuro comincia a far trasparire la necessita di fare app Android multiple o complesse al punto da avere dentro view multiple. La strada faccio tutto con un solo codice/UI mi pare sempre meno percorribile. Il risparmio viene, se viene, dal taglio dei costi di sviluppo con tool/lib intelligenti.

# re: Xamarin vs. PhoneGap

Left by maths tutors Enfield at 3/10/2016 12:38 PM
Gravatar
Non ho usato Titanium di recente e per questo l'ho tenuto fuori. Per quello che ne so, comunque, continuo a ritenere Xamarin la cosa migliore proprio perché l'app deve essere nativa e specifica di Android o iOS

# National Cat Day

Left by Rohit Roy at 9/7/2016 10:24 AM
Gravatar
Superb post! Thanks a lot for sharing.

# Galaxy S8

Left by Sahil at 9/27/2016 12:31 PM
Gravatar
Upcoming series of Samsung Galaxy is Galaxy S8, this is more attractive than previous series.

# re: Xamarin vs. PhoneGap

Left by Andi Odang at 9/19/2017 6:19 PM
Gravatar
Impressive Year 2017 wishes for someone special.

# re: Xamarin vs. PhoneGap

Left by Andi Odang at 9/19/2017 6:21 PM
Gravatar
Non ho usato Titanium di recente e per questo l'ho tenuto fuori.

# re: Xamarin vs. PhoneGap

Left by epsondriversdownloads at 9/19/2017 6:23 PM
Gravatar

# Hi

Left by JulioEroda at 4/10/2018 10:12 PM
Gravatar
Good website, 47bce5c74f589f4867dbd57e9ca9f808, check

# re: Xamarin vs. PhoneGap

Left by xana at 8/12/2018 10:37 AM
Gravatar
articles are very interesting

I hope it can help

hy there, if you have problem with your printers, laptops, computers drivers. you can visit us at:

printersdrivercenter.blogspot.com
www.epson-printerdriver.com
www.dr-driver.com
www.drivers-pack.com

# Printers Drivers

Left by marie at 8/14/2018 11:24 AM
Gravatar
hy there, if you have problem with your printers, laptops, computers drivers. you can visit us at:

https://printersdrivercenter.blogspot.com/
https://www.dr-driver.com/
https://www.epson-printerdriver.com/
https://www.drivers-pack.com/
Comments have been closed on this topic.
«December»
SunMonTueWedThuFriSat
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234