Ob Entwickler an komplett neuen mobilen Apps arbeiten oder vielleicht existierende Web-Apps in native iOS- oder Android-Apps übersetzen möchten: Stets müssen sie sich fragen, wie sie an die Sache herangehen sollen. Wir versuchen, einen Überblick über die aktuelle Situation zu schaffen.
Die beste Lösung, die es nicht gibt
Im Hinterkopf behalten sollten Sie sich immer, dass die Lösung für Ihr Problem meistens eine Lösung nur direkt für Sie ist. Da die App-Entwicklung höchst unterschiedliche Ansprüche befriedigen muss, gibt es keinen Heiligen Gral, der für jedes Entwicklerteam den goldenen Weg repräsentiert. Bevor Sie also eine Lösung angehen, sollten Sie sich zuerst überlegen: Was will ich überhaupt erreichen? Die beliebteste Lösung ist nicht immer die beste, was wir in den folgenden Abschnitten zeigen werden.
Nativ oder plattformübergreifend: Was ist besser?
Apple und Google stellen eigene SDKs bereit, um nativ für iOS bzw. Android zu entwickeln – aber sollten Sie die auch benutzen? Welche Sprachen, Tools, Frameworks oder Libraries kennen Sie schon? iOS verwendet Swift, während Android Kotlin nutzt. Trotz der Verbreitung, die beide Betriebssysteme genießen, verfügen nur zwischen 6 und 8 % aller professionellen Entwickler nach einer Studie von StackOverflow über Kenntnisse in einer dieser Sprachen. Die große Vielzahl beherrscht stattdessen andere Sprachen wie JavaScript, CSS und eben HTML.
Falls Sie sich also mit Swift oder Kotlin gut auskennen – umso besser! Wenn nicht, ist es jedoch eine praktische Lösung, plattformübergreifende Lösungen wie React Native oder Ionic in Betracht zu ziehen. Da der Code zwischen den Plattformen geteilt wird, entsteht kein hoher Aufwand bei der Portierung. Native Apps können Sie dann mit einer Sprache bauen, die Sie wahrscheinlich sowieso schon kennen. Außerdem wäre es wohl auch für die engagiertesten Entwickler zu viel verlangt, eine Sprache nur für eine einzige App zu lernen.
Weiterhin existieren Lösungen wie Googles Flutter. Deren Dart-Sprache ist noch relativ jung und Kenntnisse darüber sind daher wenig verbreitet. Trotzdem sind Flutter ebenso wie Ionic, React Native oder Xamarin wesentlich attraktiver für Entwickler, die mit dem Web vertraut sind. Vielleicht haben Sie auch einfach keine Zeit oder Lust, sich mit neuen Sprachen und den nativen SDKs auseinander zu setzen – was ebenfalls in Ordnung ist. Auch dann ist die Verwendung von JavaScript-basierten Lösungen eine gute Idee.
Welche Cross-Plattform-Lösung nehme ich?
Falls es plattformübergreifend sein soll, kommt nun die nächste Frage: Welches Framework nehme ich? Viel hängt davon ab, ob es eine brandneue App werden soll oder ob eine existierende Web-App „nur“ in ein natives Gerüst gesteckt werden soll.
Port einer existierenden Web-App
Im Prinzip stehen Ihnen nur zwei Möglichkeiten offen, wenn Sie diesen Weg gehen möchten: Capacitor oder Cordova.
Web-App-Port mit Cordova
Wahlweise wandeln Sie mit Cordova eine bestehende Web-App um oder bauen eine komplett neue mobile App, die allerdings mit einem Web-Stack entwickelt wird. Die Community ist groß, das Ökosystem umfangreich. Cordova ist allerdings deutlich älter als Capacitor (auf das wir gleich zu sprechen kommen). Viele der modernen Web-APIs gab es noch nicht, als Corvoda das Licht der Welt erblickte. Die vielen Abstraktions-Layer, die bei der Umwandlung von Web auf Mobile genutzt werden, schmecken ebenfalls nicht jedem Entwickler, wenn es um das Debugging geht.
Alternative in Form von Capacitor
Die beschriebenen Altlasten wirft Capacitor zum großen Teil über Bord. Auch damit können Sie Web-Apps auf iOS oder Android umschreiben oder auch Progressive Web-Apps basteln. Die meisten Ionic-Apps verwenden Capacitor, außerdem ist es komplett kostenlos und basiert auf Open-Source. In einer Umfrage von StateofJS.com hat Capacitor den Hauptpreis in der Kategorie Entwicklerzufriedenheit abgeräumt. Die Community wächst schnell, außerdem können Sie jeden erdenklichen Web-Stack damit verwenden – Bootstrap, Angular, Vue, React und mehr sind bei Capacitor alle mit an Bord.
Entwicklung einer komplett neuen App
Eine wesentlich größere Auswahl in Frage kommender Lösungen erwartet Sie, wenn die App von Grund auf neu gebaut wird. Wir schauen uns hier nur Xamarin, React Native, Ionic und Flutter an. Zwar existieren noch mehr Lösungen, aber diese vier Frameworks repräsentieren den Löwenanteil.
Vorweg sei auch gesagt: Tolle Apps können Sie mit jedem Framework entwickeln, sofern Sie wissen, was Sie tun. Die Communities sind allesamt sehr groß und hilfsbereit, die Frameworks sind auf dem Markt etabliert und eine strahlende Zukunft erwartet sie alle. Es läuft somit auch auf Ihre persönlichen Vorlieben heraus. Wir möchten an dieser Stelle nicht missionieren und Sie in eine Richtung zwingen, sondern nur die genannten vier Frameworks kurz vorstellen.
React Native
React Native übernimmt das UI-Rendering mit nativen UI-Komponenten. Die Apps werden zwar in JavaScript programmiert, allerdings wird es zur Laufzeit umgewandelt und ruft die nativen UI-Komponenten auf, wenn diese angefordert werden. In der Praxis funktioniert das sehr gut und führt zu guten Nutzererlebnissen – allerdings geht es beispielsweise auch mit dem Problem einher, keine webbasierten UI-Komponenten einbinden zu können. Bestehende React-Komponenten lassen sich also nicht einfach in native Apps umwandeln. Dieser Nachteil zieht sich durch weitere Bereiche: Nicht nur Webkomponenten, sondern auch eigene CSS-Anpassungen und webbasierte Libraries lassen sich nicht ohne einige programmiertechnische Verrenkungen einbinden. Davon abgesehen gibt es an React Native nicht viel auszusetzen.
Xamarin
Insgesamt verhält sich Xamarin sehr ähnlich wie React Native, allerdings schreiben Sie hier in C# und nicht JavaScript. Vor allem Entwickler, die Microsoft nahestehen, werden daher keine Probleme mit Xamarin haben. Die Nachteile teilt sich Xamarin zu weiten Teilen ebenfalls mit React Native, aus denselben Gründen. So können Sie nur native UI-Libraries effektiv nutzen und andere Bibliotheken erst mit erheblichem Aufwand einbinden. Das Ökosystem um Xamarin ist wesentlich kleiner als das von React Native, was auch an der geringeren Anzahl an C#-Entwicklern liegt. Allzu umfangreich fallen auch die Libraries nicht aus, die nur einen Bruchteil von beispielsweise Ionic ausmachen.
Flutter
Flutter ist ein kleiner Sonderfall, der ausschließlich von Google gepflegt wird. Damit lassen sich sehr schnelle, sehr gut aussehende Apps basteln, die überall funktionieren und auf ein einheitliches Codefundament setzen. Klingt gut – aber all das wird erkauft, indem Google sehr viele Anpassungen vornimmt, die nicht außerhalb des Flutter-Ökosystems funktionieren. Falls das Unternehmen Flutter also fallen lässt, stehen Sie mit leeren Händen da. Die eigene Programmiersprache (Dart) macht den Einstieg recht schwierig. Flutter kann somit sehr schnelle und begeisternd aussehen Apps produzieren – aber Sie begeben sich in die totale Abhängigkeit von Google. Ob das eine gute Idee ist, müssen Sie selbst entscheiden.
Ionic
Ihre App können Sie mit Ionic überall einsetzen, da die Codebasis immer gleich ist. Ionic nutzt Capacitor als Basis und kann bei Bedarf eine Mischung aus nativen und Web-Bibliotheken nutzen. So könnten Sie beispielsweise auch eine App bauen, die einen nativen Look hat, aber dafür Web-Komponenten verwendet – was den Port in andere Bereiche erleichtern würde. Nutzen können Sie mit Ionic außerdem drei unterschiedliche JS-Frameworks: React, Vue und Angular. Sie können selbst aussuchen, was für Ihren Anwendungsfall am besten geeignet ist. Schnelle Apps, die ein „Native Feel“ haben, lassen sich auf diese Weise mit angepasstem CSS und eigener UI kombinieren.
Fazit
Da es „das beste Framework“ nicht gibt, küren wir an dieser Stelle auch keinen Sieger. Die beste Mischung aus Geschwindigkeit, Kompatibilität und Flexibilität würden wir bei Ionic ansetzen – aber vielleicht suchen Sie gar keine Mischung, sondern haben ganz exakte Vorstellungen. Kontaktieren Sie uns, wenn Sie mehr darüber erfahren möchten und jemanden brauchen, der Sie bei der App-Entwicklung unterstützt – egal, ob webbasiert oder komplett nativ.
Mehr Informationen zu Mobile App Entwicklung
Einheitliche Codebasis und plattformübergreifende Entwicklung, das gehört für Orlyapps einfach zusammen. Denn genau das macht Ihre App flexibel und pflegeleicht, egal für welches Endgerät. Oder gleich mehrere.