xamarin - beyond the basics
TRANSCRIPT
Beyond the basics
Prabha KularathnaIFS Labs
Introduction
Why Xamarin?
Status-quonative apps
Cross platformvia 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 FriedmanMiguel de Icaza
Xamarin
App Logic
iOS UI Android UIWin Phone
UI
NativeAndroid app
NativeiOS app
NativeWin 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
CILCode
Source CodeBytecode
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
MonoApp / Application Architecture
Common Language Infrastructure (CLI)
Standard: ECMA-335
CILCode
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
XamarinApp Architecture
Development time in the IDE
C#Compile C# CIL
Code
Source CodeBytecode
Core .NET Android APIs
*. Java Libraries
*. Android Libraries
Core .NET PCL APIs
3rd Party .NET PCL APIs
3rd Party .NET Android APIs
Xamarin AndroidApp Architecture
Development time in the IDE
C#Compile C# CIL
Code
Source CodeBytecode
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 AndroidApp Architecture
Runtime in the device
C#Compile C# CIL
Code
Source CodeBytecode
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 AndroidApp Architecture
App Logic
UI
NativeAndroid app
NativeiOS app
NativeWin Phone app
Xamarin FormsApp Architecture
Portfolio
Xamarin StudioXamarin for Visual Studio
Portfolio
Xamarin Memory and Performance Profiler
Portfolio
NuGetXamarin Component Store
Portfolio
Xamarin Test Cloud
Portfolio
Xamarin Insights
DEMO
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!
Questions?