Die Ausgangssituation: Ihr Unternehmen startet ein Softwareprojekt, in dem eine mobile Applikation entwickelt werden soll. Sie sind im Team, das dieses Projekt steuert. Und nehmen wir weiter an, dass Sie keinen IT-Background haben …

Hier können Sie sich einen schnellen Überblick verschaffen über wichtige Technologien und Buzzwords rund um webbasierte Softwareapplikationen. Dieser Blogpost hat nicht den Anspruch, Ihnen einen Crash-Kurs zum Softwareentwickler zu geben (vergleiche dazu: Bootcamp); aber der Blogpost schafft eine gute Grundlage für die Kommunikation mit dem Team von Softwareentwicklern!

Zunächst einmal ist für jedes Softwareentwicklungsprojekte für ein Mobilgerät zu entscheiden, ob die Anwendung als native App erfolgt oder als Progressive Web App. Native App heißt: Die Entwicklung findet spezifisch für ein Betriebssystem eines Mobilgerätes statt – für alle verschiedenen Betriebssysteme ist also eine Eigenentwicklung erforderlich (Betriebssysteme: Android, iOS, Microsoft); das ist zeitaufwändig und teuer. Es gibt hierzu zwei Alternativen: Zum einen sogenannte Progressive Web Apps, zum anderen die Entwicklung auf Cross-Platform Softwareentwicklungsplattformen (hierzu weiter unten mehr).

Eine Progressive Web App ist hierbei eine Mischung aus einer responsive Webseite und einer nativen App; die Erstellung erfolgt mithilfe der Standardwerkzeuge für die Webentwicklung, nämlich: HTML5, CSS3 und JavaScript. Eine progressive Web App wird gestartet, indem Sie die entsprechende URL in den Browser eingeben. Der Webserver nimmt die Anfrage entgegen und generiert den HTML-Quellcode einer Website. Diese Website ist aufgrund des responsiven Designs an das Endgerät angepasst. Die Entwicklung ist kostengünstig und eine solche App kann auf allen mobilen Betriebssystemen laufen. ABER: Die Gestaltungsmöglichkeiten gegenüber nativen Apps sind eingeschränkt, die UI-Experience ist schlechter.

Wer hingegen eine native App in Erwägung zieht, der sollte zunächst einen Blick auf die Marktanteil der verschiedenen Betriebssysteme für Mobilgeräte werfen. Einen guten Überblick bekommt man auf der Seite www.statcounter.com/os-market-share: hier lassen sich die Marktanteile weltweit anzeigen, aber auch nach Regionen. Und hier wird deutlich: Das Betriebssystem Android hat einen weltweiten Marktanteil von etwas über 70 Prozent, das Betriebssystem iOS einen Marktanteil von knapp 30 Prozent. Übrige Betriebssysteme (wie Microsoft) spielen de facto keine Rolle.

Es ist durchaus denkbar, dass bestimmte Apps (zunächst) nur für ein einziges Betriebssystem ausgelegt sind. Die populäre App Clubhouse – eine audio-basierte Social-Network-App – ist derzeit etwa nur für iOS verfügbar.

App-Entwicklung für das Betriebssystem Android

Native Apps für das meistgenutzte Betriebsystem Android können in verschiedenen SDK (Software Development Kits) erstellt werden. Verschiedene Programmiersprachen können dafür genutzt werden, nämlich: Kotlin, Java und C++. Aber auch Java wird bei der Entwicklung von Apps für Android-Apps genutzt.

Android kam erstmals im Jahr 2008 auf den Markt (ein Jahr, nachdem das iPhone die Smartphone-Revolution gestartet hat). In regelmäßigen Abständen wurden neue Versionen von Android bereitgestellt. Das nachfolgende Video (8 min, Englisch) gibt einen Überblick über die Entwicklung des Betriebssystems: In welchem Jahr kamen die diversen Features hinzu, die heute für Smartphone Nutzer selbstverständlich sind: Automatisch Screen-Rotation, Copy&Paste Optionen für Webseiten und Vieles mehr:

iOS

Native Apps für Mac Mobilgeräte (Smartphones, Tablets, etc.) werden in den Programmiersprachen Swift oder Objective-C entwickelt. Übrigens, die Gehälter für Android-Entwickler und iOS-Entwickler sind etwa gleich.

Genau wie für die Evolution des Android-Betriebssystems gibt es einen unterhaltsamen YouTube-Clip (9 min, Englisch) zur Entwicklung des Betriebssystems iOS. Hier:

Cross-Plattform Development Kits: Flutter vs Xamarin vs React Native

Es ist sicherlich deutlich geworden: Wer eine Mobile App für die dominierenden Betriebssysteme Android und iOS entwickeln möchte, der braucht im Entwickler-Team Expertise zu zwei Ökosystemen mit unterschiedlichen Anforderungen an Programmiersprachen-Kenntnisse. Das ist zeitaufwändig und teuer. Es kommt hinzu, dass bei der Entwicklung zweier unterschiedlicher Apps die Konsistenz über zwei Entwicklungsprojekte hergestellt werden muss.

Für diese Herausforderung wurden sogenannte Cross-Plattform Software Development Kits (SDK) hervorgebracht. Erfahrungsgemäß können durch deren Einsatz ca. 30% (!) der Entwicklungskosten eingespart werden (im Vergleich zur Entwicklung zweier unterschiedlicher native Apps). Vereinfach gesprochen wird in einem solchen SDK das Design und die Funktionalität für eine Mobile App definiert – und zwar mithilfe einer spezifischen Programmiersprache (z.B. C# oder JavaScript); hiernach wird dies in den Code für eine native App „übersetzt“. Ein Nachteil bei diesem Verfahren besteht darin, dass diese Apps im Vergleich zu einer „nativen Entwicklung“ eine geringere Performanz aufweisen und in punkto Nutzererfahrung Abstriche machen müssen.

Eine der ersten solcher Cross-Plattform SDK war Xamarin (ab 2011). Diese OpenSource-Plattform ermöglicht die Entwicklung für iOS, Android und Windows Mobile, und zwar mithilfe von C# und XAML. Nach einer Hochphase bis etwa 2015 verliert dieses SDK kontinuierlich an Popularität.

Sehr popular ist gegenwärtig das SDK Flutter, ein OpenSource-Projekt von Google (seit 2017). Die Entwicklung erfolgt mithilfe der Programmiersprache Dart. Hier (ebenso wie etwa in Xamarin) können auch Bibliotheken für native Apps integriert werden; dies setzt allerdings voraus, dass die Entwickler mit der Programmiersprache für eben diese native App vertraut sind. Werden also native Bibliotheken für iOS und Android innerhalb von Flutter genutzt, muss der Entwickler mit mindestens drei Programmiersprachen vertraut sein (z.B. Dart, Kotlin, Swift). Und es gilt: Der Code lässt sich aus Flutter nicht in eine Entwicklungsumgebung für native Apps übertragen – hier startet der Entwickler praktisch wieder von vorne. Dies gilt im Grunde für andere Cross-Plattform-SDK ebenfalls, dessen sollte man sich bewusst sein.

Ein weiteres, sehr populäres SDK ist React native, ein OpenSource-Projekt von Facebook (seit 2015). Hier wird die Programmiersprache JavaScript genutzt. Auch hier stellt sich die “3-Sprachen Herausforderung”, wenn native Bibliotheken in das SDK integriert werden. Und auch hier gilt: Will man eine Mobile App als native App (in einer Entwicklungsumgebung für Native Apps) weiterentwickeln, dann fängt man praktisch wieder von vorne an. Genau wie bei Xamarin oder Flutter auch.

Nachfolgend ein kurzes Video, das für das populäre Cross-Plattform UI-Toolkit Flutter die Vorteile erläutert und an einem einfachen Beispiel demonstriert, wie die Entwicklung in Flutter funktioniert.

Zum Weiterlesen

Author

Der Autor ist Manager in der Softwareindustrie mit internationaler Expertise: Prokurist bei einem der großen Beratungshäuser - Verantwortung für den Aufbau eines IT Entwicklungszentrums am Offshore-Standort Bangalore - Director M&A bei einem Softwarehaus in Berlin.