Xamarin – Cross Platform Mobile Development (1/3)

Mobile hier – Mobile da, mittlerweile muss beinahe alles zumindest mobil zugänglich sein. Dabei wird zwischen Mobile optimierten Websites, reinen Web-Apps und den klassischen native Apps unterschieden. Letztere werden dediziert für eine zuvor definierte Zielplattform entwickelt.

mobile_devices

Da mehrere sich stark differenzierende Entwicklungs-Ansätze zur Verfügung stehen, ist es nicht verwunderlich, dass sich auf die Frage nach dem besseren oder eher langfristig gesehen nachhaltigeren Ansatz die Geister scheiden. Sobald die Interaktion des Benutzers mit der mobilen Lösung ein reines Konsumieren von Inhalt überschreitet, generell komplexere Züge annimmt oder ein klar definierter wiederkehrender Arbeitsschritt möglichst effizient und schön zugänglich gemacht wird, sollte unbedingt ein nativer Ansatz in Erwägung gezogen werden.

Wird ein Entscheid zu Gunsten einer native Applikation gefällt offenbart sich bereits die nächste Herausforderung. Mit iOS, Android und Windows Phone stehen ganze drei Mobile-Betriebssysteme im Raum, die in einem B2C Szenario unbedingt berücksichtigt werden sollten.

Aus Entwickler-Sicht bedeutet dies, dass folglich auf drei unterschiedlichen Plattformen wie auch in drei unterschiedlichen Sprachen entwickelt werden muss:

Relativ High-Level betrachtet bringt die native App-Entwicklung dabei klare Vorteile mit sich:

  • Performance – die Hardware kann vollständig ausgereizt werden
  • Direkter Zugriff auf Device/Plattform-spezifische APIs
  • Die App fühlt sich “native” an, keine Delays oder nur halbwegs adaptierte Interaction Pattern
  • Direkte Adaption von SDK Changes – keinerlei Abhängigkeiten zu Dritten
  • Sicherheits-Aspekte können direkter berücksichtigt werden

Dennoch sollten auch folgende Nachteile der native App-Entwicklung nicht verschwiegen werden:

  • Es muss für jede Plattform gesondert entwickelt werden
  • Man muss sich mit jeder Plattform, deren Entwicklungsumgebung und Sprache auseinandersetzen
  • Jedes OS hat seine spezifischen Eigenheiten und Fallstricke

Die angeführten Punkte verdeutlichen dabei sehr eindrücklich, dass die Anforderungen an die native App-Entwicklung generell und erst recht für mehrere Zielplattformen sehr hoch sind. So müssen nicht nur verschiedenste Sprachen beherrscht, sondern auch der Umgang mit den zugehörigen IDEs und Dev-Tools erlernt werden.

Nur allzu nachvollziehbar ist daher das erwartungsmässig hohe Interesse an Frameworks die plattformneutrale Entwicklung versprechen.

Die Namics hat initial mit einem relativ starken Fokus auf Apples iOS als Zielplattform begonnen sich mit der native App-Entwicklung auseinander zu setzen. Dies hatte sicherlich mehrere Gründe, mitunter die Tatsache, dass iOS noch immer der Platzhirsch (User- != Absatzzahlen, goo.gl/iVrt5J) unter den mobilen Betriebssystemen in der Schweiz ist, die Device Fragmentierung um ein wesentliches überschaubarer ist oder gar ganz banal die Auftragslage dies indirekt zu diesem Zeitpunkt diktierte.

In der Zwischenzeit häufen sich die Anfragen nach mobilen Lösungen, welche auf mehreren Plattformen ausgerollt werden sollen. Sei es initial oder in Anbetracht einer langfristigen Skalierbarkeit. Einen wirklichen Unterschied macht dies nicht. Um so wichtiger ist es, sich möglichst schnell die Frage zu stellen, in wie fern es denn wenn überhaupt sinnvoll ist, eine App mehrfach vollständig von Grund auf separat für verschiedenste Zielplattformen zu entwickeln.

Für das angedeutete Szenario bzw. die Herausforderung mehrere Plattformen möglichst effizient zu bedienen existieren verschiedenste Produkte und Frameworks die genau dieser Problematik Abhilfe verschaffen wollen. Diese meist ganz nach dem Konzept Build Once, Deploy Many. In der Realität setzen die meisten Ansätze auf den grössten gemeinsamen Nenner der verschiedenen mobilen Betriebssysteme, welcher erwartungsmässig leider relativ klein ausfällt.

Dies ist im Hinblick auf die Implementierung der funktionalen Logik nicht unbedingt weiter kritisch, wird es jedoch spätestens bei der Umsetzung der Benutzeroberfläche (GUI). Hier unterscheiden sich Plattform-spezfische Pattern teilweise so gravierend, dass sie schlicht und ergreifend nicht sinnvoll harmonisiert werden können. Und genau dieser Punkt verurteilt bereits einen Grossteil der Cross-Plattform Development Tools zum Scheitern.

Eine Ausnahme, gar ein Lichtblick in der Ferne könnte Xamarin sein.

xamarin

Vorteilhafterweise können wir bereits auf direkte Projekterfahrung zurückblicken und konnten uns entsprechend über mehrere Monate hinweg ein eigenes Urteil bilden.

Mehr dazu im zweiten Teil dieser Blogserie.

Hier finden Sie diesen Beitrag in englisch.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>