Unsere Erfahrung mit Xamarin

Xamarin wird immer interessanter um Cross-Plattform-Apps zu bauen, also Apps die auf verschiedenen Betriebssystemen wie Android, iOS und WindowsPhone laufen. Der Grund dafür ist auch, dass man Software Code wiederverwenden kann, welcher in C# geschrieben wurde. Dadurch ist Xamarin besonders für Enterprise Lösungen (Unternehmenslösungen) geeignet.

Wir haben ein paar Erfahrungen mit dieser neuen Software. Hier einige Vorteile und einige Nachteile davon.

Neuer Stern am Himmel

Xamarin wird derzeit als DIE Lösung für die Cross-Plattform App Entwicklung angesehen. Es ist relativ neu. Die Firma welche die Software herstellt wurde im Mai 2011 gegründet. Man kann sagen, dass es seit 2014 so wirklich in den Mainstream gekommen ist. Es erlaubt die Entwicklung von Android, iOS und WindowsPhone Apps auf Basis von C#. C# wiederum ist eine Programmiersprache die schon seit langem, besonders von Unternehmen, für die Entwicklung von Desktop-Anwendungen genutzt wird. Daher besteht eine Menge an Software-Code (sogenannte Libraries) für diese Softwaresprache. Dieser kann zu einem Teil von Xamarin genutzt werden und daher verringert sich der Entwicklungsaufwand dementsprechend zusätzlich.

UI/ Nutzeroberfläche

Einmal entwickelt wird das Design auf allen Plattformen (Android, iOS, WindowsPhone) dargestellt. Jedoch muss man hier sagen, dass das Design nicht so TOP sein wird, wie es bei einer Nativen Programmierung der Fall wäre. Es ist zwar nicht unmöglich, jedoch wird es einen sehr grossen Aufwand an Testing und Re-Programmierung erzeugen.

Falls man also ein TOP (damit ist „sehr gut“ gemeint) Design will, sollte man auf Native Apps zurückgreifen. In einigen Fällen kann es jedoch, besonders im Enterprise Bereich, Sinn machen auch ein abgespecktes Design zu haben. Eine „Reisekosten-Freigabe“-App kann auch etwas weniger schick sein, sollte aber in der Lage sein mit der internen Firmen-Software zu kommunizieren. Das ist mit einer App basierend auf C# einfacher, als das mit einer Nativen Programmierung möglich wäre.

Nutzung von Code über mehrere Plattformen hinweg

Programmiert man auf iOS ObjectC oder XCode und wird darin ein Spezialist, dann wird diese sehr performant sein. Cross-Plattform Entwicklungen können hier nicht mithalten. Jedoch wird die Programmierung basierend auf ObjectC oder XCode nur auf EINER Plattform laufen und der Code kann nicht, oder nur eingeschränkt teilweise, für andere Programmierungen weiterverwendet werden.

Bei Xamarin sieht das anders aus. Hier kann man einen Grossteil für Android, iOS und WindowsPhone nutzen. Das verringert die Entwicklungszeit.

Performance

Auch was die Performance angeht, ist Native eigentlich immer (Stand 02.05.2015) die bessere Lösung. Bei Cross-Plattform Apps ist die Performance immer eine Herausforderung. Üblicherweise läuft es iOS gut und auf Android weniger gut (bei WindowsPhone fehlen uns die Erfahrungswerte).

Hier sollte man auch schauen, welchen Zweck die App hat. Geht es darum die eigenen Mitarbeiter mit Apps zu bedienen, oder geht es eher in Richtung Kunden? Eigene Mitarbeiter oder Partnerunternehmen werden schon eher ein paar Sekunden warten, bis die App geladen hat. Kunden mögen hier eventuell nicht so kulant sein.

Neu

–Ich merke schon es geht hier ein wenig in die negative Richtung. Aber wir wollen ja über unsere Erfahrung berichten 🙂 Nicht über Wunschträume.–

Da die Plattform sehr neu ist, gibt es noch einige Bugs zu beseitigen. Auch gibt es nur wenige offene Foren auf welchen man Support erhalten könnte (Das liegt auch daran, dass Xamarin nicht lizenzfrei sondern kostenpflichtig ist).

Gleichzeitig weiss man nie wie sich neue Plattformen entwickeln werden. Sencha Touch war in seiner Anfangsphase auch sehr ge-hyped worden. Heutzutage hat es jedoch an Stellenwert verloren.

Besonders für Entwicklungsunternehmen kann es lukrativ sein, früh auf diese Plattform zu setzen. Anwender-Unternehmen sollten jedoch die Abwägung machen, ob es sich bereits lohnt auf diese neue Entwicklung zu setzen.

Wenige Entwickler

Ein weiterer Nachteil (entschuldigt die vielen Nachteile 🙂 ) ist, dass es in diesem Bereich sehr wenige Entwickler gibt. Da die Entwicklungsumgebung sehr neu ist, gibt es dementsprechend wenige Entwickler welche sich darauf spezialisiert haben.

Man sagt zwar das es leicht zu erlernen ist, jedoch muss man gute Kenntnisse in C# (eher für Desktop-Anwendungsprogrammierung gedacht), ObjectiveC (Mobile App Programmierung) und Java mitbringen. Die meisten Entwickler fokussieren sich jedoch eher auf Desktop-Programmierung ODER Mobile App Programmierung. Auch Gehaltsmässig sind Programmierer mit einem bestimmten Fokus immer im Vorteil, daher ist die Erlernung von verschiedensten Disziplinen (Dekstop, Mobile, etc.) weniger oft verbreitet.

Fraglich ist auch, ob ein gut bezahlter Mobile App Entwickler mit Kenntnissen in iOS, auf eine Mischform-Programmierung umsteigen möchte. Das Gleiche gilt für gutbezahlte und spezialisierte C# Entwickler (welchen oftmals auch der „Mobile“-Hintergrund fehlt).

Spezialisten notwendig

Eine Sache welche bei, besonders Cross-Plattform-Entwicklungen, wichtig ist, dass die Entwickler die daran arbeiten Spezialisten sind. Wird der Code nicht richtig programmiert, dann gibt es meistens Performance Probleme. Junior Entwickler schreiben den Code in vielen Fällen nicht effizient genug, um die geforderte Schnelligkeit der App zu erreichen. Jede unnötige Zeile Code sollte vermieden werden und besonders Spezialisten wissen, wie man hier optimieren kann.

Lizenzpflichtig

Ein weiterer Punkt der zu beachten ist, sind die Lizenzkosten bei Xamarin. Pro Arbeitsplatz veranschlagt die Bereitstellungs-Firma 2000 US Dollar im Jahr. Eine nicht kleine Summe. Auch dies hält viele ab auf dieser Plattform zu entwickeln. Besonders weil zum Beispiel Android und iOS hauptsächlich kostenfrei sind.

Wann lohnt sich diese Entwicklungsumgebung?

Nach dem Schreiben habe ich gemerkt: Die meisten Punkte sind eher negativ in diesem Text. In diesem Teil wollen wir uns jedoch damit beschäftigen, wann sich eine Entwicklung auf dieser Plattform lohnt.

Enterprise Lösungen

Besonders Grossunternehmen haben bereits eine Menge an wiederverwendbarem Code basierend auf C#. Diese kann man bei einer Programmierung mit Xamarin nutzen. Das spart Zeit und Geld, beides Dinge an denen Unternehmen zunehmend sparen müssen, besonders deren IT-Abteilungen.

Spezialisten vorhanden

Wie in diesem Beitrag bereits erwähnt, lohnt sich eine Entwicklung, wenn man Spezialisten (YUHIRO bietet Xamarin Experten an) hat, welche effizienten Code programmieren können. Denn nur dann macht eine Programmierung darauf Sinn.

Nutzeroberfläche

Besonders bei Unternehmensinternen Apps welche eine spezifische Aufgabe erfüllen (zum Beispiel: Reisekostenabrechnung, Gehaltseinsicht, CRM-System, etc.), braucht es nicht unbedingt eine super tolle Benutzeroberfläche. Auch muss das System nicht super-schnell sein (jedoch muss es eine akzeptable Geschwindigkeit aufweisen). Auch hier sind Xamarin Apps von Vorteil. Kurz: Wenn es um interne Mitarbeiter/ Management oder externe Partner geht, in denen das Design und die Geschwindigkeit nicht ausschlaggebend sind.

Fazit

Unsere Erfahrung ist, dass man mit der Entwicklungsumgebung spannende Apps bauen kann, und dies zudem schnell und preisgünstig (zumindest schneller und preisgünstiger als eine separate Entwicklung für jede Plattform).

Planen Sie mit Xamarin zu entwickeln? Haben Sie bereits damit Apps erstellt? Wir freuen uns auf einen Austausch.

Bilder: Flickr.com/ Bellet/ Ghostman


Der Autor: Sascha Thattil arbeitet bei YUHIRO und hilft Unternehmern und Unternehmen beim einfachen Aufbau von Programmier-Teams in Indien. YUHIRO ist ein deutsch-indisches Unternehmen welches IT Firmen, Agenturen und IT Abteilungen Softwareentwickler bereitstellt und Softwareprojekte abwickelt.

Schreibe einen Kommentar