Bereits in der Entwurfsphase einer mobilen Anwendung ist es wichtig zu verstehen, welche Sprache für ein bestimmtes Projekt rentabler ist. Neben der nativen Entwicklung (z. B. für iOS - Swift oder Objective-C, für Android - Java oder Kotlin) werden plattformübergreifende Frameworks wie React Native und Flutter verwendet. Wir bei SimbirSoft bieten verschiedene Kriterien an, die bei der Auswahl eines Unternehmens und eines mobilen Entwicklers hilfreich sind.

Auswahlproblem
Weltweit gibt es nach verschiedenen Schätzungen bereits etwa fünf Milliarden Smartphones, von denen bis zu 80% das Android-Betriebssystem und weniger als 20% iOS verwenden. Und doch hat jedes Land seine eigenen Merkmale, zum Beispiel in den USA arbeiten mehr als 65% der Smartphones mit iOS. Beim Erstellen mobiler Anwendungen ist es meistens erforderlich, Versionen sowohl für iOS als auch für Android freizugeben. Zu diesem Zweck können Sie sich der nativen oder plattformübergreifenden ("Hybrid") Entwicklung zuwenden.
Die native Entwicklung ist eine klassische Lösung, bei der Anwendungen für jede Plattform einzeln unter Verwendung verschiedener Sprachen und unter Berücksichtigung der Funktionen jeder Plattform geschrieben werden müssen. Beim Erstellen mehrerer Versionen eines Projekts arbeiten mehrere Teams gleichzeitig.
Dank plattformübergreifender Frameworks war es möglich, "zwei Fliegen mit einer Klappe zu schlagen" und Versionen für iOS und Android mit einem Tool vorzubereiten. Unter den Frameworks sind besonders verbreitet:
- Reagiere Native von Facebookfür iOS-, Android- und Windows-Anwendungen
verwendet die JavaScript-Sprache und die React.js-Bibliothek als Hauptentwicklungstool.
- Flattern von Googlefür Anwendungen von Android, IOS und Fuchsia (Details siehe
unseren Artikel über Habré )
verwendet die Dart-Sprache, die auch für die Webprogrammierung dient.
Die Popularität von React Native und Flutter wächst laut Google Trends- Statistiken , wenn auch mit unterschiedlicher Geschwindigkeit.Native Entwicklung
Sowohl die native als auch die plattformübergreifende Entwicklung haben ihre eigenen Merkmale. Wir haben beide Ansätze in der Praxis der Mobile Division Mobile.SimbirSoft verwendet. Zu den Vorteilen der nativen Entwicklung gehören:
- stabiler und schneller Anwendungsbetrieb;
- maximale Lebensdauer der Anwendung;
- Die Anwendung ist dank der Verwendung "nativer" Tools flexibler und skalierbarer.
- weniger Einschränkungen in Bezug auf Architektur und Funktionen;
- Die Schnittstelle passt genau zur Plattform.
Hybride Entwicklung
Plattformübergreifende Frameworks „passen“ die Anwendung für mehrere Betriebssysteme an, sodass nicht für jede Plattform eindeutige Elemente erstellt werden müssen. Ergebend:
- es werden weniger Spezialisten benötigt;
- nimmt weniger Zeit und Ressourcen in Anspruch;
- Die Entwicklungsgeschwindigkeit nimmt zu.
Wenn die Anwendungslogik auf allen Plattformen gleich ist und die Benutzeroberfläche einfach ist, hilft die Hybridentwicklung, das Produkt schneller auf den Markt zu bringen. Wir empfehlen Frameworks wie React Native und Flutter unter folgenden Bedingungen:
- wenn Sie in kurzer Zeit eine Prototypanwendung für mehrere Plattformen schreiben müssen;
- Wenn die Anwendung alle Informationen vom Server übernimmt, wird die Logik auf dem Server implementiert, und die Animation und die Benutzeroberfläche spielen keine Rolle.
- wenn die Mindestanzahl nativer Funktionen verwendet wird, z. B. Push-Benachrichtigungen, In-App-Käufe, Geolokalisierung usw.;
- wenn eine bescheidene Leistung akzeptabel ist und Inhalte aus dem Internet heruntergeladen werden.
Auswahlkriterien für Native, React Native und Flutter
Für Unternehmen
1. Verfügbarkeit
Einige Unternehmen, die sich wegen der Entwicklung mobiler Anwendungen an uns wenden, geben die Kosten als eines der wichtigsten Kriterien für sie an. Gleichzeitig hängen die Kosten und der Bedarf an Spezialisten von der Entwicklungsmethode ab.
EinheimischIn der Regel verfügt ein mobiles Studio über ausreichende Ressourcen für die native Anwendungsentwicklung beliebiger Komplexität.
Reagiere auf Native und FlatternEs gibt weniger Spezialisten in diesen Bereichen auf dem Markt. Bei der Entwicklung großer Anwendungen können Schwierigkeiten auftreten.
Wir empfehlen dem Unternehmen native Technologien, wenn die Anwendung für den langfristigen Betrieb ausgelegt ist (mit anderen Worten „Lebensdauer“). Dies ist auch von Vorteil, wenn eine hohe Leistung, eine komplexe Benutzeroberfläche und Animation, ein geringer Stromverbrauch und die Integration in Ressourcen von Drittanbietern (API usw.) erforderlich sind. Native Anwendungen sind aufgrund geringerer Kosten für den technischen Support auf lange Sicht rentabler.
Wir empfehlen plattformübergreifende Technologien für das schnelle Testen von Hypothesen, die Entwicklung von Prototypen und Anwendungen mit einer klaren Einschränkung der Lebensdauer, die beispielsweise für bestimmte Ereignisse entwickelt wurden.
Geschäftsnotiz:
Für komplexe Anwendungen empfehlen wir die native Entwicklung.
für einfache Anwendungen - ein Hybrid.2. Geschwindigkeit + Aufgabenabgleich
Die Markteinführungszeit wird in erster Linie von der Größe des verfügbaren Teams und den Funktionen der mobilen Anwendung bestimmt.
Die Arbeit mit plattformübergreifenden Frameworks kann rentabler und schneller sein, wenn die Anwendung einfach ist und dieselbe Benutzeroberfläche ohne plattformspezifische Details wie Zugriff auf die Kamera, Arbeiten mit dem Dateisystem und Fingerabdrücke sowie Laufzeitberechtigungen verwendet wird. Hier spart die Hybridentwicklung Zeit, indem fast der gesamte Code und die Benutzeroberfläche für zwei Plattformen wiederverwendet werden. Wenn Sie jedoch komplexe benutzerdefinierte Ansichten erstellen müssen, wird die plattformübergreifende Entwicklung verlangsamt.
In Bezug auf die Entwicklungszeit einer mobilen Anwendung ist es wichtig zu verstehen, dass es keinen „durchschnittlichen Begriff für ein Krankenhaus“ gibt. In unserer Praxis haben wir beispielsweise innerhalb von 100 Tagen eine mobile Banking-Anwendung veröffentlicht. Jetzt beteiligen wir uns an der Weiterentwicklung dieses Produkts. Gleichzeitig gab es einfache Anwendungen (Startzeit - ca. zwei Wochen) und Großprojekte mit einer Entwicklungsdauer von mehr als einem Jahr.
3. Sicherheit und Perspektiven
Bei der Auswahl einer Sprache ist es wichtig, dass ein Unternehmen seine Zuverlässigkeit und Sicherheit heute unter technischen Gesichtspunkten sowie die Aussichten auf weitere Entwicklung und die Risiken der Veralterung bewertet.
In Bezug auf die Zuverlässigkeit ist die native Entwicklung allen Wettbewerbern voraus. Die Entwicklung der Hauptbibliotheken ist seit mehreren Jahren im Gange, die meisten Fehler wurden bereits behoben, Muttersprachen wie Java, Objective-C, Swift, Kotlin entwickeln sich ständig weiter. Unter den Entwicklern von Mobilgeräten ist zu hören, dass die native Android-Entwicklung in den 2020er Jahren teilweise durch Flutter ersetzt wird. Bisher ist dies jedoch nur eine Annahme.
React Native bietet alle Tools zum Erstellen sicherer mobiler Anwendungen, z. B. Skype, Instagram, Facebook und andere bekannte Produkte. Sicherheitsbedenken sind nur möglich, wenn während der Entwicklung Module von Drittanbietern verwendet werden. Gleichzeitig entwickelt sich JavaScript aktiv weiter, es werden neue Funktionen veröffentlicht, und in absehbarer Zukunft ist das Risiko einer Veralterung minimal.
Bei der Entwicklung auf Flutter sind die Risiken höher, da das Framework noch jung ist und die Veröffentlichung erst im Dezember 2018 veröffentlicht wurde. Bisher gibt es Probleme, zum Beispiel zu der einen oder anderen Zeit, die Bibliotheksassembly ist nur für eine Plattform verfügbar, Abstürze treten in Android Studio auf, es gibt Fehler in einigen Plugins und Bibliotheken. Auf der anderen Seite wird all dies finalisiert und korrigiert. Wir können das Risiko nicht ausschließen, dass Google Flutter nicht mehr unterstützt, wie dies bei anderen Projekten des Unternehmens der Fall war. Fuchsia OS ist jedoch auf Flutter geschrieben, in dem einige Entwickler einen Ersatz für Android sehen.
Für Entwickler
Oben haben wir die Faktoren beschrieben, die sowohl das Unternehmen als auch den Auftragnehmer berücksichtigen. Es gibt auch technologische Kriterien, die in erster Linie vom Projektmanager berücksichtigt werden. Zum Beispiel:
- Kenntnisstand der Muttersprachen und TeampräferenzenJedes mobile Studio hat seine eigenen Vorlieben bei der Wahl der Technologie. Die native Entwicklung erfordert die umfassendsten Kenntnisse der jeweiligen Sprachen. Aufgrund der Verwendung nativer Tools der Systeme gibt es jedoch weniger Einschränkungen und Schwierigkeiten beim Anpassen oder Zugreifen auf plattformspezifische Tools (im Gegensatz zu React Native und Flutter). Wenn Sie Erfahrung mit JavaScript haben, kann ein mobiler Entwickler problemlos zu React Native (Sie müssen nicht zusätzlich die Dart-Sprache lernen, wie dies bei Flutter der Fall ist) oder zu Dart (Kenntnisse in TypeScript sind ein großes Plus) wechseln.
React Native verwendet native Module unter der Haube. Wenn Anpassungen erforderlich sind (und dies nicht sofort unterstützt wird), müssen daher native Module verwendet werden. In unserer Praxis gab es beispielsweise einen Fall, in dem Sie die Yandex.Maps-Bibliothek anpassen mussten, um benutzerdefinierte visuelle Komponenten auf der Karte anzuzeigen.
Im Gegensatz zu React Native zeichnet sich Flutter durch eine eigene Grafik-Engine aus. Dies ermöglicht es Ihnen einerseits, bei der Entwicklung einfacher Anwendungen überhaupt nicht nativ zu berühren. Wenn Sie jedoch auf native zugreifen müssen, bedeutet dies zusätzliche Schwierigkeiten (z. B. Messaging mit elementaren Datentypen und JSON) und die Unfähigkeit, grafische Komponenten von native zu verwenden.
- EintrittsschwelleWenn der Entwickler eine neue Sprache lernen möchte, wird die Verfügbarkeit der Community sowie Hintergrundinformationen und Dokumentation zu einem wichtigen Thema.
Flutter und React Native entwickeln sich ständig weiter, sie haben eine aktive professionelle Community und eine gute Dokumentation. Gleichzeitig ist die native Entwicklung dank einer größeren Community und mehr Schulungsmaterialien und Foren, die die Entwicklungsprozesse komplexer Komponenten beschreiben, den Frameworks voraus.
"Spickzettel" zur Auswahl
Die folgende Vergleichstabelle erleichtert die Auswahl und beantwortet die Frage, in welchen Fällen diese oder jene Implementierungsmethode zum Erstellen einer mobilen Anwendung geeignet (oder nicht geeignet) ist.

Empfehlungen
Wenn Sie sich für Frameworks entscheiden, empfehlen wir Ihnen, die folgenden Aspekte der Arbeit zu beachten:
BewertungSie müssen alle beteiligten Plattformen (iOS, Android) testen. Es ist wichtig, den Wissens- und Erfahrungsstand aller Projektteilnehmer objektiv zu bewerten, damit sich die Bewertung in Stunden nicht als unterschätzt herausstellt. Berücksichtigen Sie das Risiko von Fehlern in den React Native- und Flutter-Frameworks selbst während der Entwicklung.
DesignEinige Elemente sind in Flutter oder React Native schwer (oder sogar unmöglich) zu rendern. Aus diesem Grund muss das Design mit den Entwicklern vereinbart werden - und bevor sich der Kunde in ein wunderschön gezeichnetes Bild verliebt.
CI / CDBei React Native sind bestimmte Probleme bei der automatischen Assemblierung nicht ausgeschlossen (z. B. aufgrund der Installation von Bibliotheken auf verschiedenen Plattformen). Notwendigkeit, mehr Risikoreserve zu legen.
BegrüßungsbildschirmDie Implementierung des Begrüßungsbildschirms in Flutter ist schneller als in React Native, wo dieses Element nur nativ mit einer hohen Wahrscheinlichkeit von Fehlern gezeichnet werden kann. Wenn Sie React Native auf einem Begrüßungsbildschirm mit allen Rendering- und Fehlerkorrekturen verwenden, ist es ratsam, mehr Zeit einzuplanen.
LayoutBei Verwendung von React Native muss der Satz unter iOS und Android gleichzeitig ausgeführt werden, um Probleme beim Anpassen von Layouts für eines der Systeme zu vermeiden.
Parallele Entwicklung von Web und MobileWenn die Webversion der Anwendung in React geschrieben ist, wird aufgrund der gleichen Logik der Komponenten weniger Zeit für die Entwicklung einer mobilen Anwendung in React Native aufgewendet.
DebuggenWenn die Anwendung groß ist, erleichtert React Native das Testen und Unit-Tests. Bei Flutter müssen Sie mehr Zeit für die Fehlerbehebung aufwenden, da die Protokolle nicht informativ sind.
Anwendungsarbeit mit SystemdateienEs ist erforderlich, die Erlaubnis zur SD-Karte anzufordern, während es nicht möglich ist, mit jeder Datei einen Namen und einen Pfad zu erhalten. Um eine Datei zu senden, müssen Sie ContentResolver verwenden. Legen Sie Zeit für alle Vorgänge im Zusammenhang mit dem Dateisystem ein, um Risiken zu minimieren.
Lieferung von Baugruppen an den KundenEs gibt keine signifikanten Unterschiede zur nativen Entwicklung. Sie können einen beliebigen Service auswählen: Crashlytics, TestFairy, TestFlight.
Reagiere Native vs Flutter
Wir bei SimbirSoft verwenden je nach Art der Anwendung sowohl React Native als auch Flutter. Wir teilen einige Beobachtungen aus unserer Praxis, die dazu beitragen, die Merkmale der Arbeit mit einem bestimmten Framework zu berücksichtigen.

Zusammenfassend
Die Entwicklung nativer und hybrider mobiler Anwendungen hat Vor- und Nachteile, die vom Unternehmen und vom Auftragnehmer bei der Auswahl einer Technologie berücksichtigt werden. Zu den wichtigsten Kriterien zählen der Zeitpunkt und die Kosten für Entwicklung und Wartung, die Einhaltung der Aufgabe, die Sicherheit und die Aussichten sowie der Entwicklungsstand der Gemeinde. Basierend auf seiner Erfahrung hilft ein mobiler Entwickler bei der Auswahl der besten Lösung für jede spezifische Anwendung. Wir hoffen, dass unsere Kriterien und unsere Vergleichstabelle für Sie hilfreich waren. Vielen Dank für Ihre Aufmerksamkeit!