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.
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.
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.
Das Funktionsprinzip der Entwicklungsplattform besteht aus drei Teilen:
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.
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.
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 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.
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.
Beim ersten Projekt handelt es sich um einen digitalen Produktkatalog für die Außendienstmitarbeiter eines weltweit führenden Herstellers von Oberflächentechnologien.
Aufgrund der geschilderten Anforderungen fiel die Entscheidung auf das normale Xamarin Framework.
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.
Für die Umsetzung dieser App fiel die Entscheidung auf Xamarin.Forms.
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