What is Xamarin?
What is Xamarin?

Xamarin is software that enables you to develop an application once and distribute it on multiple platforms with minimal or no alteration to the codebase. This course introduces you to Xamarin and you'll learn how to set up a development environment, as well as what's needed to develop apps for different platforms. We'll also run through how to create a basic app and deploy it to Android and iOS.

Learning Objectives

  • Learn how Xamarin's architecture tackles sharing a codebase in a cross-platform scenario
  • Understand how to set up a Xamarin development environment on Mac and Windows machines 
  • Learn how to build and debug simple Android and iOS applications

Intended Audience

This course is intended for anyone who wants to learn how to use Xamarin to develop mobile applications for Android and iOS.


There are no prerequisites for this course but any familiarity with programming concepts like design patterns would be helpful.


Xamarin is a mobile development technology that enables you to target multiple platforms with a single code base. This is great from a developer's point of view, as it means you can write the application logic once and then deploy it to multiple platforms. However, Xamarin is not unique in employing this methodology, as Apache Cordova and PhoneGap, Adobe's implementation of Cordova, and React Native, do the same thing. What sets Xamarin apart from these other frameworks, with the exception of Flutter, is the end product. 


PhoneGap and React Native produce applications that run inside containers on the device. You can think of the container as a special web browser with access to much of the device's native capabilities, where apps are primarily developed using HTML, CSS, and JavaScript. While these apps allow developers to leverage an existing skillset, performance issues  arise from running within the container, and accessing much of a device's capabilities isn't all of its capabilities.

Xamarin uses the MonoVM to run Intermediate Language or byte code using a just-in-time compiler on Android. For iOS, Xamarin produces ARM assembly language that runs in the context of the .NET framework. On Android, just-in-time compilation is faster and more efficient than interpreted code running in a container. Naturally, ARM code running on an ARM chip on an Apple device is very close to a fully native app in performance terms. Xamarin code is written in C# and .Net, allowing developers skilled in those technologies to make the leap to mobile development. It isn't all plain sailing .Net and C# have features that aren't fully supported on Android and iOS. I won't get into the technical details here; suffice it to say, they involve class generics and dynamic code generation, on iOS.

Another criticism leveled at Xamarin is the supporting libraries deployed with the apps, increasing the app's overall size. As devices get more powerful with more memory, these issues become, well, less of an issue and more of a consideration to be aware of in the pros and cons matrix of cross-platform development.

About the Author
Learning Paths

Hallam is a software architect with over 20 years experience across a wide range of industries. He began his software career as a  Delphi/Interbase disciple but changed his allegiance to Microsoft with its deep and broad ecosystem. While Hallam has designed and crafted custom software utilizing web, mobile and desktop technologies, good quality reliable data is the key to a successful solution. The challenge of quickly turning data into useful information for digestion by humans and machines has led Hallam to specialize in database design and process automation. Showing customers how leverage new technology to change and improve their business processes is one of the key drivers keeping Hallam coming back to the keyboard. 

Covered Topics