Erfahrungen aus der Cross-Plattform-Entwicklung mit Xamarin, Teil 1: Apps und Frameworks

Die Cross-Plattform-Entwicklung verspricht hauptsächlich für mobile Betriebssysteme viel: Code nur einmal schreiben und auf verschiedenen Plattformen nutzen. Der Auftakt eines Artikeldreiteilers zu Xamarin gibt Überblick über die verschiedenen Ansätze und Entscheidungshilfen für die Auswahl eines geeigneten Frameworks.

Know-how  –  16 Kommentare

Die Frage nach Cross-Plattform-Entwicklung für mobile Betriebssysteme ist so alt wie die verschiedenen Plattformen selbst. Der Wunsch, mit nur einer Codebasis und minimalen Änderungen mehrere Zielplattformen bedienen zu können, ist verlockend. Die Alternative ist, für jede Zielplattform eine separate Applikation in der Programmiersprache der jeweiligen Plattform zu erstellen und zu pflegen.

Xamarin ist ein Framework für die Cross-Plattform-Entwicklung. Aber was genau ist Cross-Plattform-Entwicklung überhaupt? Welche Frameworks gibt es außer Xamarin noch? Wie funktioniert die Entwicklung mit Xamarin, und welche Vor- und Nachteile hat das für Entwickler? Diese und andere Fragen beantworten drei Artikel zur Cross-Plattform-Entwicklung mit Xamarin und Xamarin.Forms.

Erfahrungen aus der Cross-Plattform-Entwicklung mit Xamarin

  • Teil 1: Historie der Cross-Plattform-Entwicklung und Entscheidungshilfen für die Auswahl eines geeigneten Frameworks
  • Teil 2: Übersicht über Xamarin
  • Teil 3: Entwicklungs-Workflow in der Ära von DevOps

Das moderne App-Zeitalter

Apples iPhone hat das Zeitalter der Smartphones eingeläutet, und obwohl Android schon länger den Markt der mobilen Betriebssysteme bei Smartphones dominiert, müssen sich Entwickler weiterhin vielen Herausforderungen stellen. Nutzer erwarten von den Apps auf ihren Geräten viel. Klare, einfach zu bedienende und schicke User Interfaces (UIs) gehören bereits lange zum guten Ton.

Dabei hat jedes Betriebssystem seine eigenen Paradigmen, etwa der Zurück-Button unter Android, der auf iOS vollständig fehlt. Die Bildschirmgrößen und Pixeldichten sind so verschieden wie die verfügbaren Geräteklassen, auf denen Apps verfügbar sind (z. B. Smartphones, Phablets, Tablets, Smart-TVs, Set-Top-Boxen, TV-Sticks ...). Die Geschwindigkeit der (Grafik-)Prozessoren unterscheidet sich ebenso wie die Menge an Arbeitsspeicher. Hardwarefeatures wie Gyroskope, Kameras oder Mikrofone diversifizieren die Geräte weiter. Gleichzeitig ist es für manche Klassen von Anwendungen wie Musik- oder Videostreaming-Dienste unerlässlich, auf fast allen Geräten verfügbar zu sein.

Da ist das Versprechen der Cross-Plattform-Entwicklung, nur eine Code-Basis pflegen zu müssen und Anwendungen auf viele Plattformen bringen zu können, verlockend. Denn erfahrene Entwickler sind Mangelware und Teams notorisch unterbesetzt sowie unter Zeitdruck.

Beispiel Facebook

Schon früh in der Geschichte mobiler Betriebssysteme wurden verschiedene Ansätze der Cross-Plattform-Entwicklung präsentiert und versprachen Abhilfe. Am Beispiel der Facebook-App lässt sich viel über Cross-Plattform-Entwicklung lernen. Angefangen hat das erfolgreichste soziale Netz 2004 als Webseite für Studierende der Universität Harvard. Drei Jahre später folgte eine angepasste Version der Seite für Handys und eine weitere für das erste iPhone. Die Facebook-Webseite war das Produkt der jungen Firma und die Eigenheiten der mobilen Endgeräte wurden über eine spezifische Sicht auf die Webseite abgefangen. Als Apple 2008 den App Store für externe Entwickler freigab, veröffentlichte Facebook eine App für das damailge iPhone OS. Erstellt war sie mit dem nativen, also speziell für diese eine Plattform entwickelten iPhone OS SDK.

Kaum zwei Jahre gingen ins Land, bis Facebook 2010 seine Web-App auf Android und iOS veröffentlichte. Das Ziel des sozialen Netzes war es, so viel Code wie möglich zwischen iOS und Android wiederzuverwenden, um so schnelle Iterationen zu ermöglichen und eine einheitliche Nutzererfahrung auf allen Plattformen sicherzustellen. Die App war jedoch langsam, träge, stürzte häufig ab und Nutzer, die an die Designsprache ihrer jeweiligen Plattform gewöhnt waren, empfanden die Bedienung der App als mühselig.

2011 versuchte Facebook mit "Project Spartan", eine eigene Web-basierte Plattform als Gegengewicht zu den App-Stores der mobilen Betriebssysteme zu etablieren. Sie verschwand aber wieder genauso unvermittelt, wie sie gekommen war. Im gleichen Jahr veröffentlichte Facebook eine App speziell für das iPad und separate Apps für den Messenger auf iOS und Android. Die Codebasis und die Komplexität wuchsen.

2012 vollzog Facebook auf einmal eine Kehrtwende und veröffentlichte Versionen seiner App, die zu großen Teilen mit nativen, plattformspezifischen Techniken erstellt wurden. Durch die Nutzung plattformspezifischer Techniken konnte das soziale Netz 2013 mit Facebook Home sogar eine Interaktion ermöglichen, die vollständig nur unter Android funktionierte.

Das Thema Webentwicklung wurde jedoch keinesfalls vernachlässigt, denn im selben Jahr wurde das React-Framework Open Source. Zu diesem Zeitpunkt sprachen Facebook-Entwickler davon, dass sie bereits seit vier Jahren an diesem Tool arbeiteten. Weitere zwei Jahre später veröffentlichte Facebook React Native als Möglichkeit, mit JavaScript-Code native Applikationen zu erstellen. Spätestens 2016 enthielt die Facebook-App Teile, die mit React Native erstellt wurden und damit wieder auf Webtechniken basierten. Facebook selbst nennt diesen Ansatz nicht "write once, run everywhere", sondern "learn once, write everywhere", da seine Entwickler nach eigener Aussage weiterhin für große Teile der Applikationen
plattformspezifischen Code schreiben.