A React Native és a Swift is viszonylag új technológiák, amelyek az iOS-eszközökre való mobilalkalmazás-fejlesztést támogatják. Míg a React Native egy keretrendszer a JavaScripthez, addig a Swift egy vadonatúj programozási nyelv. Tehát melyiket válasszuk, ha új iOS-alkalmazás készítésén gondolkodunk?

A szövegben szó esik:

  1. Mi a Swift?
  2. Mi a React Native?
  3. Miért hasonlítjuk össze őket egyáltalán?
  4. Összehasonlítás
  5. Néhány gondolat Fortranról és a számítástechnika történetéről (komolyan!)

Az iPhone kétségtelenül több, mint egy eszköz – ez egy kulturális és társadalmi jelenség, amely kezdetben az okostelefonok forradalmát hajtotta, amelyet a készülék 2007 júniusi első megjelenése indított el. Azóta a készülék népszerűsége az egekbe szökött, mivel a márka lenyűgöző, 13,2%-os részesedést ért el a globális okostelefon-értékesítésben. Ez különösen akkor lenyűgöző, ha a kontextusban nézzük – az Apple egy prémium márka, míg ezek a számok tartalmazzák a feltörekvő piacokon értékesített no name vagy olcsó márkákat is.

Az iOS-alapú készülékek az USA, Kanada, Skandinávia és Ausztrália erős gazdaságaiban örvendenek a legnagyobb népszerűségnek. 2017 végén az amerikai tizenévesek 78%-ának volt iPhone-ja, és 80%-uk állította, hogy a következő okostelefonjuk is iOS-alapú lesz.

Ezt figyelembe véve nem meglepő, hogy az Apple elég erős ahhoz, hogy saját keretrendszereket és programozási nyelveket erőltessen – és lényegében ez a Swift.

Elosztott szoftverfejlesztő csapat építése Európában WEBINAR

Mi a Swift?

A Swift egy modern, általános célú és több paradigmát felölelő programozási nyelv, amelyet az Apple az iOS-alapú készülékeik és az azt követő ökoszisztéma építéséhez tervezett. Az alkalmazásokat úgy lehet tervezni, hogy azok fussanak a macOS (Apple számítógépekhez), a watchOS (AppleWatch), a tvOS (Apple TV digitális médialejátszó) és – ami talán kicsit meglepő – az IBM Mainframe számítógépeit működtető z/OS rendszeren is.

A nyelvet jelenleg Apache licenc alapján terjesztik, ami a közösség számára elérhetővé teszi a használatát. Viszonylag új projektről van szó, 2014 júniusában indult, hét évvel az első iPhone megjelenése után.

Mi a React Native?

A React Native egy Facebook által támogatott keretrendszer, amelyet eszköz-agnosztikus mobilalkalmazások készítésére terveztek. A natív alkalmazásokkal ellentétben, amelyek platformonként eltérő programozási nyelveket használnak, a React Native JavaScriptre épül, és lehetővé teszi a felhasználók számára, hogy a kódot megosszák a különböző platformok között, beleértve az Android, iOS és webes alkalmazásokat. A kód akár 70%-a is megosztható az alkalmazások között, ami jelentősen csökkenti a fejlesztési időt a platformok közötti mobilalkalmazás-fejlesztés során.

A React native széles körben használt és bevált technológia, amelyet többek között a Shopify, a Facebook és a Walmart alkalmazásai is kihasználnak.

OG képgomb 1200 x 635

React Native vs. Swift – miért érdemes összehasonlítani őket?

A mobilalkalmazások nem csupán egy egyszerű eszközzé válnak egy probléma megoldására. Egyre inkább az életstílusról és a felhasználóval való kapcsolat kialakításáról szólnak – ha telepítettek egy alkalmazást, a márka folyamatosan a zsebükben vagy a kezük alatt van. Az IDC adatai szerint az okostelefon-tulajdonosok 80%-a legkésőbb 15 perccel a felkelés után – gyakorlatilag még a fogmosás előtt – ellenőrzi készülékét. Ezt figyelembe véve az alkalmazás megléte elengedhetetlen.

Az alkalmazás elkészítése mindazonáltal költséggel jár – néha hatalmas költséggel, ha a legmodernebb, platformokon átívelő mobilfejlesztésről van szó. A költségek csökkentése minőségromlás nélkül hatalmas nyereség lehet a vállalatok számára. Ráadásul az alkalmazások fejlesztése során a vállalatoknak mind az iPhone, mind az Android-alapú eszközök igényeit figyelembe kell venniük, gyakorlatilag két különálló, ugyanarra a feladatra tervezett szoftvert kell elkészíteniük – ez a keresztplatformos mobilalkalmazás-fejlesztés legstabilabb formája.

Az optimalizálás azonban olyan költségekkel járhat, amelyeket nem könnyű elfogadni. Ezt figyelembe véve a React Native vs. Swift lehetőségeinek összehasonlítása pontos.

Mit kell figyelembe venni?

A kiemelkedő alkalmazás fejlesztése sok tényező összessége, mégis van néhány mutató, amely a legnagyobb értékkel bír. Kezdődjön a React Native vs. Swift összehasonlítás!

(De először is, itt a TL;DR verzió 😉)

React Native vs Swift táblázat 1

React Native vs Swift – platform összehasonlítás

Használói felület

A Swift, mint az Apple által az alkalmazások működtetésére tervezett iOS-natív nyelvnek nyilvánvalóan nem okoz gondot az iOS-designba való integrálódás és az összes UX-elv kihasználása. Másrészt az alkalmazás Swifttel való megépítése valójában egy natív alkalmazás kódolása a semmiből. Így minden elemet külön kell csiszolni.

A React Native ezzel szemben a JavaScriptet használja erőforrásként a színfalak mögött, és a belső API-kat használja a natív elemek futtatásához. Ezt figyelembe véve a felhasználói felület megkülönböztethetetlen a natívtól, mégis könnyebb kódolni. Ráadásul a JavaScipt webfejlesztői örökségének köszönhetően az alkalmazásoknak nem okoz gondot a különböző képernyőméreteken való megjelenítés – ez pedig akkor lehet szempont, ha egyszerre építünk alkalmazást iPhone-ra és iPadre.

A kódolás sebessége

A Swift, nos… Swift, ha kódolásról van szó, mivel a nyelv levette a korábban használt Objective-C örökségét, megkönnyítve a folyamatot és megszabadulva a hátrányoktól. Ez egy kényelmes módja az iOS-alkalmazások készítésének.

A másik oldalon a React Native egy JavaScript keretrendszer, amely a webes alkalmazások egyszerű, mégis erőteljes munkalova. A nyelvet is könnyű megtanulni, és 1995-től, a nyelv bevezetésétől kezdve különböző támogató eszközöket terveztek.

A játék megváltozik, amikor az Android-alkalmazás építéséről van szó. A React Native-tal akár copy-paste folyamat is lehet (bizonyos mértékig). Ha az alkalmazást Swifttel építették, a folyamat az elejétől kezdődik.

Teljesítmény

A megérzés azt sugallja, hogy a natív alkalmazásnak jobb teljesítményűnek kell lennie, mint a keretrendszer alapúnak. De ez nem ilyen egyszerű.

A weben látott különféle tesztek azt mutatják, hogy két azonos műveletet végrehajtó azonos alkalmazás összehasonlításakor a különbségek a feladattól függően változnak. A React Native valamivel jobb, ha a CPU-használat optimalizálásáról van szó, de a grafikus effektusok kezelése nagyobb gondot okozhat a keretrendszer számára. A kihívás kezelésére a React Native lehetővé teszi a fejlesztők számára, hogy a natív kódot beágyazzák az alkalmazásba, a különböző feladatok kezeléséhez különböző eszközöket és eszközöket használó kódkimérát szolgáltatva.

De már az a puszta tény, hogy a különbségek nem jelentősek, nagyszerű bizonyság a React Native mellett.

Közösség és támogatás

A JavaScript jelenleg az egyik legnépszerűbb programozási nyelv, amelyet a webes és hibrid mobilalkalmazások fejlesztésében használnak. Valójában – immár hatodik éve a legnépszerűbb programozási nyelv, és az internetes webhelyek több mint 95,1%-án használják.

Nehéz megkérdőjelezni a JavaScript pozícióját, amikor 2014-ben alakult ki, még az Apple támogatásával is.

Másrészt a kisebb közösség miatt az alacsony színvonalú tartalmak készlete lényegesen kisebb. Ha az interneten bármit is találni a JavaScriptről, számtalan válasz társul rengeteg problémával, amelyek csak kis mértékben kapcsolódnak a megoldandó problémához. Így valójában a JavaScript-kódolók nagy közössége ellenére a válasz megtalálása olyan lehet, mint tűt keresni a szénakazalban.

A helyzet a JavaScript mindenütt jelenléte és sokoldalúsága miatt is látható. A nyelvet többféle probléma megoldására használják, legyen szó webfejlesztésről, mobilalkalmazás-fejlesztésről vagy akár gépi tanulásról – igen, léteznek neurális hálózatokat és javascriptet kombináló keretrendszerek, és ezek sokkal több mint egy érdekes játékszer vagy jelenség.

Szigorú ellentétben – a Swifttel kapcsolatos problémák csak egy programozási típusra vonatkoznak – az iOS alkalmazásfejlesztésre. Ezt figyelembe véve a problémák osztályai szűkek, és feltételezve, hogy valaki nem valami rendkívül bonyolult, korábban soha nem tapasztalt kihívásra keres megoldást, a megoldás kiszúrása vagy a közösségben való rákérdezés lényegesen könnyebb lehet.

Ezért a nagyobb közösség néha több zavart okozhat, mint valódi előnyt.

Szabályozhatóság

A React Native annak ellenére, hogy az egyik legismertebb programozási nyelvből táplálkozik, nem igazán natív alkalmazást készít. Munkája a belső API-k és könyvtárak kihasználásán alapul, hogy az alkalmazás működjön. Tehát arról van szó, hogy egy közvetítőt ad a kód és a platform közé.

A Swift viszont olyan natív alkalmazást készít, amely a platform összes lehetőségét kihasználhatja. Ahogy fentebb említettük, a Swift jobban teljesít, amikor grafikai effektekkel és számításigényes feladatokkal foglalkozik. Tehát ha a platform kiszipolyozásáról van szó, a Swift lehet a jobb választás.

De vajon minden alkalmazás kiszipolyozza az iPhone-t? És hány Swift-fejlesztő elég képzett ahhoz, hogy olyan alkalmazást készítsen, amely eléggé optimalizált ahhoz, hogy stabilabban teljesítsen, mint a React Native?

Dokumentáció

A React Native-ot és a Swiftet is technológiai óriások támogatják és karbantartják. A React Native egy Facebook által támogatott projekt, a Swift pedig az Apple-től származik. Ezt figyelembe véve mindkét projekt jól dokumentált és szervezett. Valójában mindkét technológia olyan szabványokat szállít a kód kommentálására, amelyek könnyen átalakíthatók a dokumentációba, jelentősen csökkentve a szükséges időt. Pontosabban:

  • JSDoc for Java
  • Jazza, amely a Swiftben készült megjegyzéseket markdownba konvertálja.

A projektgazda által szállított dokumentáción kívül azonban van egy másik aspektusa is az informatikai projekt szállításának – a szállított kód dokumentálásának egyszerűsége és automatizálása. Van egy (nem igazán) humoros kijelentés arra vonatkozóan, hogy minden megírt kódhoz megjegyzéseket kell írni és megbízható dokumentációt kell szállítani:

Minden olyan saját kód, amelyet hat vagy több hónapja nem nézett meg, akár más is írhatta.

– Eagleson-törvény

Így valójában – bármilyen zseniális is egy programozó, minden aluldokumentált kód első pillantásra spagetti. Az automatizált dokumentációs funkciók – mind a megjegyzések hozzáadását, mind a teljes dokumentumok exportálását lehetővé téve – hatalmas időmegtakarítást jelenthetnek.

A React Native ebben az aspektusban lényegesen kifinomultabb eszközökkel rendelkezik a dokumentáció szállításának automatizálására vagy akár a kódolók közötti vita támogatására a fejlesztési folyamat során.

Ezt a szempontot figyelembe véve tehát – az előny a React Native oldalán van.

A platform érettsége

Mindkét projekt viszonylag új, a Swift 2014-ben indult, a React Native pedig 2015-ben (a React.js közvetlen leszármazottja, amelyet 2011 óta használnak a Facebookon belül, és 2013-ban vált nyílt forráskódúvá). Ezek a technológiák feltörekvőben vannak, mégis kevés jelentős különbség van közöttük.

A Swift egy új programozási nyelv, amelyet az Objective-C után a következő lépésnek szántak. Egy programozási nyelv megtervezése mindig kényes folyamat, hiszen minden szoftver gerincét ez adja.

A React Native ezzel szemben az új technológia, amelyet a bevált – a JavaScript – hajt. Így könnyebb ellenőrizni a kódot és kiszúrni a problémákat magával a keretrendszerrel, és a hibák kiszúrása is könnyebb.

A fejlesztés költségei

Végül, de nem utolsósorban a fejlesztési költség az egyik legfontosabb szempont, amit… nos… figyelembe kell venni, amikor azon gondolkodunk, hogy egy adott technológiát válasszunk a projekt megvalósításához. A legtöbb kihívás ezen a területen megoldható egy egyszerű grafikonnal, amely a növekvő minőséget ábrázolja a növekvő árral. De ez nem feltétlenül így van – különösen az iOS-alkalmazásfejlesztést tekintve.

A különböző becslések szerint nincs jelentős különbség a programozók órabérében, a gyors fejlesztőcsapatok valamivel magasabb keresetével:

React Native vs Swift 2. táblázat

A különbség nyilvánvalóan nem olyan nagy, ha egyetlen kódolóról van szó, mégis halmozódnak, ha egy nagy projektről vagy számos kódolóról van szó a csapaton belül.

Azaz, ha a kemény valutában számolt fejlesztési költségekre gondolunk, a React Native valamivel olcsóbb, miközben minden előnyét megtartja.

Developers talent pool

A fenti számok zavaróak lehetnek – Linus Torvald kedvéért miért fizetik jobban azt a kódolót, aki csak egy mobil OS-re szállítja az alkalmazást, mint azt a srácot vagy lányt, akinek a kódja egyszerre mindkét vezető platformon használható, gyakorlatilag felére csökkentve a fejlesztési időt és költségeket.

Az ok a tehetségek piaci elérhetőségével függ össze. A JavaScript az egyik legnépszerűbb nyelv. A Stack Overflow által végzett felmérés szerint a felhasználók 69,8%-a a JavaScriptet választaná a választott nyelvnek, míg a Swift alig kerül be az első tizenötbe.

Ezt figyelembe véve sok JavaScript-kódoló közül lehet választani, míg a Swiftet lényegesen kevesebben ismerik. A JavaScript-kódolókból álló csapat felépítése lényegesen könnyebb.

Alkalmazási példák

Oké, tehát minden techie-mágiát magunk mögött tudunk, és jön a döntő kérdés – mi a valódi különbség a két nyelv között, és ki lehet-e szúrni a jelentős különbséget? A legjobb tesztet két hasonló – mégis teljesen különböző – alkalmazáson lehet elvégezni, mint például a Facebook alkalmazás iOS-en és a LinkedIn alkalmazás iOS-en.

Mindkettő adatigényes közösségi médiaalkalmazás a megjelenítendő hírfolyam, az üzenetek cseréje és a hirdetések megjelenítése miatt. Emellett mindkettő jelentős mennyiségű tartalmat szolgáltat, és optimalizálni kell őket, hogy jól teljesítsenek és hasznosítani tudják a felhasználók adatait – végső soron a mobilalkalmazás az egyik legjobb módja annak, hogy olyan adatokhoz jusson a vállalat, amelyeket más módon, például lokalizációval vagy viselkedési mintákkal nehezen tud összegyűjteni.

A legfontosabb különbségek két kulcsfontosságú területen – a teljesítmény és a funkciók terén – mutatkoznak. A LinkedIn Swift alkalmazás a Facebookéhoz képest felfújtnak tűnik, annak ellenére, hogy viszonylag kevesebb adatot kell feldolgozni és elemezni. Emellett a LinkedIn alkalmazás kevésbé tűnik intuitívnak, ez azonban az UX és a dizájn kérdése, nem pedig a termék megvalósításához használt programozási technológia.

Végeredményben – úgy tűnik, hogy a javascript-alapú technológia sokkal jobb teljesítményt nyújt, mint a natív nyelv, ha gazdag tartalom szolgáltatásáról van szó.

Összefoglalva – egy programozási nyelv rugalmassága

A programozás és az IT-üzlet egy kissé skizofrén paradigmán alapul, amely szerint új dolgokat építenek régi eszközökkel. A technológiai óriások erőfeszítései és a csodagyerekeknek tartott új programozási nyelvek ellenére az elöregedett, néha már elavult dolgok nem hagyják el a terepet. Legalábbis nem könnyen.

A Fortran a programozási nyelvek ellenálló képességének szélsőséges példája lehet. 1957-ben indult, négy évvel Jurij Gagarin űrrepülése és kilenc évvel a Holdra szállás előtt.

Ó, és 28 évvel a Windows operációs rendszer első kiadása előtt. És mégis, a Fortran még mindig használatban van, különösen az olyan nehéz számítástechnikai területeken, mint az időjárás-előrejelzés és a csillagászat.

A jelek szerint ugyanez a sorsa a JavaScriptnek is, amely több mint 20 éves kora ellenére a modern webet hajtja. A React Native-tal esélye van arra, hogy a mobileszközök munkalovaként tovább használható legyen, különösen a React native fejlesztő cégek dinamikáját figyelembe véve.

Az alkalmazás Swift-tel való elkészítése némi teljesítménynövekedéssel járhat, és lehetővé teszi a fejlesztő számára, hogy kihasználja az iOS által nyújtott összes lehetőséget. De a legtöbb esetben a React Native vs. Swift lehetőségek összehasonlításakor a nyereség nem tűnik olyan jelentősnek.

Nem beszélve arról, hogy az Android felhasználók egész világa várja az alkalmazást.

De hé, nem véletlenül olvasod ezt a blogbejegyzést – valamiért a react native és a swift összehasonlítását kerested. Még akkor is, ha az összehasonlításunk azt mutatja, hogy a React Native jobb választás, nincs információnk arról, hogy milyen kihívás vár a vállalkozásodra, amit egy alkalmazással szeretnél megoldani. Márpedig a háttér meghatározó lehet – néha vannak olyan részletek, amelyek miatt az egyik technológiát a másik helyett kell választani, még akkor is, ha első ránézésre hasonlóak, vagy egy másik jobbnak tűnik.

A technológia nem arról szól, hogy egy adott technológia megszállottjává váljunk – hanem arról, hogy kiválogassuk a legjobb részeket, és elkészítsük azt a megoldást, amely felülmúlja a piac többi részét. Ezért tartjuk a sokoldalúan tehetséges és képzett szakértőkből álló csapatunkat készen arra, hogy “out-of-the-box” módon gondolkodjon. Ha tehát azon gondolkodik, hogy a React Native vagy a Swift jobban illik-e a projektjéhez – talán csak írjon nekünk egy sort, hogy együtt kiderítsük?