React Native și Swift sunt ambele tehnologii relativ noi care susțin dezvoltarea aplicațiilor mobile pentru dispozitivele iOS. În timp ce React Native este un cadru pentru JavaScript, Swift este un limbaj de programare complet nou. Așadar, pe care dintre ele să o alegeți atunci când vă gândiți să construiți o nouă aplicație pentru iOS?

Textul acoperă:

  1. Ce este Swift?
  2. Ce este React Native?
  3. De ce să le comparăm totuși?
  4. Comparare
  5. Câteva gânduri despre Fortran și istoria informaticii (serios!)

iPhone este, fără îndoială, mai mult decât un dispozitiv – este un fenomen cultural și social care a alimentat inițial revoluția smartphone-urilor declanșată de prima lansare a dispozitivului în iunie 2007. De atunci, popularitatea dispozitivului a crescut vertiginos, marca înregistrând o cotă impresionantă de 13,2% din vânzările globale de unități de smartphone-uri. Este deosebit de impresionant atunci când este privit în context – Apple este o marcă premium, în timp ce aceste cifre includ și mărci fără nume sau de buget, vândute pe piețele emergente.

Dispozitivele cu sistem de operare iOS cunosc cea mai mare popularitate în economiile puternice din SUA, Canada, Scandinavia și Australia. La sfârșitul anului 2017, 78% dintre adolescenții din SUA dețineau un iPhone, iar 80% au afirmat că următorul lor smartphone va fi, de asemenea, alimentat cu iOS.

Considerând acest lucru, nu este o surpriză faptul că Apple este suficient de puternică pentru a forța propriile cadre și limbaje de programare – și asta este, practic, Swift.

Building a Distributed Software Engineering Team in Europe WEBINAR

Ce este Swift?

Swift este un limbaj de programare modern, de uz general și multiparadigmă, conceput de Apple pentru a construi dispozitivele lor alimentate cu iOS și tot ecosistemul care urmează. Aplicațiile pot fi proiectate pentru a rula și pe macOS (pentru computerele Apple), watchOS (AppleWatch), tvOS (player media digital Apple TV) și, ceea ce poate fi puțin surprinzător, z/OS, care alimentează computerele IBM Mainframe.

Limbajul este distribuit în prezent sub licență Apache, care îl pune la dispoziția comunității pentru a fi utilizat. Este un proiect relativ nou, lansat în iunie 2014, la șapte ani de la lansarea primului iPhone.

Ce este React Native?

React Native este un framework susținut de Facebook, conceput pentru a construi aplicații mobile agnostice față de dispozitive. Spre deosebire de aplicațiile native care folosesc limbaje de programare diferite pentru fiecare platformă, React Native se bazează pe JavaScript și permite utilizatorilor să partajeze codul între diverse platforme, inclusiv Android, iOS și aplicații web. Până la 70% din cod poate fi partajat între aplicații, reducând semnificativ timpul de dezvoltare în dezvoltarea aplicațiilor mobile cross-platform.

React Native este o tehnologie utilizată pe scară largă și consacrată, valorificată de aplicațiile Shopify, Facebook și Walmart, printre altele.

Botoane imagine OG 1200 x 635

React Native vs. Swift – de ce ar trebui să le comparăm?

Aplicațiile mobile devin nu doar un simplu instrument pentru a rezolva o problemă. Devine mai mult despre stilul de viață și stabilirea legăturii cu utilizatorul – dacă acesta are o aplicație instalată, brandul este în permanență în buzunar sau sub mână. Conform datelor IDC, 80% dintre posesorii de smartphone-uri își verifică dispozitivul la cel mult 15 minute după ce se trezesc – efectiv înainte chiar de a se spăla pe dinți. Având în vedere acest lucru, a avea o aplicație este o necesitate.

Cu toate acestea, construirea aplicației reprezintă un cost – uneori unul uriaș, atunci când vine vorba de dezvoltarea mobilă de ultimă generație pe mai multe platforme. Reducerea costurilor fără a pierde din calitate poate fi un câștig uriaș pentru companii. Mai mult, atunci când dezvoltă aplicații, companiile trebuie să se adreseze atât nevoilor dispozitivelor cu iPhone, cât și celor cu Android, pregătind efectiv două bucăți de software separate, concepute pentru a îndeplini aceeași sarcină – cea mai robustă formă de dezvoltare a aplicațiilor mobile cross-platform.

Dar optimizarea poate veni cu costuri care nu sunt de acceptat cu ușurință. Având în vedere acest lucru, compararea posibilităților oferite de React Native vs. Swift este exactă.

Ce trebuie luat în considerare?

Dezvoltarea unei aplicații remarcabile este o sumă de mulți factori, însă există câțiva indicatori care au cea mai mare valoare. Să înceapă comparația React Native vs. Swift!

(Dar mai întâi, iată o versiune TL;DR 😉)

React Native vs Swift diagramă 1

React Native vs Swift – comparație între platforme

Interfață utilizator

Swift, fiind limbajul nativ pentru iOS conceput de Apple pentru a propulsa aplicațiile nu are, evident, nicio problemă în a se integra în designul iOS și în a valorifica toate principiile UX. Pe de altă parte, construirea aplicației cu Swift înseamnă, de fapt, codificarea unei aplicații native de la zero. Astfel, fiecare element trebuie să fie șlefuit separat.

React Native, pe de altă parte, folosește JavaScript ca putere în spatele scenei și valorifică API-urile interne pentru a rula elementele native. Având în vedere acest lucru, interfața cu utilizatorul este imposibil de distins de cea nativă, dar mai ușor de codat. Mai mult decât atât, datorită legității de dezvoltare web a JavaScipt, aplicațiile nu au probleme în ceea ce privește afișarea pe diferite dimensiuni de ecran – iar acest lucru poate fi un punct de vedere atunci când se construiește o aplicație pentru iPhone și iPad în același timp.

Viteza de codare

Swift este, ei bine… Swift când vine vorba de codare, deoarece limbajul a preluat moștenirea Objective-C folosită anterior, făcând procesul mai ușor și scăpând de dezavantaje. Este un mod convenabil de a construi o aplicație iOS.

Pe de altă parte, React Native este un framework pentru JavaScript, care este un cal de bătaie simplu, dar puternic, al aplicațiilor web. Limbajul este, de asemenea, ușor de învățat, iar din 1995, când a fost introdus limbajul, au fost concepute diverse instrumente de suport.

Jocul se schimbă atunci când vine vorba de construirea aplicației Android. Cu React Native poate fi chiar un proces de copy-paste (într-o anumită măsură). Dacă aplicația a fost construită cu Swift, procesul începe de la început.

Performanță

Intuiția sugerează că aplicația nativă ar trebui să fie mai performantă decât cea bazată pe framework. Dar nu este atât de simplu.

Diverse teste văzute printre web arată, că atunci când se compară două aplicații identice care efectuează aceleași acțiuni, diferențele variază în funcție de sarcină. React Native este ușor mai bun când vine vorba de optimizarea utilizării CPU, dar tratarea efectelor grafice poate fi mai problematică pentru framework. Pentru a face față provocării, React Native permite dezvoltatorilor să înglobeze codul nativ în aplicație, livrând chimera de cod folosind diferite instrumente și active pentru a face față diferitelor sarcini.

Dar simplul fapt că diferențele nu sunt semnificative este o mare mărturie pentru React Native.

Comunitate și suport

JavaScript este în prezent unul dintre cele mai populare limbaje de programare, utilizat în dezvoltarea aplicațiilor web și a aplicațiilor mobile hibride. De fapt – rămâne cel mai popular limbaj de programare pentru al șaselea an consecutiv și este utilizat pe peste 95,1% din site-urile de internet.

Este greu de contestat poziția lui JavaScript atunci când este stabilit în 2014, chiar și atunci când este susținut de Apple.

Pe de altă parte, având o comunitate mai mică, stocul de conținut de clasă inferioară este semnificativ mai mic. Când vine vorba de a găsi ceva despre JavaScript pe internet, există nenumărate răspunsuri asociate cu o mulțime de probleme care au doar o mică legătură cu problema de rezolvat. Deci, de fapt, în ciuda comunității mari de programatori JavaScript existente, găsirea răspunsului poate fi considerată ca și cum ai căuta un ac în carul cu fân.

Situația este văzută și datorită omniprezenței și versatilității lui JavaScript. Limbajul este folosit pentru a rezolva mai multe tipuri de probleme, fie că este vorba de dezvoltare web, de dezvoltare de aplicații mobile sau chiar de machine learning – da, există framework-uri care combină rețele neuronale și javascript și sunt mult mai mult decât o joacă interesantă sau un fenomen.

Ca o opoziție strictă – problemele legate de Swift se referă la un singur tip de programare – dezvoltarea de aplicații iOS. Având în vedere acest lucru, clasele de probleme sunt înguste și presupunând că nu se caută o soluție pentru o provocare extrem de sofisticată, niciodată întâlnită până acum, depistarea soluției sau întrebarea despre aceasta în cadrul comunității poate fi semnificativ mai ușoară.

Așa, o comunitate mai mare poate da uneori mai multă confuzie decât un beneficiu real.

Stabilitate

React Native, în ciuda faptului că este alimentat de unul dintre cele mai renumite limbaje de programare, nu produce aplicații cu adevărat native. Activitatea sa se bazează pe valorificarea API-urilor și bibliotecilor interne pentru a face aplicația să funcționeze. Astfel, este vorba despre adăugarea unui intermediar între cod și platformă.

Pe de altă parte, Swift produce o aplicație nativă, care poate valorifica toate posibilitățile platformei. După cum s-a menționat mai sus, Swift se comportă mai bine atunci când are de-a face cu efecte grafice și sarcini grele de calcul. Așadar, atunci când vine vorba de „juicing-out” al platformei, Swift poate fi cea mai bună alegere.

Dar este fiecare aplicație juicing-out al iPhone? Și câți dezvoltatori Swift sunt suficient de pricepuți pentru a construi aplicația care este suficient de optimizată pentru a funcționa într-un mod mai stabil decât una React Native?

Documentație

Atât React Native cât și Swift sunt susținute și întreținute de giganți tehnologici. React Native este un proiect susținut de Facebook, iar Swift provine de la Apple. Având în vedere acest lucru, ambele proiecte sunt bine documentate și organizate. De fapt, ambele tehnologii oferă standarde de comentare a codului într-un mod care poate fi ușor convertit în documentație, reducând semnificativ timpul necesar. Mai exact:

  • JSDoc pentru Java
  • Jazza, care convertește comentariile în markdown realizate în Swift.

Dar, în afară de documentația livrată de proprietarul proiectului, există un alt aspect al livrării proiectului IT – ușurința și automatizarea documentării codului livrat. Există o afirmație (nu foarte) amuzantă cu privire la necesitatea de a scrie comentarii și de a livra o documentație fiabilă a oricărui cod scris:

Carecare cod al tău la care nu te-ai uitat timp de șase sau mai multe luni s-ar putea la fel de bine să fi fost scris de altcineva.

– Legea lui Eagleson

Deci, de fapt – indiferent cât de genial este un programator, orice cod insuficient documentat este spaghete la o primă vedere. Funcțiile automatizate de documentare – permițând atât adăugarea comentariilor, cât și exportul documentelor complete, pot fi un mare economizor de timp.

Când vine vorba de acest aspect, React Native dispune de instrumente semnificativ mai sofisticate pentru a automatiza livrarea documentației sau chiar pentru a susține discuțiile dintre programatori în timpul procesului de dezvoltare.

Așa că, având în vedere acest punct de vedere – avantajul este de partea lui React Native.

Maturitatea platformei

Ambele proiecte sunt relativ noi, Swift fiind lansat în 2014, iar React Native în 2015 (fiind un descendent direct al React.js, care a fost folosit în interiorul Facebook din 2011 și a devenit open source în 2013). Aceste tehnologii sunt emergente, însă există puține diferențe semnificative.

Swift este un nou limbaj de programare conceput pentru a fi următorul pas după Objective-C. Proiectarea unui limbaj de programare este întotdeauna un proces spinos, deoarece acesta reprezintă coloana vertebrală a fiecărui software.

React Native, pe de altă parte, este noua tehnologie alimentată de cea consacrată – JavaScript. Astfel, este mai ușor de verificat codul și de depistat problemele cu framework-ul în sine, iar depistarea bug-urilor este mai ușoară.

Costul de dezvoltare

În sfârșit, dar nu în ultimul rând, costul de dezvoltare este unul dintre aspectele cheie de luat în… ei bine… în considerare, atunci când te gândești să alegi o anumită tehnologie pentru a livra proiectul. Cele mai multe dintre provocările din acest domeniu pot fi rezolvate cu un simplu grafic care să reprezinte creșterea calității odată cu creșterea prețului. Dar acesta nu este neapărat adevărul – mai ales dacă ne gândim la dezvoltarea aplicațiilor iOS.

Conform diverselor estimări, nu există o diferență semnificativă în ceea ce privește salariile orare ale programatorilor, cu câștiguri ușor mai mari ale echipelor de dezvoltare rapidă:

React Native vs Swift chart 2

Se pare că diferența nu este atât de mare atunci când este vorba de un singur programator, însă acestea se suprapun atunci când este vorba de un proiect mare sau de numeroși programatori în cadrul echipei.

Așa că, atunci când ne gândim la costul de dezvoltare socotit în valută, React Native este ușor mai ieftin, păstrând în același timp toate beneficiile pe care le oferă.

Rezervația de talente a dezvoltatorilor

Numerele de mai sus pot fi derutante – de ce, de dragul lui Linus Torvald, programatorul care livrează aplicația doar pentru un singur sistem de operare mobil este plătit mai bine decât tipul sau fata al cărui cod poate fi folosit pe ambele platforme principale în același timp, reducând efectiv timpul și costurile de dezvoltare la jumătate.

Motivul este legat de disponibilitatea talentelor pe piață. JavaScript este unul dintre cele mai populare limbaje existente. Conform sondajului realizat de Stack Overflow, 69,8% dintre utilizatori ar alege JavaScript ca limbaj preferat, în timp ce Swift abia intră în primii cincisprezece.

Considerând acest lucru, există mulți programatori JavaScript din care se poate alege, în timp ce un număr semnificativ mai mic este competent cu Swift. Construirea echipei de programatori JavaScript este semnificativ mai ușoară.

Exemple de aplicații

Ok, deci avem în spate toată tehnico-magia și apare întrebarea crucială – care este diferența reală dintre aceste două limbaje și se poate observa o diferență semnificativă? Cel mai bun test poate fi efectuat pe două aplicații similare – dar total diferite, cum ar fi aplicația Facebook pe iOS și aplicația LinkedIn pentru iOS.

Ambele sunt aplicații de social media cu un volum mare de date, cu feed-uri de afișat, mesaje de schimbat și reclame de afișat. De asemenea, ambele livrează o cantitate semnificativă de conținut și trebuie optimizate pentru a funcționa bine și pentru a valorifica datele utilizatorului – în cele din urmă, aplicația mobilă este una dintre cele mai bune modalități de a obține datele pe care compania le colectează cu greu în alte moduri, cum ar fi localizarea sau modelele comportamentale.

Diferențele cheie se văd în două domenii cruciale – performanța și caracteristicile. Aplicația LinkedIn în Swift pare umflată în comparație cu cea de la Facebook, în ciuda cantității relativ mai mici de date de procesat și analizat. De asemenea, aplicația LinkedIn pare a fi mai puțin intuitivă, însă aceasta este o chestiune de UX și design, nu de tehnologia de programare utilizată pentru a livra produsul.

În final – se pare că tehnologia bazată pe javascript vine cu performanțe mult mai bune decât limbajul nativ atunci când vine vorba de livrarea de conținut bogat.

Summary – o reziliență a limbajului de programare

Programarea și IT-business-ul se bazează pe o paradigmă puțin schizofrenică de a construi lucruri noi cu instrumente vechi. În ciuda eforturilor giganților din domeniul tehnologiei și a limbajelor de programare emergente, văzute ca niște minuni, lucrurile învechite, uneori chiar învechite, nu părăsesc domeniul. Cel puțin nu cu ușurință.

Fortranul poate fi un exemplu de exemplu extrem de reziliență a limbajelor de programare. Lansat în 1957, cu patru ani înainte de zborul spațial al lui Iuri Gagarin și cu nouă ani înainte de aterizarea pe Lună.

Oh, și cu 28 de ani înainte de prima ediție a sistemului de operare Windows. Și totuși, Fortran este încă folosit, în special în domenii de calcul intensiv, cum ar fi previziunile meteorologice și astronomia.

Aceeași soartă pare să fie împărtășită de JavaScript, care alimentează web-ul modern în ciuda faptului că are peste 20 de ani. Cu React Native, acesta are șansa de a fi folosit în continuare ca un cal de bătaie al dispozitivelor mobile, mai ales având în vedere dinamica companiilor de dezvoltare React native.

Pregătirea aplicației cu Swift poate veni cu unele creșteri de performanță și permite dezvoltatorului să valorifice toate posibilitățile oferite de iOS. Dar, în cele mai multe cazuri, câștigul pare să nu fie chiar atât de semnificativ atunci când se compară posibilitățile React Native vs. Swift.

Nu mai vorbim de faptul, că există o lume întreagă de utilizatori Android care așteaptă o aplicație.

Dar hei, nu citiți acest articol de blog din întâmplare – dintr-un motiv oarecare, căutați comparația dintre React Native și Swift. Chiar dacă comparația noastră arată că React Native este o alegere mai bună, nu avem nicio informație despre provocarea care așteaptă afacerea ta și pe care vrei să o rezolvi cu o aplicație. Iar fundalul poate fi un schimbător de joc – uneori există detalii care fac ca alegerea unei tehnologii în detrimentul alteia să fie obligatorie, chiar dacă la prima vedere sunt similare sau dacă o alta pare a fi mai bună.

Tehnologia nu înseamnă să devii obsedat de o anumită tehnologie – este vorba de a alege cele mai bune părți și de a face soluția care să fie mai performantă decât restul pieței. Acesta este motivul pentru care ne menținem echipa de experți cu multiple talente și abilități, gata să gândească out-of-the-box. Așadar, dacă vă întrebați dacă React Native sau Swift se potrivește mai bine proiectului dvs. – poate că ar fi bine să ne trimiteți un mesaj, ca să aflăm împreună?

.