Warum Xamarin - was ist das überhaupt?

Eine Auswahl an „FAQs“ zur Unterstützung der Technologie Entscheidung für ihre App!

 

Einer der ersten Schritte, den wir im Beratungsprozess mit unseren Kunden besprechen, ist die Wahl der Technologie, auf deren Basis eine App-Entwicklung durchgeführt werden soll. Die geeignete Technologie auszuwählen kann große Auswirkung auf die Kostenstruktur des Angebots sowie die zukünftige Wartbarkeit der Anwendung (und damit natürlich auch die Kosten für Folgeentwicklungen) haben.

 

 

 

Eine der zur Verfügung stehenden Technologien ist Xamarin von Microsoft. Die großen Vorteile der Verwendung von Xamarin basieren auf der Tatsache, dass sich mit Xamarin in der Umsetzung von Multi-Plattform-Apps (d.h. solchen Apps, die für nicht nur eine einzige Plattform entwickelt werden sollen) große Teile der Entwicklungsergebnisse für alle Plattform-Umsetzungen verwenden lassen. Dieser Teil muss daher nur einmal programmiert werden und reduziert damit die initialen sowie die Weiterentwicklungs-Aufwände erheblich.

 

 

 

 

Im Folgenden sollen einige der am häufigsten aufkommenden Fragen rund um den Einsatz von Xamarin beleuchtet werden. Sollten Sie darüber hinaus Fragen haben, so nehmen Sie gerne Kontakt über unseren Chat auf oder schreiben Sie mir eine Mail an bb@next-munich.com - ich freue mich schon jetzt auf einen spannenden Gedankenaustausch!

 

FAQ's zu Xamarin

 
Xamarin, was ist das eigentlich?

Xamarin ist ein Startup welches im Jahr 2016 von Microsoft gekauft wurde. Es hatte sich mit dem Ziel gegründet, die von Microsoft entwickelte Programmiersprache C# und die dazugehörigen APIs des .NET-Frameworks auch auf mobilen Plattformen nutzbar zu machen.

 

 

Was hat es mit Cross Plattform-Entwicklung auf sich?

Mit Cross Plattform-Entwicklung bezeichnen wir alle solche Entwicklungsansätze, die es ermöglichen, in einer Technologie App für unterschiedliche Plattformen zu entwickeln. Xamarin ist eine solche Cross Platform-Technologie die es ermöglicht Apps in C# zu programmieren und sowohl unter iOS als auch Android zu veröffentlichen.

 

 

Warum die Programmiersprache C#

C# ist eine elegante, aktiv in Entwicklung befindliche Programmiersprache die das Umsetzen von Anforderungen in Programmcode leicht macht. Durch ihre große Verbreitung gibt es auch eine große Anzahl an Entwicklern, die mit der Sprache umgehen können.

 

 

Eignet sich Xamarin nur für mobile Betriebssysteme?

In der Tat ist Xamarin nicht auf die Verwendung in mobilen Betriebssystemen wie iOS oder Android beschränkt. Mit der gleichen Technologie lassen sich beispielsweise auch Applikationen für macOS realisieren.

 

 

Wo genau liegen die Vorteile von Xamarin? Gibt es Komplexitäten in der Nutzung des Frameworks, die die Vorteile des geteilten Quellcodes aufheben?

Die Vorteile von Xamarin ergeben sich aus zwei Elementen:

  1. Die Verwendung einer einzigen Programmiersprache zur Umsetzung von Apps für iOS und Android.
  2. Die Möglichkeit, Programmcode zwischen iOS und Android-Apps zu teilen.

Durch die Verwendung der gleichen Programmiersprache wird es für das Team welches an einer Anwendung arbeitet leichter, sich in allen Bereichen des Projekts zurechtzufinden und dort Änderungen vorzunehmen. Auch ein Entwickler der vielleicht primär auf die Entwicklung unter Android fokussiert ist, versteht den unter iOS verwendeten Programmcode und kann dort Änderungen vornehmen. Natürlich ist hierfür ein Verständnis der APIs der jeweiligen Plattform notwendig, es ist aber nicht mehr notwendig, eine neue Programmiersprache zu lernen, zu verstehen und einsetzen zu können, um in der jeweiligen Plattform produktiv sein zu können.

Das Teilen von Programmcode hilft für die Durchführung eines Projekts an mehreren Stellen: zunächst muss der jeweilige Code nur einmal entwickelt werden, wodurch die Aufwände der initialen Entwicklung reduziert werden. Plant man seine App langfristig zu pflegen und weiterzuentwickeln, so greifen diese Vorteile natürlich ebenfalls bei jeder weiteren Iteration. Neben den Aufwandsvorteilen hat geteilter Code darüber hinaus den Vorteil, dass er für das gleiche Verhalten der Apps auf beiden Plattformen sorgt und zudem Änderungswünsche oder gefundene Fehler im geteilten Code nur einmal bearbeitet werden müssen, sich aber direkt in beiden Plattformen wiederfinden. Der dadurch entfallende Abstimmungsaufwand zwischen zwei sonst separat voneinander agierenden Teams kann dabei ganz erheblich sein.

Bevor man diese Vorteile allerdings heben kann bedarf es natürlich einer Einarbeitung in die Technologie und v.a. des Aufsetzens einer durchdachten Software-Architektur, welche die Vorteile maximiert. Dies kann - je nach Vorwissen der eingesetzten Entwickler - mit einer erheblichen Lernkurve einhergehen. Dadurch dass wir bereits über fünf Jahre Erfahrung im Einsatz mit Xamarin verfügen sind unsere Entwickler natürlich unmittelbar produktiv bei der Umsetzung Ihrer App mittels Xamarin.

 

 

Gibt es Abhängigkeiten in Bezug auf Know-how, Lizenzen oder Systemsupport?

Für die professionelle Arbeit mit Xamarin muss eine Lizenz von Visual Studio erworben werden, zum Ausprobieren der Technologie genügt jedoch bereits die Visual Studio Community Edition die kostenfrei herunter geladen werden kann.

Abseits davon benötigt es Erfahrung in der Arbeit mit C# und den .NET APIs sowie Wissen um die auf den beiden Plattformen iOS und Android bereitstehenden APIs, um die plattformspezifischen Code-Anteile einer App erstellen zu können.

Sollten Sie uns mit der Entwicklung einer App mit Xamarin beauftragen, so bringen wir sowohl die benötigten Lizenzen als auch das langjährige Know-How im Umgang mit der Technologie und den beiden Plattformen ein.

 

 

Werden neue native Funktionen rechtzeitig unterstützt?

Da Xamarin es ermöglicht die plattformspezifischen APIs in C# anzusprechen muss Xamarin für diese nativen APIs sogenannte C#-Bindings bereitstellen. Wenn nun Apple oder Google neue Versionen ihrer Betriebssysteme veröffentlichen, so muss Xamarin neue C#-Bindings erzeugen, welche die neuen Funktionen der Betriebssysteme ebenfalls in C# bereitstellen.

Microsoft bemüht sich an dieser Stelle immer, schnellstmöglich auf Aktualisierungen von Apple und Google zu reagieren. Die Erfahrung der letzten Jahre zeigt dabei, dass die neuen C#-Bindings immer so rechtzeitig zur Verfügung stehen, dass damit weit vor der offiziellen Veröffentlichungen der neuen Betriebssystemversionen gearbeitet werden kann.

 

 

Wie hoch sind die faktischen Einsparungen gegenüber einer nativen Entwicklung?

Die realisierbaren Einsparungen sind natürlich ganz vom jeweiligen Projekt abhängig: am meisten profitieren solche Projekte vom Einsatz von Xamarin, bei denen es viel Kommunikation mit Drittsystemen, die Verwaltung von Daten auf dem Endgerät oder spezieller (Rechen-)Logiken bedarf.

Apps, die rein von ihrer grafischen Darstellung leben, für die Inhalte aber keinerlei anspruchsvolle Logiken benötigen, werden eher kleinere Synergien im Rahmen des Code-Sharings realisieren können.

Eine Ausnahme hiervon ist der Einsatz von Xamarin Forms, einer auf Xamarin aufbauenden Technologie welche es ermöglicht, auch den Code plattformübergreifend zu entwickeln, der für den Aufbau und die Verwaltung des User Interface benötigt wird. Da dieser Entwicklungsansatz aber mit einigen Einschränkungen hinsichtlich der Anpassbarkeit des User Interface einhergeht und unsere Kunden in der Regel einen hohen Wert auf die Brillanz der konzeptionellen und gestalterischen Umsetzung legen, arbeiten wir bislang nicht mit dieser Technologie.

 

 

Begebe ich mich in Abhängigkeiten zwischen den Plattformen (iOS / Android) oder lassen sich diese nach wie vor unabhängig planen (UI / Funktionen)?

In der Umsetzung einer App mit Xamarin lassen sich Apps für unterschiedliche Plattformen - falls gewünscht - gänzlich unabhängig voneinander konzeptionieren und gestalten. Technisch gibt es an dieser Stelle keine Einschränkungen, man darf in diesem Fall aber nicht mit den gleichen Code-Sharing-Vorteilen rechnen wie bei einer App, bei der die Konzeption der beiden Plattformen die Vorteile des Code-Sharings mit einbezieht.

 

 

Hat Xamarin Auswirkungen auf die Performance meiner App?

Xamarin funktioniert als eine Schicht die sich zwischen das Betriebssystem der Plattform und die in Xamarin entwickelte App legt. Theoretisch hat Xamarin damit einen Einfluss auf die Performance, da es die in der App vorgesehenen Anweisungen erst an das Betriebssystem weiterreichen muss, bevor das Betriebssystem die Anweisungen selbst ausführt.

In der Praxis nehmen wir keine Geschwindigkeitsnachteile beim Einsatz von Xamarin wahr: wenn Sie eine App, die nativ entwickelt wurde mit einer in Xamarin entwickelten App vergleichen ohne zu wissen, welche der Anwendungen welche Technologie einsetzt, so werden sie bei ähnlich gut programmierten Apps nicht feststellen können, welche auf Xamarin und welche auf eine native Umsetzung zurückgreift.

 

 

Kann Xamarin auf alle nativ angebotenen Funktionen uneingeschränkt zugreifen?

Ja, jede der von den Betriebssystemen der Plattformen zur Verfügung gestellten Funktionen stehen über die von Xamarin bereitgestellten C#-Bindings auch zur Verwendung in Xamarin zur Verfügung.

 

 

Wie unterscheidet sich Xamarin von anderen Cross-Plattform Ansätzen wie Phone Gap oder ReactNative?

Xamarin setzt bei der Technologie auf C# und das .NET-Framework, um Code-Sharing-Vorteile zu ermöglichen. Das User Interface wird dabei aber von den auf der jeweiligen Plattform nativ zur Verfügung stehenden User Interface Komponenten umgesetzt, so dass die Anwendung nativ aussieht und sich exakt so verhält, wie es eine analog mit nativen Technologien entwickelte App tun würde.

PhoneGap setzt im Gegensatz dazu auf eine Umsetzung der gesamten App mittels Web-Technologien wie HTML, CSS und JavaScript. Dadurch können in PhoneGap entwickelte Anwendungen zwar noch mehr Code-Sharing-Synergien realisieren (neben der Logik wird auch das User Interface nur einmalig entwickelt), solche Apps sehen dann aber auch nicht wie native Apps aus und fühlen sich in der Bedienung auch nicht so an. Vergleicht man eine in PhoneGap entwickelte App mit einer in Xamarin oder nativ umgesetzten App, so wird man am User Interface und der behäbigen Bedienung gleich erkennen bei welcher der Apps es sich um die in PhoneGap entwickelte handelt.

ReactNative setzt ähnlich wie PhoneGap auf Web-Technologien für die Entwicklung der Apps. Dabei wird das User Interface jedoch nicht über einen Browser sondern über native User Interface Elemente umgesetzt. Dadurch ist die Performance von in ReactNative entwickelten Apps - analog zu Xamarin - nicht von nativ entwickelten Apps zu unterscheiden. Da ReactNative noch eine recht junge Technologie ist, sind die zur Verfügung stehenden Ressourcen für das Erlernen der Technologie und des Behebens von Fehlern im Entwicklungsprozess noch nicht so umfangreich wie beispielsweise bei Xamarin. Grundsätzlich ist ReactNative aber eine valide Option für die Umsetzung von Apps die Cross-Plattform-Synergien realisieren wollen.

 

 

Ist es denkbar, dass eine Xamarin App Probleme beim App Store oder Play Store Review Prozess bekommt?

Nein, an dieser Stelle sind keine Einschränkungen zu befürchten.

 

 

Können Sie Referenzen für Xamarin Apps nennen?

OSARAM Sales Portal

MyMcDonald's

Bosch Smart Cameras

OLB Banking

CarwashApp

 

Benjamin Broll, Geschäftsführer, bb@next-munich.com