Flutter - Cross-Plattform App-Entwicklung im Vergleich (Teil 2)

Philipp Manstein

Philipp Manstein – Flutter Developer

Die Welt der mobilen App-Entwicklung hat sich in den letzten Jahren erheblich weiterentwickelt, wobei verschiedene Cross-Platform-Frameworks den Markt dominieren. In diesem Blogbeitrag werden wir einen genaueren Blick auf drei dieser Frameworks werfen: React Native, Xamarin.Forms, bzw. .NET MAUI, und Flutter.

Cross-Plattform App-Entwicklung im Vergleich

Lassen Sie uns die Geschichte jedes Frameworks erkunden und die Vor- und Nachteile der Cross-Plattform-Entwicklung gegenüber der nativen Entwicklung vergleichen!

React Native

Meta Platforms, Inc. (Facebook) präsentierte React Native erstmals im Jahr 2015. Das Framework ermöglicht die Entwicklung von plattformübergreifenden Anwendungen unter Verwendung von JavaScript und React.

Anders, als die Entwicklung mit JavaScript zuerst vermuten lässt, nutzt React keine WebView, bzw. Browser, und zeigt dort die UI-Elemente an, sondern rendert die nativen Bedienelemente der Plattform. Es bietet also den kleinsten gemeinsamen Nenner auf die nativen Elemente. Als Beispiel wird bei Benutzung des “Buttons” unter Android ein Android Button dargestellt und unter iOS ein “UIButton”.

Zugriff auf die nativen Plattform-Funktionen bietet eine Bridge. React Native unterstützt die Plattformen iOS und Android.

Xamarin.Forms/.NET MAUI

Xamarin wurde im Jahr 2011 gegründet und später von Microsoft übernommen. Ursprünglich als MonoTouch und Mono for Android bekannt, ermöglicht Xamarin die Verwendung von C# und .NET für die plattformübergreifende App-Entwicklung.

Das Besondere an Xamarin ist, dass, mithilfe der Mono Runtime, die nativen APIs der Plattformen in .NET genutzt werden können. So muss selbst für das Ansprechen von nativen APIs keine andere Programmiersprache neben C# genutzt werden.

Mit Xamarin.Forms kann - ähnlich wie bei React Native - auch eine einheitliche UI der App in XAML umgesetzt und die jeweils nativen Elemente dargestellt werden.

Der Nachfolger von Xamarin, .NET MAUI, wurde während der Microsoft Build 2020 angekündigt und wird Xamarin vollständig im Mai 2024 ersetzen. .NET MAUI verfolgt einen ähnlichen Ansatz wie Xamarin.Forms zuvor: Neben einer einzigen Codebasis in C# wird die UI auch nur einmal in XAML umgesetzt. Dabei werden die nativen Elemente der jeweiligen Plattform genutzt. .NET MAUI unterstützt die Plattformen iOS, Android, macOS und Windows.

Flutter

Flutter wurde von Google entwickelt und im Jahr 2015 der Öffentlichkeit vorgestellt. Im Jahr 2018 wurde die Version 1.0 veröffentlicht.

Anders als die vorherigen Cross-Plattform Frameworks nutzt Flutter nicht die nativen Elemente der jeweiligen Plattform, sondern zeichnet die UI-Elemente mit einer eigenen Rendering-Engine (lesen Sie mehr hier). So sind Design und Verhalten der App auf allen Plattformen konsistent und ansprechend, ohne sich um plattformspezifische Anpassungen kümmern zu müssen.

Die Anwendungen werden komplett in der Programmiersprache Dart geschrieben, die perfekt für die reaktionsschnellen Benutzeroberflächen ist.

Flutter unterstützt die Plattformen iOS, Android, macOS, Windows, Linux, Web und Embedded.

Im Vergleich - Die Vorteile

Alle Cross-Plattform-Frameworks bieten den gleichen Vorteil, dass sie nur eine Code-Basis benötigen. Viel Zeit wird dadurch gespart, da der Quelltext der Anwendung nur einmal geschrieben werden muss und für die verschiedenen Plattformen wiederverwendet werden kann. Eine Ausnahme bildet der plattformspezifische Code, der selbst geschrieben und nicht über Bibliotheken eingebunden werden kann.

Die Time-to-Market ist also geringer gegenüber der nativen Entwicklung. Auch das Nachreichen von Features oder das Beheben von Bugs geht schneller von der Hand, da die Wartung des Quellcodes sich nur auf eine gemeinsame Basis beschränkt. Mit der agilen Entwicklung können so neue Geschäftsmodelle, Funktionen und Anwendungen schneller getestet und auf das Feedback der Nutzer*innen reagiert werden. Dank der einheitlichen Code-Basis bleiben auch alle Plattformen auf dem gleichen Stand der Features und divergieren nicht über die Zeit immer mehr.

Im Vergleich - Die Nachteile

Ein oft genannter Nachteil der Cross-Platform-Entwicklung ist, dass das Verhalten (UX) und die Gestaltung (UI) der Apps nicht die Qualität der nativen Entwicklung erreicht. Dieses Problem haben vor allem React Native und Xamarin.Forms, bzw. .NET MAUI, denn hier findet man den kleinsten gemeinsamen Nenner der Plattformen. Wird ein individuelles Design gewünscht, müssen oft eigene UI-Elemente für jede Plattform einzeln entwickelt, bzw. erweitert werden. Dies schmälert den Vorteil, dass die Code-Basis einheitlich ist, da es so immer mehr Stellen gibt, die doch wieder individuell für jede Plattform sind. Hier punktet ganz klar Flutter, da es losgelöst von den nativen Elementen ist. Flutter nutzt eine eigene Rendering-Engine, so können hier UX und UI einheitlich mit einer Code-Basis umgesetzt werden.

Ein weiterer Nachteil ist, dass, wenn neue Features der Plattformen veröffentlicht werden, es einige Zeit dauert, bis diese in den Cross-Plattform-Frameworks verfügbar sind. Dieser Nachteil ist besonders bei Xamarin zu spüren, da es einige Zeit dauert, bis die neuen Funktionen in .NET verfügbar sind. Mit React Native und Flutter können native Features über eine Zwischenschicht angesprochen werden. Daher sollte genau überlegt werden, wann immer die neuesten Plattform-Features direkt für die Nutzenden der App verfügbar sein sollen oder viele native Plattform-Funktionen angesprochen werden, ob der Einsatz eines Cross-Plattform-Frameworks hier der richtige Ansatz ist.

Die vorgestellten Cross-Plattform-Frameworks sind für ein einheitliches Layout ausgelegt, d.h. dass bei der Anforderung an verschiedene Layouts für verschiedene Plattformen eine native Umsetzung in Erwägung gezogen werden sollte. Besonders, wenn die Business-Logik der App nur einen geringen Teil der Anwendung ausmacht.

Der größere Speicherplatzbedarf von Cross-Plattform Anwendungen wird auch häufig kritisiert. Hier muss man jedoch bedenken, dass es nur wenige Megabyte sind und der Trend zum verfügbaren Speicherplatz auf den Endgeräten immer weiter nach oben geht. Jedoch für das Web kann es zum Problem werden, da hier die Anwendung auch bei schlechter Verbindung so schnell wie möglich verfügbar sein soll.

Ein Mythos, der sich noch immer hält, ist, dass die Performance der Anwendungen, die mit Cross-Plattform-Frameworks umgesetzt wurden, langsamer ist im Vergleich zu nativen Anwendungen. Natürlich, nichts ist schneller als eine native Anwendung und in den genannten Frameworks gibt es zwischen der Anwendung und dem Betriebssystem noch eine extra Kommunikationsschicht, jedoch ist ein wirklicher Unterschied in der Realität zwischen den vorgestellten Cross-Plattform-Frameworks und einer nativ entwickelnden Anwendung nicht spürbar. Wenn die Werkzeuge und Programmiersprachen zur Entwicklung falsch genutzt werden, kommt es zu Engpässen, dies passiert allerdings auch bei nativen Anwendungen.

Fazit

Es zeigt sich, dass die Vorteile der Cross-Plattform-Frameworks klar die Nachteile überwiegen. Jedoch gibt es Fälle, bei denen die Performance der App ausschlaggebend und/oder eine enge Anbindung an das Betriebssystem nötig ist, so dass hier genau überlegt werden sollte, ob, bzw. wie ein Cross-Plattform-Framework eingesetzt werden kann.

Besonders Flutter sticht in vielen Punkten positiv hervor, mit dem innovativen Ansatz, dass es losgelöst von den Bedienelementen der jeweiligen Plattform ist. Daher vertrauen wir bei grandcentrix auf Flutter und setzen mit unserer langjährigen Erfahrung erfolgreich App Projekte im IoT Umfeld um.

Für mehr Informationen empfehlen wir die offizielle Seite von Flutter: Flutter - Build apps for any screen.

Michael Bischof

Haben Sie Fragen oder wollen Sie ein Projekt mit uns umsetzen?

Michael Bischof – Competence Manager HCI

Hi, ich bin Michael. Sie fragen sich, ob Flutter das richtige Werkzeug für Sie ist? Kontaktieren Sie mich gerne per E-Mail.