10.03.2017 Ein Tool für alles?

Vor- und Nachteile von Xamarin

Von: Karim El Jed

Eine für alle. Geht das? Mit der Xamarin-Plattform lassen sich native Apps für verschiedene Plattformen in derselben Programmiersprache und mit denselben Tools entwickeln. Was sind die Vorteile? Wo liegen die Nachteile? Und wann lohnt sich Xamarin.Forms? Zwei Praxisbeispiele helfen weiter >>>

Xamarin - ein Tool für alles?

Xamarin - ein Tool für alles?

Das fachliche Konzept für die neue App steht, doch nun stellt sich die Frage nach der technischen Umsetzung: Web, Hybrid oder doch lieber nativ? Oft wäre nativ die richtige Wahl, aber die Kosten für eine native Cross-Plattform-Entwicklung sind aus Kosten/Nutzen-Sicht oftmals sehr hoch. Ein Cross-Plattform-Ansatz verspricht hier Abhilfe.

Apps, ob für Kunden oder Mitarbeiter, sind ein wichtiger Baustein für digitale Services, die Unternehmen heute erbringen sollten, um ihre Wettbewerbsfähigkeit zu erhalten. Nachdem mögliche Dienstleitungen und Prozesse identifiziert sind, die über eine App digitalisiert werden sollen, stellt sich die Frage nach der technischen Umsetzung. Hier stehen die Unternehmen vor grundsätzlichen Entscheidungen: Es gilt, die Vor- und Nachteile der jeweiligen Technologie bei jeder App mit den eigenen Anforderungen und Ansprüchen abzuwägen. Eine Einheitslösung gibt es im Grunde nicht, meist ist ein zweigleisiger Ansatz sinnvoller als eine „Immer-Nativ“- oder „Immer-Hybrid“-Strategie.

Die native App-Entwicklung verspricht aus Benutzersicht oft die beste User Experience; aus Kostengründen wird sich dann letzten Endes aber oft für einen hybriden Ansatz entschieden. Vielleicht lohnt sich in diesem Zusammenhang ein Blick auf die Xamarin-Plattform, mit der sich native Apps zu geringeren Kosten für mehrere Plattformen umsetzen lassen sollen.

Lohnt sich Xamarin?

Native App-Entwicklung ist deshalb so kostspielig, weil für jede Plattform (z.B. iOS, Android und Windows) eine andere Programmiersprache und unterschiedliche Entwicklungstools verwendet werden müssen. Man benötigt somit für jede Plattform mindestens einen Entwickler mit entsprechenden Kenntnissen. Das bedeutet aber auch, dass die komplette App-Logik mehrfach entwickelt werden muss. Dies führt zu unterschiedlichen Entwicklungsständen, eine längere Entwicklungszeit bis zur Marktreife und erhöhtem Aufwand bei der Wartung und Pflege der App.

Vorteile von Xamarin

Die Xamarin-Plattform hingegen bietet die Möglichkeit, native Apps für verschiedene Plattformen in derselben Programmiersprache und mit denselben Tools zu entwickeln. Dadurch ist es möglich, den nicht plattformspezifischen Teil der App-Logik, beispielsweise die Server-Kommunikation und die Business-Regeln, wiederzuverwenden. Die Benutzeroberflächen werden weiterhin plattformspezifisch erstellt. Dies führt zu einer schnelleren und einer einheitlicheren Umsetzung der App.

Wie funktioniert das Prinzip?

Das Funktionsprinzip der Entwicklungsplattform besteht aus drei Teilen:

  • Für die Plattformen Android und iOS gibt es eine Teilimplementierung des .NET Frameworks (Xamarin.iOS und Xamarin.Android). Das bedeutet, dass man C#-Code auf diesen Plattformen wiederverwenden kann, der nur Code aus dieser Teilmenge enthält.
  • Zusätzlich generiert Xamarin C# Wrapper-Klassen für alle plattformspezifischen APIs, die einem iOS- und Android-Entwickler normalerweise zu Verfügung stehen. Somit kann man mit der Programmiersprache C# auch auf alle plattformspezifischen Funktionen zugreifen und z.B. den Fingerabdrucksensor eines iPhones ansteuern.
  • Damit das Ganze letztendlich auch auf Android- oder iOS- Smartphone läuft, werden die so entwickelten Apps über die Xamarin-Compiler in komplett native Apps umgewandelt.

Xamarin.Forms

Mit Xamarin.Forms geht Xamarin noch einen Schritt weiter als bisher. Hier kann man die Oberfläche für alle Plattformen durch eine generische Beschreibungssprache definieren. Somit entfällt ein großer Teil des Aufwands, der für die plattformspezifische Erstellung der Benutzeroberflächen mit dem herkömmlichen Xamarin Framework notwendig war. Trotzdem bleiben die am Ende kompilierten Apps und ihre Oberflächen nativ. Xamarin.Forms wandelt einfach alle generischen UI-Elemente in Ihre nativen Gegenstücke um. Dies funktioniert natürlich nur mit Standardkomponenten. Man hat allerdings auch die Möglichkeit, an jeder Stelle gezielt eigenen UI-Code für die jeweilige Plattform einzubinden.

Nachteile von Xamarin

Auf den ersten Blick scheint das Prinzip hinter Xamarin durchaus Sinn zu machen und viele Vorteile zu haben. Die Nachteile sollen an dieser Stelle aber nicht verschwiegen werden:

Der markanteste Vorteil von Xamarin ist, dass man eine native App nicht mehr mehrfach entwickeln lassen muss. Im Prinzip kann nur ein Team für mehrere Plattformen entwickeln. Es ist zwar weniger plattformspezifisches Know-how erforderlich, dennoch sollte sich ein Xamarin-Entwickler gut mit den einzelnen Plattformen auskennen. Er muss die Oberflächen in der plattformspezifischen Weise erstellen und sollte auch über ein solides Wissen zu den jeweiligen APIs verfügen. Auch bei Xamarin.Forms ist es ab und an nötig, noch an der automatisch generierten Benutzeroberfläche der einzelnen Plattformen Hand anzulegen.
Als Entwicklungsumgebung (IDE) kann der Xamarin Entwickler für alle Plattformen Visual Studio verwenden. Im Gegensatz zu den Entwicklungsumgebungen von Apple und Google ist Visual Studio jedoch nur für individuelle Entwickler und kleine Unternehmen kostenlos.

Apple Hardware nötig

Wenn man für iOS Apps erstellen möchte, ist immer Apple Hardware erforderlich. Daran kann auch Xamarin nichts daran ändern. Deswegen arbeiten viele Entwickler mit einem Mac auf dem nebenbei noch ein virtuelles Windows läuft. Solange man keine Windows Apps erstellen möchte, kann man auch nur mit einem Mac arbeiten und das neue Visual Studio for Mac (ehemals Xamarin Studio) verwenden.

Technisch komplex

Technisch gesehen ist es sehr komplex was Xamarin macht. Diese Komplexität und die Abhängigkeit zu den einzelnen Plattformen machen das Xamarin Framework fehleranfällig. So kann es z.B. passieren, dass sich beim nächsten Android Update ein Pfad eines internen Tools geändert hat, was dann in Xamarin zu einem Fehler führt. Zum Glück ist der Xamarin Support reaktionsschnell und die größer werdende Community sehr aktiv, so dass solche Fehler relativ schnell gefunden und behoben werden.

Xamarin.Forms war sehr lange nur in einem Beta-Stadium und es war fraglich, wie gut dieser Ansatz überhaupt funktionieren kann. Mittlerweile befindet es sich aber in einem ausgereiften Zustand und ist für viele Anwendungsfälle durchaus gut geeignet. Wenn man aber zu viele Elemente in der Benutzeroberfläche plattformspezifisch anpassen muss, dann geht der Zeitvorteil von Xamarin.Forms verloren. In diesem Fall sollte man eher auf das Standardframework setzen.

Wann welches Framework benutzen?

Soviel zur Theorie, aber wie weiß man, wann man welches Framework (Xamarin oder Xamarin.Forms) einsetzt?

Letztendlich kann hier niemandem die Entscheidung abgenommen werden, da jedes Projekt individuelle Anforderungen hat. Grundlegend lässt sich sagen, dass Xamarin.Forms sich gut für Projekte eignet, bei denen eine schnelle Time-to-Market auf möglichst vielen Plattformen wichtiger als eine ausgefeilte UI und eine hohe User Experience ist.

Folgend wird anhand zwei realer Projekte aufgezeigt, für welche Technologie man sich entschieden hat. Die Auflösung erfolgt erst am Ende des jeweiligen Beispiels. Es ist dem Leser überlassen sich während des Lesens der einzelnen Anforderungen zu überlegen, welche Punkte für oder gegen welches Framework sprechen.

Beispiele aus der Praxis

Beispiel 1: App für den Außendienst

Beim ersten Projekt handelt es sich um einen digitalen Produktkatalog für die Außendienstmitarbeiter eines weltweit führenden Herstellers von Oberflächentechnologien.

  • Da die Oberflächen des Kunden eine sehr feine Struktur haben, war die oberste Priorität, ein mobiles Gerät zu finden, das die größtmögliche Anzahl von Pixel-per-inch (ppi) darstellen kann. Das konkrete Betriebssystem spielte eher eine untergeordnete Rolle.
  • Sollte später ein Gerät mit einer noch besseren Auflösung auf den Markt kommen, wäre ein notwendiger Plattformwechsel in Kauf zu nehmen. Die App musste also von vornherein möglichst plattformunabhängig implementiert werden.
  • Die App sollte nicht nur von den Vertrieblern, sondern auch von den Endkunden bedient werden. Daher wurde sehr viel Wert auf ein elegantes Erscheinungsbild, die Einhaltung der Corporate Design Vorgaben und eine plattformspezifische Benutzerführung gelegt.
  • Die Oberflächen-Präsentation sollte in 3D gerendert werden, um das Erscheinungsbild des jeweiligen Produkts in unterschiedlichen Beleuchtungssituationen zu simulieren. Hierfür war eine performante Berechnung und Visualisierung erforderlich.
  • Hohe Performanz war auch wichtig, wenn es darum ging die Bild- und Metadaten aus der mehrere Gigabyte großen lokalen Datenbank zur Laufzeit zu entschlüsseln.

Aufgrund der geschilderten Anforderungen fiel die Entscheidung auf das normale Xamarin Framework.

Beispiel 2: App für B2B-Kunden

Das zweite Projekt wurde für einen international agierenden Anlagenbauer im Bereich Schüttguthandling umgesetzt. Zielgruppe für die App waren die Endkunden des Anlagenbauers, also Anlagenplaner und Anlagenbetreiber.

  • Kernfunktion der App ist ein Anfragenformular für Zellenradschleusen. Nach dem Absenden des Formulars wird automatisiert eine passende Schleuse berechnet und dem Anfrager als CAD-Modell zur Verfügung gestellt, damit es direkt in eine Planung eingebaut werden kann.
  • Neben aktuellen Unternehmensinformationen und einem Produktkatalog, sollte der Kunde Serviceanfragen inklusive Fotoaufnahmen an den Support schicken können.
  • Die Screenlayouts wurden vom Auftraggeber zu Verfügung gestellt. Bis auf eine Ausnahme enthielten alle Screens nur Standard UI-Komponenten.
  • Da es sich um eine App für Endkunden handelte, sollte die Umsetzung sowohl für Android als auch für iOS erfolgen.
  • Für den Kunden war es die erste App, die er entwickeln ließ. Daher war er an einer möglichst preisgünstigen Realisierung interessiert.

Für die Umsetzung dieser App fiel die Entscheidung auf Xamarin.Forms.

Fazit und Ausblick

Der Autor hat den Einsatz von Xamarin bisher nicht bereut. Es knarzt und zwickt zwar ab und zu an so mancher Stelle, aber mit jedem Release kann man sich auf Verbesserungen oder gar neue Tools freuen, die das Programmieren von Apps noch komfortabler machen.

Es gab bisher noch keine Anforderung, die sich nicht mit Xamarin umsetzen ließ. Selbst native Komponenten von Drittherstellern lassen sich über Xamarin Binding Projects in die eigene Xamarin App einbinden.

Microsoft hat die Firma Xamarin im Jahr 2016 aufgekauft und wenig später die Frameworks Xamarin.iOS, Xamarin.Android und Xamarin.Forms als Open-Source veröffentlicht. Seither wächst sowohl die allgemeine Aufmerksamkeit als auch das Interesse der Entwicklergemeinde an diesen Frameworks. Dies ist gute Entwicklung, denn nur Technologien mit einer breiten Unterstützung haben eine langfristige Chance auf dem Markt.

Durch die nun engere Zusammenarbeit mit dem .NET Team kann man davon ausgehen, dass das Xamarin Framework in nicht allzu ferner Zukunft auf der .NET Standard Library aufsetzen wird. Somit lassen sich dann Teile der Businesslogik nicht nur zwischen verschiedenen Apps wiederverwenden, sondern auch in einem linuxbasierten Backend.

Mit der stetigen Weiterentwicklung von Xamarin.Forms wird dieses auch für immer mehr Anwendungsfälle interessant. So gibt es bereits eine Preview, mit der man Apps auch für Samsungs Tizen Betriebssystem entwickeln kann.

Es bleibt also spannend, was die Zukunft im Bereich mobiler App-Entwicklung noch so alles mit sich bringt.

Bildquelle: Thinkstock / iStock

©2017 Alle Rechte bei MEDIENHAUS Verlag GmbH