We have taken some of the top Xamarin queries as suggested by Answer the Public and – back by popular demand – Eastpoint’s Oli is on the case.
Over to you, Oli...
Are Xamarin apps native
In short, yes.
The development environment is not native, for better and worse, yet the final outcome is a native app.
Every single feature made available to Android and iOS developers to utilise and innovate by Google and Apple, respectively, is available through Xamarin so you don’t compromise on the functionalities.
When I get asked this question, the underlying fear has often been: “Because Xamarin is not native it must introduce compromises, and therefore will the final product be limited in functionality or performance? I don’t want to go down that path if my product will be less than perfect.”
And to that, my friend, the answer is no.
In a nutshell, when using Xamarin to rapidly develop Android and iOS apps, the only difference is the programming language and environment used to develop. Instead of relying on Google for Android and separately relying on Apple for iOS, Xamarin relies on Microsoft’s tools and programming environment for both platforms.
As long as you have a Xamarin expert you won’t be compromising in your product quality. In fact, we believe Xamarin could give you a competitive advantage.
First, because of the use of one programming environment for all platforms, your development team only needs to speak the one programming language – not one for Android, another for iOS, and another for another platform (e.g. web). This usually leads to more focused training, learning, improved synergy across the teams and you don’t need to manage multiple teams effectively doing the same thing.
Secondly, the work required to achieve the same goal is reduced – this one is a bit tricky to explain but let me try. Because of the way Xamarin works, it gives an opportunity to maximise “code re-use" across all platforms.
Effectively, you make a change to one platform, and it’s reflected to all the other platforms. For digital products, change is inevitable through the entirety of the product life cycle – and Xamarin reduces the time required to implement those changes across all platforms.
Finally, Microsoft’s tools and programming environment is used heavily for high performance web, cloud computing, gaming, AR/VR, ML/AI and desktop applications – so it brings an unparalleled synergy to the digital product development process, if your ambitions do have other platforms in sight.
Why Xamarin is bad
Bad, as in good?
Will Xamarin die
Today Microsoft owns the Xamarin technology framework and they are committed to supporting it. When Microsoft supports something, they tend to go all the way - have you heard of Windows?
Another good aspect is that Microsoft has put the entirety of Xamarin technology open sourced – so all the magic sauce that goes in the technology is available to be viewed. They actively engage with the Xamarin community to take on feedback, and all the improvements are done inside the public repositories! It doesn’t get more transparent than that. You can see it in action here: https://github.com/xamarin.
What this ultimately means is that in the unlikely event that Microsoft no longer wants to support it, the open source community can – so Xamarin will live on forever! Yes, yes, yes!
Can Xamarin use .NET Core
Technically, the answer to this question is no. Xamarin and .NET Core are different run time technologies. So the Xamarin framework will not use .NET Core runtimes.
But this might be the wrong question to ask! Perhaps you are worried about developing a Xamarin application alongside a .NET Core application (web and/or desktop apps, for example), and you may be concerned about how the apps may be incompatible.
You have nothing to fear.
I appreciate that the .NET ecosystem can be overwhelming, and it’s always worth explaining a few things. In short though, both Xamarin and .NET Core implements .NET Standard specification – which means, code written to run for one runtime (e.g. Xamarin) will also work with another runtime (.NET Core).
Practically, this means that programmers will write code once, and that code can be used on any of the platforms supported by Xamarin, .NET Core or even .NET Framework if you’re interested in that.
Xamarin which language
Xamarin can be written using C# or F#. We predominantly use C#.
Xamarin where to put images
With Xamarin you have more options.
If you’re using Xamarin.Android or Xamarin.iOS, you can put the images in the same folder structures you would with native development environments – no difference. You can load multiple sizes of the same images as you would for purely native Android or iOS apps.
With Xamarin.Forms you have the additional opportunity to package images into the shared library as an embedded resource, this way you don’t need to load multiple images for different sizes and let the mobile platform’s renderer deal with the resizing. You do need to be careful if you want the images to look pixel perfect on different device sizes and there’s always the option to host static images on the web.
I guess the point I want to put across here is that you have multiple options, and with Xamarin you can accommodate the usual development flow of purely native environment, and additional flows to help speed up the process if need be.
What Xamarin can do
Good question! Compared with developing Android and iOS apps using separate environments and languages, Xamarin can give you an operational improvement by streamlining the development process. Used wisely, utilising Xamarin can give operational efficiency to a business and improve the competitiveness of the software development process (see first question).
In terms of functionality and performance, Xamarin apps can do everything that purely native development can do. This is because Xamarin.Android and Xamarin.iOS has access to all the native APIs provided by the mobile operating systems.
If your goal is to achieve rapid prototyping or development, using Xamarin.Forms will streamline the development process even further so by unifying the development process of visual components.
If you’re also working with web, game or desktop applications using .NET stack, you can gain further improvements in the development process by using Xamarin. This comes from the unified development environment for all platforms, unified DevOps or CICD pipeline, and - my favourite - unified automated test environments.