Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf unsere Webseite zu analysieren. Außerdem geben wir Informationen zu Ihrer Verwendung unserer Webseite an unsere Partner für soziale Medien, Webung und Analysen weiter. Unsere Partner führen diese Informationen möglicherweise mit weiteren Daten zusammen, die Sie ihnen bereitgestellt haben oder die sie im Rahmen Ihrer Nutzung der Dienste gesammelt haben. Sie akzeptieren unsere Cookies, wenn sie "Cookies zulassen" klicken und damit fortfahren diese Webseite zu nutzen.

Cookies zulassen Datenschutzerklärung

Plattformübergreifende Lösungen zur Entwicklung mobiler Applikationen

„Immer über den eigenen Tellerrand hinausblicken" wird bei uns gelebt. Wir haben immer ein Auge auf neue Entwicklungen und scheuen uns nicht, unsere Komfortzone auch mal zu verlassen.

Coding

So gehörte zauberware technologies zu einem der ersten IT-Unternehmen, welches Xamarin produktiv für Kundenlösungen eingesetzt hat. Anfängliche Skepsis bei den Kunden, sowie der jeweiligen IT-Architekten, konnte durch die Einsparung von Entwicklungs- und Betriebsaufwänden, sowie durch die vorausgesagte und erfolgte Übernahme von Xamarin durch Microsoft ausgeräumt werden.

Grundsätzlich kann die Nutzung einer plattformübergreifenden Lösung, soweit richtig gewählt und eingesetzt, den Aufwand für die Entwicklung & Test, sowie für den laufenden Betrieb, deutlich reduzieren und vereinfachen. „code sharing" heisst dabei das Zauberwort, also die gemeinsame Verwendung von Programmcode für unterschiedliche Plattformen. Vor Allem im B2B-Bereich sind die Tage in denen jede App einzeln für z.B. Android, iOS und Windows entwickelt wurde vorüber. Wer aber nun glaubt mit ein paar Klicks DIE einzigartige App zu entwickeln liegt leider falsch. Wir wollen hier einige Plattformen und Tools unter die Lupe nehmen.

Welche Option ist die Beste? 

Jede Alternative in der Entwicklung von nativen Codes hat seine Vor- und Nachteile und folgt meist einer eigenen Philosophie. Die Wahl der Plattform hängt aus unserer Sicht von folgenden Schlüsselfaktoren ab:

  • Fähigkeiten des Entwicklungsteams
  • Anforderungen an die zu entwickelnden Apps
  • Anwendungssegment generell
  • Strategische Ausrichtung des Kunden

Im Folgenden haben wir einige Plattformen betrachtet welche wir für besonders relevant halten und mit welchen wir bereits Erfahrungen sammeln konnten.

Xamarin

Xamarin gehört heute zu einer der meist verwendeten Plattformen wenn es um die Entwicklung von mobilen Applikationen geht. Mit Xamarin können native Android, iOS, Windows und Mac Apps in C# entwickelt werden. Zumeist wird die Architektur der Applikationen in einen Core-Bereich und die Oberflächen aufgeteilt. Im Core finden sich dann z.B. die Funktionalitäten hinsichtlich Datenspeicherung - und Zugriff, sowie die generelle Business-Logik wieder. Dieser Core beinhaltet je nach Anwendung ca. 60-80% des zu schreibenden Codes. Die Entwicklung der Oberflächen erfolgt ebenfalls in C# und direkt im Xamarin Studio welches einige problembehaftete Bereiche von Apples eigenem XCode elegant löst.

Damit ergibt sich also keine komplette Wiederverwendung des Codes auf allen Plattformen, der große Vorteil liegt jedoch darin dass Xamarin beim kompilieren native Applikationen für die jeweilige Plattform erzeugt. In der Anwendung ist außer einer größeren Download-Datei bedingt durch die Verwendung von zusätzlichen Bibliotheken, kein Unterschied zu normalen nativen Apps zu erkennen. Mit nuget steht dabei ein effizienter Paketmanager und umfangreiche Bibliotheken zur einfachen Nutzung zur Verfügung. die verwendete Sprache C# gewinnt zurecht immer mehr Fans als "Java wie es sein sollte" und als professionelle, durchdachte Programmiersprache, vor Allem im Gegensatz zu Apples recht junger Eigenkreation Swift, welche ständigen Änderungen unterworfen ist.

Je nach Anforderungen kann auch der Einsatz von Xamarin.Forms Sinn machen, welches zusätzlich die Oberflächen-Entwicklung plattformübergreifend ermöglicht. Nach anfänglichen Enttäuschungen konnten wir mittlerweile auch hier kaum noch Unterschiede zu nativen Apps feststellen.

Um die Begeisterung ein wenig zu dämpfen müssen wir gleich hinterherschieben dass Xamarin eine längere und intensivere Einarbeitungsphase benötigt als andere Lösungen. Neben einer profunden Grundlage und Kenntnis der .NET-Welt sowie C#, sind auch Kenntnisse und Erfahrungen im Einsatz der nativen iOS, Android und Windows-Entwicklung notwendig. Grundsätzlich scheint es nach unserer Erfahrung einfacher für einen nativen mobilen Entwickler zu sein, sich in Xamarin und C# einzuarbeiten, als für einen .NET-Entwickler sich die mobilen Themen anzueigenen. Aber das ist natürlich immer individuell sehr unterschiedlich.

Nach dem Kauf durch Microsoft hat sich die Schlagzahl hinsichtlich Erweiterungen und Verbesserungen erheblich erhöht und der Preis ist zudem gesunken. Aufgrund der Microsoft-Strategie vieler großer Unternehmen ist Xamarin für uns die absolute Empfehlung für interne Unternehmenstools, grundsätzlich aber unsere Wahl sobald die Möglichkeit jetzt oder in Zukunft besteht die mobile Applikation auf mehreren Plattformen einsetzen zu wollen.

Cordova

Cordova bietet eine Schnittstelle zu JavaScript mit der verschiedene Funktionen auf allen Plattformen wie Android, iOS und Windows benutzt werden können. Ist die App fertig, wird sie mit Cordova kompiliert und weiter verpackt für JavaScript, CSS und HTML in deren plattformspezifische Pakete.

Der größte Vorteil von Cordova-basierten Plattformen ist, dass bereits erlernte Webtechnologien eingesetzt werden können und ist damit erste Wahl falls das Entwicklungsteam vor Allem aus Webentwicklern besteht. Basierend auf Cordova haben sich mehrere Plattformen entwickelt, teilweise mit einer sehr großen und aktiven Entwicklercommunity, wie z.B. Ionic oder Mobile Angular UI.

Cordova-basierte Applikationen laufen auf einer Art Mini-Webserver welcher eine Web-Applikation einer WebView (quasi ein Internet-Browser) bereitstellt. Grundsätzlich ein intelligenter Ansatz, einzig die Performance leidet darunter, welches bei komplexen Views schnell zu einem frustrierenden Nutzererlebnis werden kann.

Empfehlenswert ist der Einsatz also vor Allem falls entsprechende Web-Entwickler ohnehin bereits an Board sind und die mobilen Applikationen eher als zusätzliche Anwendung für ein Kern-Produkt oder zu Marketing-Zwecken eingesetzt werden sollen. Handelt es sich bei den mobilen Applikationen um das Kern-Produkt, einen wichtigen Bestandteil oder um ein Enterprise-App zur internen Verwendung, raten wir eher davon ab. Hier macht eine native Applikation oder Lösungen wie Xamarin und React Native mehr Sinn.

React Native

Relativ neu auf dem Markt, aber neben Xamarin ebenfalls eine Ernst zu nehmende Alternative zur plattformübergreifenden Entwicklung, ist React Native aus dem Hause Facebook. Zunächst als Option begonnen iOS-Apps mit Javascript und einer speziellen Variante von React.js zu entwickeln, ist mittlerweile auch Android verfügbar. Wie bei Xamarin kompilieren die Applikationen in nativen Code und neben dem verwendeten Framework kann auch direkt auf native Funktionen zugegriffen werden falls notwendig.

Da wir selbst auch von React.js überzeugt sind was den Einsatz bei Web-Applikationen angeht, wäre dies für uns eigentlich die richtige Plattform. Bisher konnten wir React Native leider nur für kleinere Prototypen einsetzen, da von Kundenseite entweder noch ein Windows 10 App benötigt wurde, oder React Native einfach noch nicht soweit war. Zukünftig sehen wir hier aber durchaus Potential, Facebook schreibt die eigenen Apps damit, so z.B. auch Instagram, eine lebhafte Entwickler-Community und überzeugende Features wie eine Live-Ansicht während der Entwicklung ohne Kompilierung runden das Bild ab und machen Lust auf mehr.

Der Einstieg wird einem nicht ganz leicht gemacht. React basiert zwar auf JavaScript, aber reine Erfahrungen hinsichtlich HTML, CSS & JavaScript werden für einen schnellen Start nicht ausreichen. Wer schon Erfahrungen mit React.js hat, wird es eher einfach haben, wer nicht muss sich zunächst intensiv einarbeiten. Ein Überfliegen der Dokumentation und Best Practices empfiehlt sich hier nicht, falsche Entscheidungen zu Beginn können im Nachhinein zu teuren Änderungen an der Gesamtarchitektur führen.

Neben JavaScript, React Native an sich und zu teilen React.js, ist unbedingt eine Einarbeitung in JSX notwendig. JSX wird verwendet um Oberflächen zu definieren, ähnelt XML, ist aber eher als Syntax-Erweiterung zu JavaScript zu verstehen. Einmal gelernt wird die Erstellung von Oberflächen extrem schnell und einfach vonstatten gehen.

Viele Probleme lassen sich dann doch nicht plattformübergreifend lösen, so kann von einem Code Sharing von 80 - 100% ausgegangen werden, je nach Anforderungen. Alle spezifischen Anpassungen können durch einen direkten Zugriff auf die nativen Funktionen entwickelt werden. Was natürlich ein Vorwissen zur iOS- und Android-Entwicklung voraussetzt.

DIY Tools

Kann ich eine DIY Lösung benutzen um für alle Plattformen zu entwickeln?

"Do it yourself" Tools sind derzeit aus unserer Sicht noch nicht dafür geeignet anspruchsvolle mobile Applikationen im produktiven Umfeld zu betreiben. Vielmehr können sie dabei helfen, eine Applikation in ein paar Tagen auf den Markt zu bringen und so evtl. die allgemeine Akzeptanz auszutesten. Die meisten dieser Tools sind Cloud-basiert und verfügen über ein intuitives Interface um auch ohne große Erfahrung in der Programmierung eine App zu entwickeln.

Trotzdem behalten wir diese Tools auch für den Einsatz durch uns im Auge. Momentan bietet keine Zusammenklicker-Lösung auf dem Markt, weder für die Web- noch für die mobile Entwicklung, die notwendige Flexibilität und Features. Einige renommierte Unternehmen, ausgestattet mit ordentlich Budget, sind aber derzeit daran dies zu ändern.

Fazit

Es gibt nicht die beste Lösung für alle Problemstellungen. Für den produktiven und anspruchsvollen Einsatz können wir derzeit entweder die native Implementierung empfehlen, oder den Einsatz von Xamarin oder React Native.

EN