22
IVAN ĐIKIĆ

Infinum iOS Talks #2 - Xamarin by Ivan Đikić

  • Upload
    infinum

  • View
    122

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Infinum iOS Talks #2 - Xamarin by Ivan Đikić

IVAN ĐIKIĆ

Page 2: Infinum iOS Talks #2 - Xamarin by Ivan Đikić

INTRO

Page 3: Infinum iOS Talks #2 - Xamarin by Ivan Đikić

COMMON APPROACHES TO MOBILE APP DEVELOPMENT

• NATIVE APPROACH

• HYBRID APPROACH

• XAMARIN APPROACH

Page 4: Infinum iOS Talks #2 - Xamarin by Ivan Đikić

01 NATIVE APPROACH

Page 5: Infinum iOS Talks #2 - Xamarin by Ivan Đikić

“SILO”

Page 6: Infinum iOS Talks #2 - Xamarin by Ivan Đikić

02 HYBRID APPROACH

Page 7: Infinum iOS Talks #2 - Xamarin by Ivan Đikić

“BLACK BOX”

Page 8: Infinum iOS Talks #2 - Xamarin by Ivan Đikić

03 XAMARIN APPROACH

Page 9: Infinum iOS Talks #2 - Xamarin by Ivan Đikić

“UNIQUE APPROACH”

Page 10: Infinum iOS Talks #2 - Xamarin by Ivan Đikić

04 XAMARIN PLATFORM

Page 11: Infinum iOS Talks #2 - Xamarin by Ivan Đikić

WHAT YOU GET WITH XAMARIN?

• single language C#(F#)

• class library

• runtime that works across platforms

• complete binding for underlying platform

• ability to directly invoke ObjC, Java, C, C++

• huge BCL

• powerfull IDE

Page 12: Infinum iOS Talks #2 - Xamarin by Ivan Đikić

05 HOW DOES XAMARIN WORK

Page 13: Infinum iOS Talks #2 - Xamarin by Ivan Đikić

XAMARIN UNDER THE HOOD

• built on top of Mono, open source .NET framework

• can be run on nearly every imaginable platform • Unix • Linux • FreeBSD • OSX

Page 14: Infinum iOS Talks #2 - Xamarin by Ivan Đikić

HOW IT WORKS

• trough usage of P/Invoke Service

MANAGED

SOURCE CODE

COMPILER

COMMON LANGUAGE RUNTIME

STANDARD MARSHALLING

SERVICE

PLATFORM INVOKE

MANAGEDUNMANAGED

DLL FUNCTION

METADATA

IL CODE

ASSEMBLY

Page 15: Infinum iOS Talks #2 - Xamarin by Ivan Đikić

HOW IT WORKS - P/INVOKE

1. read [*h] header files to map [C/Obj-C] API to [C#] → (marshalling)

2. compile [*.m/*.mm/*.c] files to object files and link them into static/

dynamic libraries.

3. embed libraries from #2. step into .Net project

4. generate [C#] wrappers to expose #2. to the [C#] world

Page 16: Infinum iOS Talks #2 - Xamarin by Ivan Đikić

NATIVE PERFORMANCE

Page 17: Infinum iOS Talks #2 - Xamarin by Ivan Đikić

06 POSSIBLE ISSUES

Page 18: Infinum iOS Talks #2 - Xamarin by Ivan Đikić

POSSIBLE ISSUES

• binding of third party libraries • Xamarin Store, lots of open sourced components • If missing, you need to BIND it yourself

• memory management • lambdas + GC + marshalling

• (object references across interop boundaries)

Page 19: Infinum iOS Talks #2 - Xamarin by Ivan Đikić

07 HOW TO START

Page 20: Infinum iOS Talks #2 - Xamarin by Ivan Đikić

GETTING STARTED

• MAC:

• Xamarin Studio [UI + CODE]

• Xamarin Studio [Code] + Xcode [UI]

• WINDOWS:

• Visual Studio [UI + CODE] + MAC for building

• Xamarin Studio [UI + CODE] + MAC for building

* installer will download everything that you need (SDK, …)

Page 21: Infinum iOS Talks #2 - Xamarin by Ivan Đikić

HOW DOES IT FEEL :)?

Page 22: Infinum iOS Talks #2 - Xamarin by Ivan Đikić

Q&A