Why Xamarin?
by Greg Martin
When it comes to native mobile app development, there aren’t a lot of options. You can either write your app in the native language of the platform (Objective-C for iOS, Java for Android) and maintain two completely separate code bases, all the way from the UI down to your core web service calls and data storage, or, you can use Xamarin to write for all platforms using C# and share code between them!
I am not talking about write-once-run-everywhere solutions such as PhoneGap or Appcelerator. I’m talking about truly native applications written in C#. Yes, native, as in runs as though you wrote it in the native language native. Native, as in the resulting compiled application looks to the system as though it was written in that native language.
So how exactly does it work?
Xamarin was born out of the Mono project which began way back in 2000, long before iOS or Android were a thing. Mono’s goal was, and still is, to provide “an open source, cross-platform, implementation of C# and the CLR that is binary compatible with Microsoft .Net”. In short, to allow developers to write C# code for non-Microsoft platforms and at this time, 100% of the .Net 4.5 framework is supported.
After the release of the iPhone and later, Android, MonoTouch and MonoDroid spun up, with a similar goal, expose 100% of each platform’s native APIs through C# AND include the full Mono C# framework. This includes cross-platform compatible implementations of core .Net features such as async/await for performing asynchronous operations.
And that is what Xamarin is, the collection of these projects, merged into one company and toolset, allowing you to build native apps, with platform appropriate UIs while sharing much of your core common code, such as asynchronous web service calls and business logic.
At Slalom, we have already leveraged Xamarin to deliver apps for several clients and it is always part of the architectural consideration when discussion native app development. It allows us to provide our clients with an alternative approach that:
- Reduces overall development time for apps that support multiple platforms by reducing duplicative development for what should be common components
- Improves the ability to provide feature parity across platforms by bringing development into a single code-base and therefore toolset and development team
- Allows for easier knowledge transfer and hand-off due to clients being generally more familiar with .Net and having in-house developers skilled in C#
That was a quick overview, to learn more, check out xamarin.com.
About the Author
Greg Martin is a Managing Director for Slalom’s Cross-Market Delivery Network team. Greg specializes in assembling high performing teams to deliver on our clients most strategic engineering initiatives across consumer, enterprises, web, and mobile.