Nativo vs Xamarin: pro e contro

Post on 15-Apr-2017

298 views 1 download

transcript

Nativo vs Xamarin pro e contro

Tipologie di app

Nativo “classico”

Ibride e Web app

Nativo “cross-platform”

Tools a confronto Android iOS Xamarin

IDE Android Studio XcodeVisual Studio

/Xamarin Studio

Linguaggio Java Swift / Objective-C C#

Package / Dependency Manager Gradle CocoaPods, Carthage NuGet

Grafica Xml Storyboard, Xib XAML

XAMARIN

Xamarin- Fondata nel 2011 dagli ingegneri di Mono

- Common Language Runtime su GNU/Linux, Unix, MacOS, Windows

- Acquisita nel 2016 da Microsoft - Visual Studio Community Edition gratis per studenti, singoli developer e piccoli team

Xamarin Platform

Creare Testare Monitorare

Xamarin

~ 85 % riuso del codice

Xamarin

100 % api native

Xamarin

Mono affianca l’Android RunTimeper eseguire il codice .NET

Binding 1:1 delle API native Android.* e Java.*

Xamarin

100 % supporto

Android 7

Android Wear

iOS 10

Apple Watch

...

DEMO TIME

Xamarin Forms

Più codice condiviso

Xamarin Forms

Pagine

Xamarin Forms

Layout

Xamarin Forms

Controlli

Xamarin Label

AndroidTextView

iOSUILabel

WindowsTextBlock

Xamarin Forms

La “magia” della traduzione viene fatta dai Renderer

● Customizzabili● Estendibili

Xamarin Label

TextView UILabelhttps://developer.xamarin.com/guides/xamarin-forms/custom-renderer/renderers/

AndroidLabelRenderer

iOSLabelRenderer

Xamarin Forms

DEMO TIME

XamarinPRO

● Unico linguaggio (C#)

● LINQ, Async/Await, Eventi, Delegati

● Codice condiviso ~85%

● Riduzione dei tempi/costi di sviluppo

● Molte librerie .NET

CONTRO

● Mono: overhead a runtime e dimensioni del pacchetto

● Poche librerie specifiche (Android / iOS)

● Xamarin Forms: tempi di avvio

Xamarin FormsPRO

● UI condivisa-> codice condiviso ~95%

● XAML, Binding, DataTemplate

● Soddisfa il ~90% delle necessità delle app comuni

CONTRO

● Tempi di avvio dell’app

● Limitate capacità di customizzazione grafica (scrittura dei Renderer)

Nativo Android / iOSPRO

● 100% delle performance ottenibili

● Tools di sviluppo Ad-Hoc

● Maggior controllo a basso livello

● Moltissime librerie specifiche: community, SDK, ecc...

CONTRO

● Maggiori tempi/costi di sviluppo

● Diversi linguaggi da apprendere

● Molto codice duplicato: manutenibilità, bug-fixing, ecc...

COME SCEGLIERE

Come scegliere

Premesso che…

● Si può fare (quasi) tutto con tutto

● Se si hanno tempo e budget il nativo classico è sempre la scelta migliore

Ricapitolando...REQUISITI Android / iOS Xamarin Xamarin Forms

Grafica semplice(basata su componenti esistenti su entrambe le piattaforme) X

Grafica custom(es: griglia tipo pinterest, animazioni complesse) X X

Librerie di terze parti sviluppate per l’apposita piattaforma(componenti grafici, SDK per interazione con hardware esterno, ecc…)

X

Business logic prevalentemente sul client (es. software gestionale) X X

100% performance native X

Andrea Battagliabattaglia.andry@gmail.com

Carmelo Ruota carmelo.ruota@gmail.com

Marco Rinaldim.rinaldi@live.com