Since the beginning of the mobile age Objective-C and Java have been the go-to languages for iOS and Android development. Recently Swift and Kotlin have emerged as the pretenders to their crowns. However there are alternatives which seek to unify these technologies in to a single platform. So-called ‘Hybrid’ frameworks, which seek to leverage the speed and feature set of native applications with cross platform convenience, have now been an option for some time.
One such framework is Microsoft’s Xamarin. Originally founded as a commercial entity by Miguel De Icaza in 2011, Xamarin was purchased by Microsoft in 2016 and made in to an open source project in an effort to drive adoption.
Recently it has been gaining significant traction. In the 2018 Stack Overflow Developer Survey Xamarin scored well for popularity with over 7% of the respondents stating they had used Xamarin. However, paradoxically, it was also highly loved (49%) and dreaded (51%).
To determine what could cause these extremes of opinion, it’s important to understand the benefits that Xamarin brings and also it’s limitations.
Firstly, the good. As Xamarin was based on the Mono framework and now utilises .Net Core, its logic can be written in a wide variety of languages, the most popular of which is C#. As there are already a lot of skilled C# developers the language barrier to entry is diminished significantly, and the pool of talent you can hire expands dramatically.
As the business logic, data access and network communication is now shared between platforms development times are cut as the amount of work duplicated per platform is, in theory, all but halved. It also makes maintenance of existing applications much more straight forward for the same reason.
As mentioned previously, Microsoft now own Xamarin and have been pivotal in providing legitimate support and training for developers looking to embrace mobile development through the framework. It’s also a strong endorsement that Microsoft are committed to Xamarin for the long term with their feature roadmap being constantly updated and expanded as new features for each platform are revealed.
However it’s worth noting there are still some down sides to Xamarin which can be a show-stopper for some.
To counter the point above regarding the availability of C# developers, there is still a learning curve to Xamarin so there will still be a period of gaining knowledge for any existing C# developer to get to grips with the framework. It’s also highly beneficial for the developer to have had experience of native languages in order to understand how apps should be structured, which is rather contradictory given the original purpose of Xamarin. It also restricts the number of available developers if you are looking for someone to dive straight in to your project.
Despite Microsoft’s best efforts there is still a delay between new versions of Android and iOS being released and the Xamarin update which allows use of the new features of the platforms. Similarly, there is limited access to the plethora of libraries available to the developers of the native platforms. Of course the larger, popular plugins have been translated or already have equivalents. However if you’re looking for something niche, or groundbreaking you are likely to be out of luck.
Although the business logic is unified between platforms in Xamarin, the UI can still have some drawbacks to a true cross-platform paradigm. If you plan on using exclusively native controls with little graphical enhancements or animation, then Xamarin.Forms can be utilised to build both iOS and Android UI components at runtime.
However, if you have anything more complex, which is quite often the case in enterprise level apps, or those looking to create a unique visual impact for their users, then you are still required to create separate UI layouts for each platform. In turn, this requires knowledge of the native platforms themselves. As such, the lustre of the ‘cross-platform’ claim is somewhat lost.
Finally, due to the underlying frameworks utilised by Xamarin the file size of the applications is increased compared to their native counterparts. Even the most simple of ‘Hello World’ apps will be over 15Mb in size, before adding any UI elements or business logic and associated libraries. App size is increasingly becoming a barrier to users downloading an app from the store due to bandwidth concerns.
Xamarin has made some significant progress in it’s short existence and may yet become the de facto standard for hybrid applications. However it’s merits and faults should be considered on a case by case basis to determine whether any compromises to the outcome of the final product can be offset by the benefits to development time and effort.