What is Xamarin?

Xamarin is the top application development framework that allows you to create native apps that can share code ( 60-75%) across iOS, Android and Windows platforms. While a good percentage of the code base is shared, the UI code is written separately for each platform, which allows the app to look, feel and perform natively. A key benefit of using Xamarin is that the application user interface uses native controls on each platform, creating apps that are indistinguishable from an application written in Swift or Java (for iOS and Android respectively).

Although Xamarin allows you to write apps in C#, and share the same business logic across multiple platforms, the actual implementation on each system is very different. The C# source makes its way into a native app in distinct ways on each platform. Each operating system has its own unique needs and requirements that allows a developer to take advantage of purely native functionality. Here’s some of the details for the technical folks out there:

iOS

C# is ahead-of-time (AOT) compiled to ARM assembly language. The .NET framework is included, with unused classes being stripped out during linking to reduce the application size.

 

ANDROID

C# is compiled to IL and packaged with MonoVM + JIT’ing. Unused classes in the framework are stripped out during linking. The application runs side-by-side with Java/ART (Android runtime) and interacts with the native types via JNI.

 

WINDOWS

C# is compiled to IL and executed by the built-in runtime, and does not require Xamarin tools. Designing Windows applications following Xamarin’s guidance makes it simpler to re-use the code on iOS and Android. Note that the Universal Windows Platform also has a .NET Native option which behaves similarly to Xamarin.iOS’ AOT compilation.

 

Most apps being deployed across multiple platforms require a specialized team of platform specific engineers. The majority of our Xamarin project teams consist of at least 3 engineers: 1 dedicated iOS lead, 1 dedicated Android lead and 1 engineer focusing on the shared code and services between the platforms. We don’t see much demand for Windows apps, but doesn’t mean we can’t build those too 😉