Xamarin – Cross Platform Mobile Development (2/3)

xamarin

Die Idee bzw. das Konzept von Xamarin als Mobile Cross Platform Development Toolkit kann wohl kaum besser als mit nachfolgender Aussage zusammengefasst werden.

Create native iOS, Android, Mac
and Windows apps in C#

Dies ist ein Post der Blogserie „Xamarin – Cross Platform Mobile Development“. Teil Eins ist unter Xamarin – Cross Platform Mobile Development (1/3) zu finden.

Folglich wird die Entwicklung von Applikationen für alle drei Plattformen in einer einzigen Sprache – C# – ermöglicht. Isoliert betrachtet ist dies bereits ein gravierender Vorteil gegenüber einer plattformspezifischen Entwicklung. So wird anstelle von Java, Objective-C und C# Know-how lediglich Letzteres benötigt.

Die Fokussierung auf C# als Einheitssprache wird durch die Einbettung der vollwertigen .NET Runtime Mono (mono-project.com) in das jeweilige App-Bundle ermöglicht. Diese übernimmt die Ausführung des finalen iOS ARM Binary oder Android APK ohne jegliches Cross-Compiling und ohne der Verwendung eines Interpreters. Gravierende Performance Einbussen sind nicht vernehmbar, lediglich ein vergleichsweise etwas langsamerer initialer App Start, welcher durch den direkt proportional zur Anzahl verlinkter APIs wachsenden Footprint (min. 2.5 MB) verursacht wird.

Entgegen allen Erwartungen wird nicht zwanghaft nach einem gemeinsamen Nenner der verschiedenen Plattformen gesucht. Ebenso wird auf eine starke Abstraktion verzichtet. Realisiert wird dies mit sogenannten Native-Bindings, welche weiterhin jegliche Native Funktionalität möglichst direkt zur Verfügung stellen. Theoretisch kann so alles, was mit Java oder Objective-C plattformspezifisch möglich ist, auch mit Xamarin in C# implementiert werden. Dies bringt natürlich den Nachteil mit sich, dass weiterhin entsprechendes plattformspezifisches Detail-Know-How benötigt wird.

Ganz nach der Cross-Development-Idee gerichtet, wird – oder besser sollte – jegliche Business Logic vollständig in ein Shared Library ausgelagert werden. Diese wird bei der anschliessenden Client-Implementierung von allen Plattformen gleichermassen eingebunden. Allein hierdurch ist ein durchschnittlicher Code-Reuse von mindestens 50% realisierbar.

xamarin2

Das UI hingegen wird weiterhin plattformspezifisch entwickelt. Damit unterscheidet sich Xamarin gravierend von anderen Development Tools. Dank diesem Ansatz kann auf jede Plattform mit einem gewisser Mehraufwand und mit Hilfe von plattformspezifischen UI Implementierungen entsprechend fokussiert eingegangen werden. Dies hat mitunter den grossen Vorteil, dass nicht zwanghaft ein generisches – für alle Betriebssysteme gültiges – GUI entwickelt werden muss. Ein sehr wichtiges Detail hierbei ist, dass auch die UI bzw. deren Logik in C# implementiert werden muss.

So schön dieser Kompromiss auch klingen mag, er bringt auch einige Nachteile mit sich. Beispielsweise kann die UI Entwicklung nicht mehr so einfach von iOS oder Android Entwicklern übernommen werden. Stattdessen müssen mit der jeweiligen Zielplattform vertraute Entwickler zuvor C# als Sprache kennen oder lernen und anschliessend auch den allgemeinen Umgang mit Visual Studio oder Xamarin Studio als IDE erlernen.

Berechtigt ist die Frage nach der Generalisierung bzw. der vollständigen Implementierung von C# bewanderten Entwicklern. Die UI Entwicklung stellt .NET Entwickler jedoch vor eine grosse Herausforderung, da hierfür die plattformspezifischen SDKs, deren Komponenten, Verwendung und architektonische Konzepte bekannt sein müssen. Aus eigener Erfahrung weiss ich, dass man diese lediglich durch die direkte Native Entwicklung auf der jeweiligen Plattform vernünftig erlernen kann.

Grundsätzlich wird für die Cross Plattform Entwicklung mit Xamarin folgendes benötigt:

  • .NET Entwickler ohne spezifischer mobile Erfahrung für sämtlich Business Logic bzw. ein Shared Library
  • Plattformspezifische Entwickler (iOS, Android, etc.) mit C#/.Net Know-how für das UI samt Logik
  • Xamarin Lizenzen für 1000,- USD jährlich pro Entwickler pro Plattform (store.xamarin.com)

Weitere erwähnenswerte Xamarin Features/Facts sind:

  • Die Xamarin-seitige Adaption von neuen mobile OS Releases soll nach eigener Aussage innerhalb von wenigen Tagen über die Bühne gehen
  • Durch eigene Native Binding Projects können plattformspezifische Libraries weiterhin verwendet werden
  • Neben iOS, Android und Windows Phone können auch Windows 8 und Mac OS Apps erstellt werden

Dank iOS und Android spezifischen Tutorials wird der Umstieg oder besser Einstieg in die Mobile Entwicklung mit Xamarin stark erleichtert. Hierzu können die folgenden Ressourcen allen interessierten Personen mit technischem Background nur wärmsten empfohlen werden:

Im Dritten und damit auch letzten Teil dieser Blogserie folgt ein detailliertes Resümee zu Xamarin als Cross Platform Lösung samt Learnings und wertvolle Erkenntnisse aus direkter Projekterfahrung.

Hier finden Sie diesen Beitrag in englisch.

Hinterlasse eine Antwort

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

*

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>