React Native i Swift jsou relativně nové technologie, které podporují vývoj mobilních aplikací pro zařízení se systémem iOS. Zatímco React Native je framework pro JavaScript, Swift je zcela nový programovací jazyk. Který z nich si tedy vybrat, když přemýšlíte o vytvoření nové aplikace pro iOS?“

Text se zabývá:

  1. Co je Swift?
  2. Co je React Native?
  3. Proč je vlastně srovnávat?
  4. Srovnání
  5. Několik myšlenek o Fortranu a historii výpočetní techniky (vážně!)

iPhone je nepochybně víc než zařízení – je to kulturní a společenský fenomén, který zpočátku poháněl revoluci chytrých telefonů zažehnutou prvním vydáním zařízení v červnu 2007. Od té doby popularita přístroje prudce vzrostla, neboť značka zaznamenala impozantní podíl 13,2 % na celosvětovém prodeji kusů chytrých telefonů. Je to obzvláště působivé, když se na to podíváme v kontextu – Apple je prémiová značka, zatímco tato čísla zahrnují i no-name nebo budgetové značky, prodávané na rozvíjejících se trzích.

Zařízení poháněná systémem iOS zaznamenávají největší popularitu v silných ekonomikách USA, Kanady, Skandinávie a Austrálie. Na konci roku 2017 vlastnilo iPhone 78 % amerických teenagerů a 80 % z nich tvrdilo, že jejich příští smartphone bude také poháněn systémem iOS.

Vzhledem k tomu není překvapením, že Apple je natolik silný, že si vynucuje vlastní frameworky a programovací jazyky – a tím je v podstatě Swift.

Building a Distributed Software Engineering Team in Europe WEBINAR

Co je Swift?

Swift je moderní, univerzální a multiparadigmatický programovací jazyk navržený společností Apple pro tvorbu jejich zařízení poháněných systémem iOS a celého následujícího ekosystému. Aplikace lze navrhovat i pro systémy macOS (pro počítače Apple), watchOS (AppleWatch), tvOS (přehrávač digitálních médií Apple TV) a možná trochu překvapivě i pro z/OS, který pohání počítače IBM Mainframe.

Jazyk je v současnosti šířen pod licencí Apache, která jej zpřístupňuje komunitě k použití. Jedná se o relativně nový projekt, který byl spuštěn v červnu 2014, tedy sedm let po uvedení prvního iPhonu na trh.

Co je React Native?

React Native je framework podporovaný Facebookem a určený k vytváření mobilních aplikací nezávislých na zařízení. Na rozdíl od nativních aplikací, které pro každou platformu používají jiný programovací jazyk, je React Native založen na JavaScriptu a umožňuje uživatelům sdílet kód mezi různými platformami, včetně Androidu, iOS a webových aplikací. Mezi aplikacemi lze sdílet až 70 % kódu, což výrazně zkracuje dobu vývoje při vývoji mobilních aplikací napříč platformami.

React Native je široce používaná a zavedená technologie, kterou využívají mimo jiné aplikace Shopify, Facebook a Walmart.

Tlačítko na obrázku Google 1200 x 635

React Native vs. Swift – proč bychom je měli porovnávat?

Mobilní aplikace se stávají nejen pouhým nástrojem k řešení problému. Stále více jde o životní styl a navázání vazby s uživatelem – pokud má nainstalovanou aplikaci, má značku neustále v kapse nebo pod rukou. Podle údajů společnosti IDC 80 % majitelů chytrých telefonů kontroluje své zařízení nejpozději 15 minut po vstávání – efektivně ještě před čištěním zubů. Vzhledem k tomu je mít aplikaci nutností.

Vytvoření aplikace nicméně představuje náklady – někdy obrovské, pokud jde o špičkový mobilní vývoj napříč platformami. Snížení nákladů bez ztráty kvality může být pro firmy obrovským přínosem. Při vývoji aplikací navíc musí společnosti řešit potřeby zařízení s operačním systémem iPhone i Android a efektivně připravit dva samostatné softwary určené k plnění stejného úkolu – nejodolnější forma vývoje mobilních aplikací pro více platforem.

Optimalizace však může být spojena s náklady, které není snadné přijmout. Vzhledem k tomu je porovnání možností React Native vs. Swift přesné.

Co vzít v úvahu?

Vývoj vynikající aplikace je souhrnem mnoha faktorů, přesto existuje několik ukazatelů, které mají největší hodnotu. Srovnání React Native vs. Swift může začít!

(Nejprve ale TL;DR verze 😉)

React Native vs. Swift graf 1

React Native vs. Swift – srovnání platforem

Uživatelské rozhraní

Swift, jakožto iOS-nativní jazyk navržený společností Apple k pohonu aplikací, samozřejmě nemá problémy se začleněním do designu iOS a využitím všech principů UX. Na druhou stranu vytváření aplikace pomocí Swiftu je vlastně kódování nativní aplikace od nuly. Každý prvek je tedy třeba počeštit zvlášť.

React Native naproti tomu používá JavaScript jako výkon za scénou a využívá interní rozhraní API pro spouštění nativních prvků. Vzhledem k tomu je uživatelské rozhraní k nerozeznání od nativního, přesto se snadněji kóduje. Navíc díky webovému vývojářskému dědictví JavaScriptu nemají aplikace problémy se zobrazením na různých velikostech obrazovky – a to může být při vytváření aplikace pro iPhone a iPad zároveň bodem úrazu.

Rychlost kódování

Swift je, no… Swift, pokud jde o kódování, protože jazyk se zbavil dědictví dříve používaného Objective-C, čímž proces usnadnil a zbavil se nevýhod. Je to pohodlný způsob, jak vytvořit aplikaci pro iOS.

Na druhé straně je React Native framework pro JavaScript, který je jednoduchým – a přitom výkonným pracovním koněm webových aplikací. Tento jazyk se také snadno učí a od roku 1995, kdy byl představen, byly navrženy různé podpůrné nástroje.

Hra se mění, pokud jde o budování aplikace pro Android. S React Native to může být i proces copy-paste (do určité míry). Pokud byla aplikace vytvořena pomocí Swiftu, začíná proces od začátku.

Výkon

Intuice napovídá, že nativní aplikace by měla být výkonnější než aplikace založená na frameworku. Ale tak jednoduché to není.

Různé testy viděné mezi webem ukazují, že při porovnání dvou stejných aplikací provádějících stejné činnosti se rozdíly liší od zadání. React Native je o něco lepší, pokud jde o optimalizaci využití procesoru, ale řešení grafických efektů může být pro framework problematičtější. Aby se s touto výzvou vypořádal, umožňuje React Native vývojářům vložit nativní kód do aplikace a dodat chiméru kódu pomocí různých nástrojů a prostředků pro řešení různých úloh.

Samotný fakt, že rozdíly nejsou výrazné, však svědčí pro React Native.

Komunita a podpora

JavaScript je v současnosti jedním z nejoblíbenějších programovacích jazyků, které se používají při vývoji webových a hybridních mobilních aplikací. Ve skutečnosti – již šestým rokem po sobě zůstává nejoblíbenějším programovacím jazykem a používá se na více než 95,1 % internetových stránek.

Je těžké zpochybnit pozici JavaScriptu, když se etabloval v roce 2014, a to i za podpory společnosti Apple.

Na druhou stranu, díky menší komunitě je zásoba nekvalitního obsahu výrazně nižší. Pokud jde o hledání čehokoli o JavaScriptu na internetu, existuje nespočet odpovědí spojených se spoustou problémů, které s řešeným problémem souvisejí jen nepatrně. Takže ve skutečnosti, navzdory velké komunitě programátorů JavaScriptu, lze hledání odpovědi považovat za hledání jehly v kupce sena.

Tato situace je vidět i díky všudypřítomnosti a univerzálnosti jazyka JavaScript. Tento jazyk se používá k řešení mnoha typů problémů, ať už jde o vývoj webových stránek, mobilních aplikací, nebo dokonce strojového učení – ano, existují frameworky, které kombinují neuronové sítě a javascript a jsou mnohem víc než zajímavou hříčkou nebo fenoménem.

Jako striktní opozice – problémy spojené se Swiftem se týkají pouze jednoho typu programování – vývoje aplikací pro iOS. Vzhledem k tomu jsou třídy problémů úzké a za předpokladu, že člověk nehledá řešení nějaké extrémně sofistikované výzvy, se kterou se nikdy předtím nesetkal, může být spatření řešení nebo dotaz na něj v komunitě podstatně jednodušší.

Větší komunita tak někdy může přinést spíše zmatek než skutečný přínos.

Stabilita

React Native, přestože je poháněn jedním z nejznámějších programovacích jazyků, nevytváří skutečně nativní aplikace. Její práce je založena na využívání interních rozhraní API a knihoven, aby aplikace fungovala. Jde tedy o přidání prostředníka mezi kód a platformu.

Na druhou stranu Swift vytváří nativní aplikaci, která může využívat všechny možnosti platformy. Jak bylo uvedeno výše, Swift si vede lépe při práci s grafickými efekty a výpočetně náročnými úlohami. Pokud tedy jde o odšťavnění platformy, může být Swift lepší volbou.

Je však každá aplikace odšťavňující iPhone? A kolik vývojářů ve Swiftu je dostatečně zkušených, aby dokázali vytvořit aplikaci, která bude dostatečně optimalizovaná a bude fungovat stabilněji než aplikace React Native?

Dokumentace

Obě aplikace, React Native i Swift, jsou podporovány a udržovány technologickými giganty. React Native je projekt podporovaný společností Facebook a Swift pochází od společnosti Apple. Vzhledem k tomu jsou oba projekty dobře zdokumentované a organizované. Obě technologie totiž přinášejí standardy komentování kódu způsobem, který lze snadno převést do dokumentace, což výrazně snižuje potřebný čas. Přesněji řečeno:

  • JSDoc for Java
  • Jazza, který převádí komentáře v markdown provedené ve Swiftu.

Kromě dokumentace dodané vlastníkem projektu je tu však ještě jeden aspekt dodání IT projektu – snadnost a automatizace dokumentace dodaného kódu. Existuje (ne zcela) humorné tvrzení týkající se nutnosti psát komentáře a dodávat spolehlivou dokumentaci jakéhokoli napsaného kódu:

Každý vlastní kód, na který jste se šest nebo více měsíců nepodívali, mohl stejně dobře napsat někdo jiný.

– Eaglesonův zákon

Takže vlastně – ať je programátor jakkoli geniální, každý nedostatečně zdokumentovaný kód je na první pohled špageta. Automatizované funkce dokumentace – jak umožňující přidávání komentářů, tak export kompletních dokumentů, mohou být obrovskou úsporou času.

Pokud jde o tento aspekt, React Native má podstatně propracovanější nástroje pro automatizaci dodávání dokumentace nebo dokonce podporu diskuse mezi programátory v průběhu vývoje.

Přihlédneme-li tedy k tomuto úhlu pohledu – výhoda je na straně React Native.

Vyzrálost platformy

Oba projekty jsou relativně nové – Swift byl spuštěn v roce 2014 a React Native v roce 2015 (je přímým potomkem React.js, který se uvnitř Facebooku používá od roku 2011 a v roce 2013 se stal open source). Jedná se o nově vznikající technologie, přesto mezi nimi není mnoho podstatných rozdílů.

Swift je nový programovací jazyk, který má být dalším krokem po Objective-C. Je to nový programovací jazyk. Návrh programovacího jazyka je vždy trnitý proces, protože je páteří každého softwaru.

React Native je naproti tomu nová technologie poháněná tou zavedenou – JavaScriptem. Je tedy snazší kontrolovat kód a odhalovat problémy se samotným frameworkem a odhalování chyb je jednodušší.

Náklady na vývoj

V neposlední řadě jsou náklady na vývoj jedním z klíčových aspektů, které je třeba zohlednit… no… zohlednit, když přemýšlíte o výběru konkrétní technologie pro dodání projektu. Většinu problémů v této oblasti lze vyřešit jednoduchým grafem znázorňujícím rostoucí kvalitu s rostoucí cenou. Ale to nemusí být nutně pravda – zejména s ohledem na vývoj aplikací pro iOS.

Podle různých odhadů není výrazný rozdíl v hodinových mzdách programátorů s mírně vyššími výdělky swiftových vývojových týmů:

React Native vs Swift graf 2

Zřejmě není rozdíl tak velký, pokud jde o jednoho kodéra, přesto se střádají, pokud jde o velký projekt nebo mnoho kodérů v týmu.

Přemýšlíme-li tedy o nákladech na vývoj počítaných v tvrdé měně, je React Native o něco levnější při zachování všech výhod, které přináší.

Pole talentovaných vývojářů

Výše uvedená čísla mohou být matoucí – proč je proboha u Linuse Torvalda kodér, který dodává aplikaci pouze pro jeden mobilní operační systém, placen lépe než člověk nebo dívka, jejichž kód lze použít na obou předních platformách současně, což efektivně zkrátí dobu vývoje a náklady na polovinu.

Důvod souvisí s dostupností talentů na trhu. JavaScript je jedním z nejoblíbenějších jazyků. Podle průzkumu provedeného společností Stack Overflow by si 69,8 % uživatelů vybralo jako jazyk JavaScript, zatímco Swift se sotva vejde do první patnáctky.

Vzhledem k tomu si venku může vybírat mnoho programátorů v JavaScriptu, zatímco Swift jich ovládá podstatně méně. Vybudovat tým programátorů v JavaScriptu je podstatně jednodušší.

Příklady aplikací

Ok, takže máme veškerou technomagii za sebou a přichází zásadní otázka – jaký je skutečný rozdíl mezi těmito dvěma jazyky a lze poznat podstatný rozdíl? Nejlepší test lze provést na dvou podobných – a přesto naprosto odlišných aplikacích, jako je aplikace Facebook v systému iOS a aplikace LinkedIn pro systém iOS.

Oboje jsou datově náročné aplikace sociálních médií s kanálem k zobrazení, zprávami k výměně a reklamami k zobrazení. Obě také poskytují značné množství obsahu a musí být optimalizovány tak, aby dobře fungovaly a využívaly data uživatelů – nakonec je mobilní aplikace jedním z nejlepších způsobů, jak získat data, která společnost obtížně shromažďuje jinými způsoby, jako je lokalizace nebo vzorce chování.

Klíčové rozdíly jsou patrné ve dvou zásadních oblastech – výkon a funkce. Aplikace LinkedIn ve Swiftu se ve srovnání s aplikací Facebooku zdá být nafouklá, a to i přes relativně menší množství dat ke zpracování a analýze. Také aplikace LinkedIn se zdá být méně intuitivní, nicméně je to záležitost UX a designu, nikoliv programovací technologie použité k dodání produktu.

Nakonec – zdá se, že technologie založená na javascriptu přichází s mnohem lepším výkonem než nativní jazyk, pokud jde o poskytování bohatého obsahu.

Shrnutí – odolnost programovacího jazyka

Programování a IT-business jsou založeny na trochu schizofrenním paradigmatu vytváření nových věcí pomocí starých nástrojů. Navzdory snahám technologických gigantů a novým programovacím jazykům, které jsou považovány za zázračná díla, zastaralé, někdy dokonce zastaralé věci neopouštějí pole. Alespoň ne snadno.

Fortran může být extrémním příkladem odolnosti programovacího jazyka. Byl spuštěn v roce 1957, čtyři roky před kosmickým letem Jurije Gagarina a devět let před přistáním na Měsíci.

Aha, a 28 let před prvním vydáním operačního systému Windows. A přesto se Fortran stále používá, zejména v náročných výpočetních oborech, jako je předpověď počasí a astronomie.

Stejný osud zřejmě čeká i JavaScript, který pohání moderní web, přestože je starý více než 20 let. S React Native má šanci na další využití jako pracovní kůň mobilních zařízení, zejména s ohledem na dynamiku firem zabývajících se vývojem React Native.

Příprava aplikace ve Swiftu může přinést určité zvýšení výkonu a umožní vývojáři využít všech možností, které poskytuje iOS. Ve většině případů se však při porovnání možností React Native vs. Swift zdá, že zisk není až tak významný.

Nehledě na to, že na aplikaci pro Android čeká celý svět uživatelů.

Ale hele, nečtete tento příspěvek na blogu náhodou – z nějakého důvodu jste hledali srovnání React Native a Swift. I když z našeho srovnání vyplývá, že React Native je lepší volbou, nemáme žádné informace o výzvě, která čeká na vaši firmu, kterou chcete pomocí aplikace vyřešit. A pozadí může změnit pravidla hry – někdy existují detaily, kvůli kterým je výběr jedné technologie na úkor druhé nutností, i když jsou si na první pohled podobné nebo se jiná zdá být lepší.

Technologie není o tom, abyste byli posedlí určitou technologií – je to o tom, abyste vybrali ty nejlepší kousky a vytvořili řešení, které předčí zbytek trhu. Proto udržujeme náš tým všestranně nadaných a kvalifikovaných odborníků připravených přemýšlet out-of-the-box. Pokud tedy přemýšlíte, zda se pro váš projekt hodí lépe React Native nebo Swift – možná nám napište, abychom to společně zjistili?