Beyond the basics
Prabha Kularathna
IFS Labs
Introduction
Why Xamarin?
Status-quo
native apps
Cross platform
via HTML/JavaScript
• Multiple code Lines
• Training costs
• Development costs
• Maintenance costs
• Extra effort to maintain
cross-consistency in UX
• It’s a Web View! Sluggish
• Jack-of-all-trades-
master-of-none
• Keeping up with
hardware spec diversity /
evolution
“Xamarin – best of both worlds”
Potential value
History
Ximian
(1999)
(2001)
started
Acquired by
(2003)
v1.0 (2004)
v2.0 (2008)
Touch (2009)
Shipped
Acquired by
(2011)
Laid off team
(2011)
Droid (2011)
v3.0 (2012)
Shipped
Nat Friedman
Miguel de Icaza
Xamarin
App Logic
iOS UI Android UI Win Phone UI
Native
Android app
Native
iOS app
Native
Win Phone app
App Architecture
Common Language
Infrastructure (CLI)
Standard: ECMA-335
C#
VB.NET
Any other
.NET Language
C# Compiler
VB.NET Compiler
Other Compiler
CIL
Code
Source Code
Bytecode
Windows
(Windows Phone)
Play Station 3
Nintendo Wii
Solaris
Native Platform
Development time in the IDE Runtime on the platform
Apple OSX (iOS)
Linux (Android)
BSD
Mono
App / Application
Architecture
Common Language
Infrastructure (CLI)
Standard: ECMA-335
CIL
Code
Bytecode Mono Android
Mono iOS
Mono OSX
Mono
Windows Mobile
C#
C# Compiler
Source Code
Native Platform
Development time in the IDE Runtime in the device
Xamarin
App Architecture
Development time in the IDE
C#
Compile C# CIL
Code
Source Code
Bytecode
Core .NET
Android APIs
*. Java Libraries
*. Android Libraries
Core .NET
PCL APIs
3rd Party .NET
PCL APIs
3rd Party .NET
Android APIs
Xamarin Android
App Architecture
Development time in the IDE
C#
Compile C# CIL
Code
Source Code
Bytecode
Core .NET
Android APIs
*. Java Libraries
*. Android Libraries
Core .NET
PCL APIs
3rd Party .NET
PCL APIs
3rd Party .NET
Android APIs
Your code
From ‘NuGet’ and
‘Xamarin Component Store’
Xamarin SDK
Android SDK
JDK
Xamarin Android
App Architecture
Runtime in the device
C#
Compile C# CIL
Code
Source Code
Bytecode
Core .NET
Android APIs
*. Java Libraries
*. Android Libraries
Core .NET
PCL APIs
3rd Party .NET
PCL APIs
3rd Party .NET
Android APIs
Your “APK” Device
Linux KernelMono Runtime
Xamarin Android
App Architecture
App Logic
UI
Native
Android app
Native
iOS app
Native
Win Phone app
Xamarin Forms
App Architecture
Portfolio
Xamarin StudioXamarin for Visual Studio
Portfolio
Xamarin Memory and Performance Profiler
Portfolio
NuGetXamarin Component Store
Portfolio
Xamarin Test Cloud
Portfolio
Xamarin Insights
Xamarin
1. Native: Lightning fast
2. Everything you get from given platform
3. Code reuse
4. C#
• Mature
• Short learning curve
• Rich features (Async, Lambdas, LINQ)
5. Rich tooling & ecosystem
Advantages
Xamarin
1. UI layer not cross-platform
• Xamarin Forms is still immature
2. Learning curve : 3rd technology
3. Expensive!
• Hopefully prices may come down when
developer community grows…
Disadvantages
Xamarin
My impression working with Xamarin: Awesome!
Xamarin - Beyond the Basics

Xamarin - Beyond the Basics