Xamarin – Cross Platform Mobile Development (1/3)

Mobile here – mobile there, by now everything has to be mobile accessible at least. Thereby one has to distinguish between mobile optimized websites, pure web-apps and classical native apps. The latter has to be dedicated developed for a specified target platform.

Mobile Devices

Since there are various and diverse development approaches, opinions on which are the best also differ greatly. As soon as the user interaction in the mobile solution exceeds the pure consumption of content, there are complex features or a need for especially efficient or neat tasks, a native approach should be considered.

In case a decision in favor of a native application is made the next challenge reveals itself. With iOS, Android and Windows phone are three mobile operating systems in a B2C scenario available and have to be considered.

Out of a developer point of view this basically implies that one has to develop on three different platforms and languages:

  • iOS – X-Code IDE, Objective-C & Swift iOS 7 and higher, apple.com
  • Android – Typical Java IDE e.g. Eclipse, Java, android.com
  • Windows Phone – Visual Studio, .NET or HTML5, windowsphone.com

On a High-Level view the native app-development implies considerable advantages:

  • Performance – The hardware can be used completely
  • Direct access to the device/platform-specific API
  • The app feels like “native”, no delays or just partly adopted interaction patterns
  • Direct adaption of SDK changes – no dependencies to third parties
  • More direct consideration of Security-aspects

Nevertheless, the following disadvantages must not be concealed:

  • For each platform has to be developed separately
  • One has to look into each platform, its IDE and language
  • Each OS has its own peculiarities and pitfalls

The above arguments show the sophisticated requirements on the native app-development as a whole and especially for various target platforms. Not only have various languages had to be mastered but also the handling of the related IDE’s and DEV-Tools.

It is all too comprehensible why there is a growing interest in frameworks promising platform-neutral development.

Initially Namics started its native app-development with a strong focus on Apple iOS as a target platform. Several reasons were determining. For example is iOS still the dominant player among the mobile operation Systems in Switzerland (User- != sales figures, goo.gl/iVrt5J), the device fragmentation is manageable and finally simply the demand of the customers.

Meanwhile the requests of platform-neutral mobile solutions become more frequent – initial as well as because of scalability considerations. Therefore it is crucial to ask the question whether it is reasonable to develop an app multiple times for different target platforms early in a project.

For challenge of serving different platforms efficiently, there exist a variety of products and frameworks. The basic concept of these tools is Build Once, Deploy Many. In reality most of these tools consider the greatest common factor / similarities of the different mobile operating systems. Unfortunately and as expected this factor is relatively small.

The challenge does not lie in the implementation of functional logic and lack of common features, but in the implementation of the user interface (GUI). At this point the platform-specific pattern differs in such a severity that it doesn’t allow them to harmonize. This is exactly why most Cross-Platform-Development tools are doomed to fail.

An exception – a ray of hope – could be Xamarin.


Luckily for us, we have direct project experience and could therefore form our own opinion in the last months.

More in the second part of this blog series.

Author of original german version: Alexander Maier

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.



You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>