Mittlerweilen besitzt fast jeder eine Smartphone und verschiedenste Apps haben sich schon fest in unseren Alltag integriert. Android und iOS sind dabei die beiden grössten Plattformen aber auch Windows Phone von Microsoft ist am Wachsen.
Die Entwicklung von Apps für zwei oder gar drei Plattformen kann jedoch sehr zeitintensiv und kostenaufwendig werden. Insbesondere, da jede Plattform ihre spezifische Programmiersprache besitzt und somit kaum Code zwischen den Applikationen geteilt werden kann. Daher hat sich in den letzten Jahren ein eigenes Ökosystem an Frameworks entwickelt, die sich das Ziel gesetzt haben Cross Platform Development zu vereinfachen. Dabei können unterschiedliche Strategien verfolgt werden:
Web Apps
Diese Apps werden mit HTML5, CSS und JavaScript entwickelt. Sie laufen jeweils im Browser der mobilen Geräte. Aus diesem Grund haben sie auch nur sehr beschränkten Zugriff auf die Hardware und die Sensoren der Geräte. Als ein weiteres Hindernis werden oft die mobilen Datenverbindungen gesehen, welche zu längeren Ladezeiten führen können.
Dies hat selbst grosse Webseiten wie zum Beispiel Facebook und LinkedIn dazu bewogen Apps für mobile Plattformen anzubieten.
Hybrid Apps
Die Hybrid Apps basieren auch auf HTML5, CSS und JavaScript. Im Gegensatz zu den Web Apps können sie zwar über einen Mobile Store veröffentlich werden, jedoch sind sie keine nativen Applikationen und laufen innerhalb eines Web Containers. PhoneGap ist ein Beispiel eines Frameworks, mit dem man solche Apps entwickeln kann. Durch die Verwendung von Plugins wird der Zugriff auf plattformspezifischen Funktionalitäten ermöglicht. Diese werden jeweils in der plattformspezifischen Sprache entwickelt. Allerdings unterscheiden sich solche Apps immer noch merklich von nativen Apps, da sie oft bei Performance und dem gewohnten Look and Feel nicht mithalten können.
Cross Compiled Apps
Diese Apps werden mit einer Programmiersprache geschrieben und anschliessend in die plattformspezifische Sprache kompiliert. Sie haben somit den Vorteil, dass sie die nativen SDK Bibliotheken verwenden können. Ebenso ist es auch möglich UI Komponenten der jeweiligen Plattform einzusetzen. Weiter kann vollumfänglich auf die Sensoren, wie etwa GPS, Kamera und Gyroskop, zugegriffen werden. Die User Experience ist dadurch gleich gut wie bei einer nativen App.
Native Apps
Native Apps werden mit den plattformspezifischen Programmiersprachen und SDK’s implementiert. Es kann auf alle Hardware Features zugegriffen werden. Möchte man allerdings mehrere Plattformen abdecken muss der sogenannte Silo Approach verwendet werden. Das heisst, dass die App für jede Plattform einzeln entwickelt werden muss. Dabei müssen nicht nur die verschiedenen Programmiersprachen beherrscht, sondern auch unterschiedlichste Entwicklungsumgebungen und Toolchains verwendet werden. Aus diesem Grund werden oftmals verschiedene Entwicklerteams pro Plattform eingesetzt. Dies kann dann wiederum zu mehr Komplexität führen, da sich die Teams auch untereinander absprechen müssen.
Cross-Platform Development mit Xamarin
Wir bei Noser Engineering arbeiten eng mit unserem Partner Xamarin zusammen um unseren Kunden den besten Mehrwert für Ihre mobilen Investitionen zu bieten.
Xamarin ist ein Framework, dass die Cross Compile Strategie verfolgt. Es basiert auf Mono und stellt nahezu 100% der nativen API von Android, iOS und Windows Phone zur Verfügung und steht so der nativen Entwicklung in nichts nach. Als Programmiersprache kommt plattformübergreifend C# zum Einsatz. Dadurch ist es möglich die gesamte Anwendungslogik zu teilen und bis zu 90% des Codes wiederzuverwenden. Lediglich das UI muss für jede Plattform einzeln entwickelt werden. Für das Erstellen des UI kann auf bewährte Designtools wie Storyboards für iOS, AXML für Android und XAML mit Blend für Windows Phone zugegriffen werden.
Sollte es doch einmal nötig sein, dass man auf eine bereits bestehende Objective-C, Java oder C/C++ Bibliotheken zugreifen muss, bietet Xamarin ausserdem die notwendige Interoperabilität.
Die Cross Compile Strategie hat einige Vorteile gegenüber dem Silo Approach der nativen Entwicklung:
- Die Entwicklung kann mit einer Programmiersprache durchgeführt werden und erleichtert somit die Arbeit des Entwicklers.
- Die Anwendungslogik, welche den grössten Teil der Entwicklung ausmacht, kann zwischen den verschiedenen Plattformen geteilt werden. Dadurch können Code Duplikationen vermieden werden. Dies führt zu einer Verkürzung der Entwicklungszeit und auch bei der Wartung und Weiterentwicklung der Applikation müssen Änderungen jeweils nur an einer Stelle vorgenommen werden.
- Durch die Aufwandersparnis, die durch das Teilen der Anwendungslogik entsteht, lassen sich erheblich Kosten einsparen.
Pingback: Noser Blog Gesamtlösung für Mobile-Apps mit Xamarin.Forms, Windows Azure Services und ASP.NET MVC - Noser Blog
Pingback: Noser Blog Looking at Xamarin.Forms from Enterprise view - Noser Blog