React Native und Swift sind beides relativ neue Technologien, die die Entwicklung mobiler Apps für iOS-Geräte unterstützen. Während React Native ein Framework für JavaScript ist, ist Swift eine brandneue Programmiersprache. Für welche sollte man sich also entscheiden, wenn man über die Entwicklung einer neuen iOS-App nachdenkt?

Der Text behandelt:

  1. Was ist Swift?
  2. Was ist React Native?
  3. Warum überhaupt vergleichen?
  4. Vergleich
  5. Ein paar Gedanken zu Fortran und der Geschichte der Informatik (ernsthaft!)

Das iPhone ist zweifellos mehr als nur ein Gerät – es ist ein kulturelles und soziales Phänomen, das ursprünglich die Smartphone-Revolution auslöste, die mit der ersten Veröffentlichung des Geräts im Juni 2007 begann. Seitdem ist die Popularität des Geräts sprunghaft angestiegen, und die Marke hat einen beeindruckenden Anteil von 13,2 % an den weltweiten Smartphone-Verkäufen erreicht. Dies ist besonders beeindruckend, wenn man es im Kontext betrachtet – Apple ist eine Premium-Marke, während diese Zahlen auch No-Name- oder Budget-Marken umfassen, die in Schwellenländern verkauft werden.

iOS-betriebene Geräte erfreuen sich in den starken Volkswirtschaften der USA, Kanadas, Skandinaviens und Australiens größter Beliebtheit. Ende 2017 besaßen 78 % der US-Teenager ein iPhone und 80 % gaben an, dass ihr nächstes Smartphone ebenfalls iOS-betrieben sein wird.

In Anbetracht dessen ist es keine Überraschung, dass Apple stark genug ist, um eigene Frameworks und Programmiersprachen zu forcieren – und das ist im Grunde Swift.

Aufbau eines verteilten Software-Engineering-Teams in Europa WEBINAR

Was ist Swift?

Swift ist eine moderne, universelle und multiparadigmatische Programmiersprache, die von Apple entwickelt wurde, um ihre iOS-Geräte und das gesamte nachfolgende Ökosystem aufzubauen. Apps können auch für macOS (für Apple-Computer), watchOS (AppleWatch), tvOS (digitaler Medienplayer von Apple TV) und, was vielleicht etwas überraschend ist, für z/OS, das IBM-Mainframe-Computer antreibt, entwickelt werden.

Die Sprache wird derzeit unter der Apache-Lizenz vertrieben, die sie der Gemeinschaft zur Nutzung zur Verfügung stellt. Es handelt sich um ein relativ neues Projekt, das im Juni 2014 gestartet wurde, sieben Jahre nach der Einführung des ersten iPhones.

Was ist React Native?

React Native ist ein von Facebook unterstütztes Framework, mit dem sich geräteunabhängige mobile Anwendungen erstellen lassen. Im Gegensatz zu nativen Apps, die für jede Plattform eine andere Programmiersprache verwenden, basiert React Native auf JavaScript und ermöglicht es den Nutzern, den Code zwischen verschiedenen Plattformen, einschließlich Android, iOS und Web-Apps, zu teilen. Bis zu 70 % des Codes können zwischen den Apps geteilt werden, was die Entwicklungszeit bei der plattformübergreifenden Entwicklung mobiler Apps erheblich verkürzt.

React Native ist eine weit verbreitete und etablierte Technologie, die unter anderem von Shopify, Facebook und Walmart-Apps genutzt wird.

OG image button 1200 x 635

React Native vs. Swift – warum sollten wir sie vergleichen?

Mobile Apps werden immer mehr zu einem bloßen Werkzeug, um ein Problem zu lösen. Es geht immer mehr um den Lebensstil und die Bindung zum Nutzer – wenn er eine App installiert hat, ist die Marke ständig in seiner Tasche oder unter seiner Hand. Laut IDC-Daten überprüfen 80 % der Smartphone-Besitzer ihr Gerät spätestens 15 Minuten nach dem Aufstehen – also noch vor dem Zähneputzen. In Anbetracht dessen ist eine App ein Muss.

Allerdings ist die Erstellung einer App mit Kosten verbunden – manchmal sogar mit enormen Kosten, wenn es um hochmoderne plattformübergreifende mobile Entwicklung geht. Eine Kostensenkung ohne Qualitätseinbußen kann für Unternehmen ein großer Gewinn sein. Darüber hinaus müssen Unternehmen bei der Entwicklung von Apps sowohl die Anforderungen von iPhone- als auch von Android-Geräten berücksichtigen, indem sie zwei getrennte Software für dieselbe Aufgabe erstellen – die robusteste Form der plattformübergreifenden mobilen App-Entwicklung.

Aber die Optimierung kann mit Kosten verbunden sein, die nicht einfach zu akzeptieren sind. In Anbetracht dessen ist ein Vergleich der Möglichkeiten von React Native vs. Swift genau richtig.

Was ist zu beachten?

Die Entwicklung einer herausragenden App ist eine Summe vieler Faktoren, doch es gibt einige wenige Indikatoren, die den größten Wert haben. Lassen Sie den Vergleich React Native vs. Swift beginnen!

(Aber zuerst hier eine TL;DR-Version 😉)

React Native vs. Swift Diagramm 1

React Native vs. Swift – Plattformvergleich

User Interface

Swift, als iOS-native Sprache, die von Apple für die Entwicklung von Apps entwickelt wurde, hat offensichtlich keine Probleme, sich in das iOS-Design zu integrieren und alle UX-Prinzipien zu nutzen. Andererseits bedeutet die Entwicklung einer App mit Swift, dass eine native App von Grund auf neu programmiert wird. Daher muss jedes Element separat ausgefeilt werden.

React Native hingegen verwendet JavaScript als Kraft hinter der Bühne und nutzt die internen APIs, um native Elemente auszuführen. In Anbetracht dessen ist die Benutzeroberfläche nicht von der nativen zu unterscheiden, aber einfacher zu programmieren. Dank des Webentwicklungserbes von JavaScipt haben die Apps außerdem keine Probleme mit der Darstellung auf verschiedenen Bildschirmgrößen – und das kann ein wichtiger Punkt sein, wenn man eine App für iPhone und iPad gleichzeitig erstellt.

Geschwindigkeit der Programmierung

Swift ist, nun ja… Swift, wenn es um die Programmierung geht, da die Sprache das Erbe von Objective-C, das zuvor verwendet wurde, übernommen hat und den Prozess vereinfacht und Nachteile beseitigt. Es ist eine bequeme Art, eine iOS-App zu erstellen.

Andererseits ist React Native ein Framework für JavaScript, das ein einfaches, aber leistungsfähiges Arbeitspferd für Web-Apps ist. Die Sprache ist auch leicht zu erlernen und seit 1995, als die Sprache eingeführt wurde, wurden verschiedene Support-Tools entwickelt.

Das Spiel ändert sich, wenn es um die Erstellung einer Android-App geht. Mit React Native kann es sogar ein Copy-Paste-Prozess sein (bis zu einem gewissen Grad). Wenn die App mit Swift erstellt wurde, beginnt der Prozess von vorne.

Performance

Die Intuition legt nahe, dass die native App eine bessere Performance haben sollte als die Framework-basierte. Aber so einfach ist es nicht.

Verschiedene Tests im Web zeigen, dass beim Vergleich zweier identischer Apps, die die gleichen Aktionen ausführen, die Unterschiede je nach Aufgabe variieren. React Native ist etwas besser, wenn es um die Optimierung der CPU-Nutzung geht, aber der Umgang mit grafischen Effekten kann für das Framework problematischer sein. Um diese Herausforderung zu meistern, ermöglicht es React Native den Entwicklern, den nativen Code in die App einzubetten und die Code-Chimäre mit verschiedenen Tools und Assets zu liefern, um unterschiedliche Aufgaben zu bewältigen.

Aber allein die Tatsache, dass die Unterschiede nicht signifikant sind, ist ein großartiges Zeugnis für React Native.

Community und Support

JavaScript ist derzeit eine der beliebtesten Programmiersprachen, die in der Web- und hybriden mobilen App-Entwicklung verwendet wird. In der Tat – es bleibt die beliebteste Programmiersprache für das sechste Jahr in Folge und ist auf über 95,1% der Internet-Websites verwendet.

Es ist schwer, die Position von JavaScript in Frage zu stellen, wenn es sich 2014 etabliert hat, selbst wenn es von Apple unterstützt wird.

Auf der anderen Seite ist mit der kleineren Community der Vorrat an minderwertigen Inhalten deutlich geringer. Wenn es darum geht, irgendetwas über JavaScript im Internet zu finden, gibt es unzählige Antworten, die mit einer Menge von Problemen verbunden sind, die nur wenig mit dem zu lösenden Problem zu tun haben. Trotz der großen Gemeinschaft von JavaScript-Programmierern kann die Suche nach einer Antwort also wie die Suche nach einer Nadel im Heuhaufen aussehen.

Die Situation ist auch auf die Allgegenwärtigkeit und Vielseitigkeit von JavaScript zurückzuführen. Die Sprache wird verwendet, um verschiedene Arten von Problemen zu lösen, sei es bei der Webentwicklung, der Entwicklung mobiler Anwendungen oder sogar beim maschinellen Lernen – ja, es gibt Frameworks, die neuronale Netze und JavaScript kombinieren, und sie sind viel mehr als nur eine interessante Spielerei oder ein Phänomen.

Im Gegensatz dazu beziehen sich die Probleme im Zusammenhang mit Swift nur auf eine Art der Programmierung – die iOS-App-Entwicklung. Wenn man bedenkt, dass die Problemklassen sehr eng gefasst sind und man nicht nach einer Lösung für eine extrem anspruchsvolle, noch nie dagewesene Herausforderung sucht, kann es wesentlich einfacher sein, die Lösung zu finden oder in der Community danach zu fragen.

Daher kann eine größere Gemeinschaft manchmal mehr Verwirrung stiften als einen wirklichen Nutzen bringen.

Stabilität

React Native produziert, obwohl es auf einer der bekanntesten Programmiersprachen basiert, keine wirklich native App. Seine Arbeit basiert darauf, die internen APIs und Bibliotheken zu nutzen, um die App zum Laufen zu bringen. Es geht also darum, einen Mittelsmann zwischen dem Code und der Plattform hinzuzufügen.

Auf der anderen Seite erzeugt Swift eine native App, die alle Möglichkeiten der Plattform nutzen kann. Wie bereits erwähnt, schneidet Swift besser ab, wenn es um grafische Effekte und rechenintensive Aufgaben geht. Wenn es also darum geht, die Plattform auszureizen, ist Swift vielleicht die bessere Wahl.

Aber reizt jede App das iPhone aus? Und wie viele Swift-Entwickler sind qualifiziert genug, um eine App zu entwickeln, die so optimiert ist, dass sie stabiler läuft als React Native?

Dokumentation

Sowohl React Native als auch Swift werden von Tech-Giganten unterstützt und gepflegt. React Native ist ein Projekt, das von Facebook unterstützt wird, und Swift kommt von Apple. In Anbetracht dessen sind beide Projekte gut dokumentiert und organisiert. In der Tat bieten beide Technologien Standards für die Kommentierung des Codes in einer Weise, die leicht in die Dokumentation umgewandelt werden kann, was die erforderliche Zeit erheblich reduziert. Um genau zu sein:

  • JSDoc for Java
  • Jazza, das Kommentare in Swift in Markdown konvertiert.

Aber abgesehen von der Dokumentation, die der Projekteigner liefert, gibt es noch einen anderen Aspekt bei der Lieferung des IT-Projekts – die Einfachheit und Automatisierung der Dokumentation des gelieferten Codes. Es gibt eine (nicht wirklich) humorvolle Aussage über die Notwendigkeit, Kommentare zu schreiben und eine zuverlässige Dokumentation für jeden geschriebenen Code zu liefern:

Jeder eigene Code, den man sich sechs oder mehr Monate lang nicht angesehen hat, könnte genauso gut von jemand anderem geschrieben worden sein.

– Eagleson’s Law

So ist es in der Tat – egal wie brillant ein Programmierer ist, jeder unterdokumentierte Code ist auf den ersten Blick Spaghetti. Automatisierte Dokumentationsfunktionen – sowohl für das Hinzufügen von Kommentaren als auch für den Export der vollständigen Dokumente – können eine enorme Zeitersparnis bedeuten.

Wenn es um diesen Aspekt geht, verfügt React Native über deutlich ausgefeiltere Tools, um die Dokumentation zu automatisieren oder sogar die Diskussion unter den Programmierern während des Entwicklungsprozesses zu unterstützen.

In dieser Hinsicht liegt der Vorteil also auf der Seite von React Native.

Die Reife der Plattform

Beide Projekte sind relativ neu, wobei Swift im Jahr 2014 und React Native im Jahr 2015 auf den Markt gebracht wurden (als direkter Nachkomme von React.js, das seit 2011 bei Facebook im Einsatz ist und 2013 als Open Source veröffentlicht wurde). Diese Technologien sind noch im Entstehen begriffen, doch es gibt nur wenige signifikante Unterschiede.

Swift ist eine neue Programmiersprache, die als nächster Schritt nach Objective-C konzipiert wurde. Die Entwicklung einer Programmiersprache ist immer ein heikler Prozess, da sie das Rückgrat jeder Software ist.

React Native hingegen ist eine neue Technologie, die auf einer etablierten Technologie basiert – JavaScript. Daher ist es einfacher, den Code zu überprüfen und die Probleme mit dem Framework selbst zu erkennen und die Fehler zu finden.

Die Entwicklungskosten

Zu guter Letzt sind die Entwicklungskosten einer der Hauptaspekte, die man berücksichtigen muss, wenn man sich für eine bestimmte Technologie entscheidet, um das Projekt umzusetzen. Die meisten Herausforderungen in diesem Bereich können mit einem einfachen Diagramm gelöst werden, das die steigende Qualität mit dem steigenden Preis darstellt. Aber das ist nicht unbedingt die Wahrheit – vor allem in Bezug auf die iOS-App-Entwicklung.

Nach verschiedenen Schätzungen gibt es keinen signifikanten Unterschied bei den Stundenlöhnen der Programmierer, wobei die Verdienste der schnellen Entwicklungsteams etwas höher sind:

React Native vs. Swift Grafik 2

Anscheinend ist der Unterschied nicht so groß, wenn es um einen einzelnen Coder geht, aber sie stapeln sich, wenn es um ein großes Projekt oder mehrere Coder im Team geht.

Wenn man also über die Entwicklungskosten in harter Währung nachdenkt, ist React Native etwas billiger, während es alle Vorteile beibehält, die es bietet.

Talentpool der Entwickler

Die obigen Zahlen können verwirrend sein – warum, um Linus Torvalds Willen, wird der Programmierer, der die App nur für ein mobiles Betriebssystem liefert, besser bezahlt als derjenige, dessen Code auf beiden führenden Plattformen gleichzeitig verwendet werden kann, was die Entwicklungszeit und -kosten effektiv halbiert.

Der Grund dafür hängt mit der Verfügbarkeit von Talenten auf dem Markt zusammen. JavaScript ist eine der populärsten Sprachen, die es gibt. Laut einer Umfrage von Stack Overflow würden 69,8 % der Nutzer JavaScript als Sprache ihrer Wahl wählen, während Swift kaum unter den ersten fünfzehn zu finden ist.

In Anbetracht dessen gibt es viele JavaScript-Programmierer, die zur Auswahl stehen, während eine deutlich geringere Zahl Swift beherrscht. Der Aufbau eines Teams von JavaScript-Codierern ist deutlich einfacher.

App-Beispiele

Ok, wir haben also die ganze Technik-Magie hinter uns und die entscheidende Frage kommt jetzt – was ist der wirkliche Unterschied zwischen diesen beiden Sprachen und kann man einen signifikanten Unterschied erkennen? Der beste Test lässt sich mit zwei ähnlichen, aber völlig unterschiedlichen Apps wie der Facebook-App für iOS und der LinkedIn-App für iOS durchführen.

Beide sind datenintensive Social-Media-Apps, bei denen Feeds angezeigt, Nachrichten ausgetauscht und Anzeigen geschaltet werden müssen. Außerdem liefern beide eine beträchtliche Menge an Inhalten und müssen optimiert werden, um eine gute Leistung zu erbringen und die Daten der Nutzer zu nutzen – schließlich ist die mobile App eine der besten Möglichkeiten, um die Daten zu erhalten, die das Unternehmen auf andere Weise nur schwer erfassen kann, wie Lokalisierung oder Verhaltensmuster.

Die Hauptunterschiede zeigen sich in zwei entscheidenden Bereichen – Leistung und Funktionen. Die LinkedIn-App in Swift scheint im Vergleich zu der von Facebook aufgebläht zu sein, obwohl die Menge der zu verarbeitenden und zu analysierenden Daten relativ gering ist. Außerdem scheint die LinkedIn-App weniger intuitiv zu sein, aber das ist eine Frage der UX und des Designs, nicht der Programmiertechnologie, die zur Bereitstellung des Produkts verwendet wird.

Im Endeffekt scheint es, dass die javascript-basierte Technologie eine viel bessere Leistung bietet als die native Sprache, wenn es um die Bereitstellung von reichhaltigen Inhalten geht.

Zusammenfassung – die Widerstandsfähigkeit einer Programmiersprache

Programmierung und IT-Business basieren auf einem etwas schizophrenen Paradigma, neue Dinge mit alten Werkzeugen zu bauen. Trotz der Bemühungen von Tech-Giganten und aufstrebenden Programmiersprachen, die als Wunderkinder angesehen werden, verlassen veraltete, manchmal sogar antiquierte Dinge das Feld nicht. Zumindest nicht so einfach.

Fortran ist vielleicht ein extremes Beispiel für die Widerstandsfähigkeit von Programmiersprachen. Es wurde 1957 eingeführt, vier Jahre vor Juri Gagarins Raumflug und neun Jahre vor der Mondlandung.

Oh, und 28 Jahre vor der ersten Ausgabe des Windows-Betriebssystems. Und doch wird Fortran immer noch verwendet, vor allem in rechenintensiven Bereichen wie Wettervorhersage und Astronomie.

Das gleiche Schicksal scheint JavaScript zu ereilen, das trotz seines Alters von über 20 Jahren das moderne Web antreibt. Mit React Native hat es eine Chance, weiter als Arbeitspferd für mobile Geräte eingesetzt zu werden, vor allem, wenn man die Dynamik der React Native-Entwicklungsunternehmen bedenkt.

Die Vorbereitung der App mit Swift kann einige Leistungssteigerungen mit sich bringen und ermöglicht es dem Entwickler, alle von iOS gebotenen Möglichkeiten zu nutzen. Aber in den meisten Fällen scheint der Gewinn nicht so signifikant zu sein, wenn man die Möglichkeiten von React Native vs. Swift vergleicht.

Nicht zu vergessen, dass es eine ganze Welt von Android-Nutzern gibt, die auf eine App warten.

Aber hey, du liest diesen Blogpost nicht zufällig – aus irgendeinem Grund hast du nach dem Vergleich zwischen React Native und Swift gesucht. Auch wenn unser Vergleich zeigt, dass React Native die bessere Wahl ist, haben wir keine Informationen über die Herausforderung, die auf Ihr Unternehmen wartet, die Sie mit einer App lösen wollen. Und der Hintergrund kann ein Game-Changer sein – manchmal gibt es Details, die es notwendig machen, eine Technologie einer anderen vorzuziehen, selbst wenn sie auf den ersten Blick ähnlich sind oder eine andere besser zu sein scheint.

Bei der Technologie geht es nicht darum, von einer bestimmten Technologie besessen zu sein – es geht darum, sich die besten Teile herauszupicken und die Lösung zu entwickeln, die den Rest des Marktes übertrifft. Aus diesem Grund halten wir unser Team aus vielseitig begabten und qualifizierten Experten bereit, über den Tellerrand zu schauen. Wenn Sie sich also fragen, ob React Native oder Swift besser für Ihr Projekt geeignet ist – schreiben Sie uns einfach eine Nachricht, damit wir es gemeinsam herausfinden können…