Smartfóny naďalej získavajú stále viac priestoru pod slnkom nielen ako nástroj na konzumáciu fotografií mačiek a xxx videí, ale aj ako pracovný nástroj. Preto dopyt po mobilnom vývoji rastie. Všeobecne sa uznáva, že pravdivé a cool sú Objective-C/Swift pre iOS a Java/Kotlin pre Android. Niet pochýb, pravdivé a skvelé, ale existuje veľké množstvo reálnych scenárov, v ktorých je použitie medziplatformových rámcov výhodnejšie v porovnaní s natívnymi nástrojmi.

Niektorí vývojári očakávajú, že multiplatformové frameworky vyriešia všetky ich životné problémy, iní ich vnímajú nepriateľsky. Oba „bojujúce tábory“ majú svoje mylné predstavy spôsobené nepochopením toho, ako a čo funguje. To prilieva olej do ohňa, pretože namiesto technických argumentov sa používajú emócie.

Aj medzi vývojármi, najmä začiatočníkmi, existuje veľa mýtov o multiplatformových mobilných frameworkoch. V našom článku budeme analyzovať najobľúbenejšie z nich. Najprv sa však pozrime na mobilný vývoj očami firmy, ktorá dáva peniaze za celý IT blackjack.

Prečo potrebujeme multiplatformové nástroje?

Historicky na trhu počítačov vždy existovala konkurencia a každý výrobca poskytoval optimálnu sadu takzvaných natívnych (natívnych) nástrojov na vývoj aplikácií pre svoje operačné systémy a zariadenia.

Natívne nástroje = poskytované vlastníkom ekosystému.

Všetky ostatné znaky „nativity“ sú SEKUNDÁRNE – správanie a rozhranie aplikácií, prístup k funkciám OS, výkon a pod.

Navyše sa takmer vždy ukázalo, že natívne nástroje sú navzájom nekompatibilné nielen na úrovni vývojových jazykov, prijatých konvencií a architektúr, ale aj na úrovni mechanizmov práce s operačným systémom a knižnicami. Výsledkom bolo, že na implementáciu rovnakých algoritmov a rozhraní bolo potrebné napísať aplikáciu pre niekoľko prostredí v rôznych programovacích jazykoch a potom ju udržiavať na základe „jeden príkaz na platformu“. Zároveň možnosti a vzhľad aplikácií na rôzne platformy ach takmer vždy rovnaké na 90%. Pre zaujímavosť si porovnajte implementáciu vašich obľúbených programov pre iOS a Android.

Po druhé dôležitý bod- dostupnosť potrebných vedomostí a skúseností v rámci tímu: ak nie sú, bude to nejaký čas trvať, kým sa to naučíte.

Na vyriešenie oboch týchto problémov sa už dlho na trhu objavili multiplatformové vývojové nástroje (nielen mobilné), ktoré ponúkajú:

  • maximalizovať spoločnú kódovú základňu v jedinom programovacom jazyku, aby sa produkt ľahšie vyvíjal a udržiaval;
  • využívať existujúce kompetencie a špecialistov na implementáciu aplikácií na nových platformách.

Keďže v súčasnosti existuje veľa programovacích jazykov (a prostredí) (a špecialistov, ktorí tieto jazyky poznajú), existuje veľké množstvo nástrojov na vývoj naprieč platformami. Ako príklad sa zameriame na populárne v našej oblasti PhoneGap, Xamarin, React Native a Qt.


Teraz môžeme hovoriť o mýtoch.

Mýtus 1. Mágia

Najčastejším mýtom, ktorý prenasleduje mysle začínajúcich vývojárov, je viera v super-algoritmy (a superprogramátorov, ktorí ich vytvorili), ktoré magicky menia multiplatformové aplikácie na natívne. Niečo v štýle „konvertovanie kódu JavaScript na Swift a následné skompilovanie aplikácie Swift“. Tento mýtus podporujú samotní vývojári multiplatformových nástrojov, ktorí ako výsledok sľubujú vytvorenie „natívnych aplikácií“. A nejde o to, že by tu bol niekto prefíkaný, ale bohatá fantázia a nepochopenie základných mechanizmov občas privedie vývojárov k úvahám o šamanských trikoch.

Hlavným princípom multiplatformových riešení je rozdelenie kódu na dve časti:



Na prepojenie „natívneho“ sveta a „crossplatformového“ sveta je potrebné použiť špeciál Most, je to on, kto určuje možnosti a obmedzenia multiplatformových rámcov.

Pri použití mosta sa výkon vždy znižuje konverziou údajov medzi „svetmi“, ako aj konverziou volaní API a knižníc.

Všetky multiplatformové aplikácie teda musia mať natívnu časť, inak ich operačný systém jednoducho nebude môcť spustiť. Poďme sa teda bližšie pozrieť na to, aké systémové API a mechanizmy poskytujú samotné iOS, Android a Windows. Prejdime k ďalšiemu mýtu.

Mýtus 2. Nie natívny!

Máme teda multiplatformovú časť aplikácie, ktorá žije vo virtuálnom prostredí a interaguje s operačným systémom prostredníctvom rámcovej infraštruktúry a mosta.

Všetky operačné systémy: iOS, Android a Windows UWP – poskytujú prístup k nasledujúcim podsystémom (sadám systémových API):

  • WebView (webový prehliadač zabudovaný v aplikácii) sa používa v hybridných aplikáciách založených na PhoneGap a funguje ako de facto lokálny beh webových stránok;
  • JavaScript engine sa používa v React Native a jeho náprotivkoch na rýchle spustenie JS kódu a výmenu dát medzi Native a JS;
  • OpenGL ES (alebo DirectX) sa používa v herných motoroch a aplikáciách založených na Qt/QML alebo podobných na vykreslenie rozhrania;
  • Subsystém používateľského rozhrania je zodpovedný za natívne používateľské rozhranie aplikácie, ktoré je relevantné pre React Native a Xamarin.


Multiplatformové aplikácie majú natívnu časť a rovnaký plný prístup k systémovým API ako „natívne“ aplikácie. Rozdiel je v tom, že volanie systémovej metódy prechádza cez most a rámcovú infraštruktúru:

webview- aplikácia žije vo svojom webovom prehliadači, podobne ako jednostránkový web. Žiadny prístup k natívnym ovládacím prvkom (tlačidlá, zoznamy atď.), všetko je založené na HTML/CSS/JavaScript. Na druhej strane, webový vývojár sa bude cítiť ako kačica k vode.

JavaScript motory sa stal populárnym relatívne nedávno, pretože podobný mechanizmus bol pridaný do iOS až vo verzii 7.0. Z funkcií stojí za zváženie potreba serializácie zložitých dátových štruktúr prenášaných medzi prostrediami JavaScript a Native do JSON. Ak stručne popíšeme takúto triedu riešení, tak v prostredí JavaScriptu sa vykoná JS kód, ktorý riadi natívnu aplikáciu.

OpenGL ES a DirectX sú nízkoúrovňové podsystémy a používajú sa na kreslenie používateľského rozhrania v hrách a napríklad Qt/QML. To znamená, že pri použití OpenGL / DirectX vývojári sami kreslia ovládacie prvky a animácie, ktoré môžu byť iba podobné natívnym. Na druhej strane ide o nízkoúrovňový subsystém s veľmi vysokým výkonom, a preto sa používa aj v multiplatformových herných engine.

Všetky multiplatformové aplikácie majú natívnu časť, a teda potenciálne rovnaký úplný prístup k systémovým API ako tie „natívne“. Tiež multiplatformové aplikácie sú zostavené a zabalené pomocou „natívnych“ nástrojov do „natívnych“ inštalačných balíkov. Kľúčovou otázkou je, ako je organizovaná interakcia medzi multiplatformovou časťou a natívnou časťou. Napríklad vo WebView alebo pomocou Open GL ES / DirectX neexistuje spôsob, ako vytvoriť používateľské rozhranie s úplne natívnym vzhľadom, ale je tu plný prístup k GPS, upozorneniam Push a ďalším funkciám. A kód JavaScript alebo C# môže celkom voľne ovládať natívnu aplikáciu a jej správanie, čím poskytuje úplne natívny vzhľad.

Aby som to zhrnul - áno, "nenatívne" z hľadiska použitých vývojových nástrojov (nie od Apple, Google). Aplikácia však môže byť úplne natívna z hľadiska prístupu k systémovým rozhraniam API a môže poskytnúť úplne natívny vzhľad a dojem. A prejdeme k ďalšiemu mýtu.

Mýtus 3. Barla o barli

Tu treba chápať, že natívne API sa štandardne nepovažujú za barličky (hoci sú tu rôzne názory), takže celé rozhorčenie smeruje k multiplatformnej časti. Je zrejmé, že exekučné prostredie (napríklad WebView, JavaScript engine alebo Mono) je tiež ťažké nazvať barličkou - zrelé zrelé riešenia s dlhou históriou.

Zdá sa, že barličkou je, ako sa multiplatformová časť integruje s natívnou. Aby sme lepšie pochopili, ako fungujú rôzne rámce, použijeme príklad PhoneGap, Xamarin, Qt a React Native, aby sme sa pozreli na tie mechanizmy operačného systému, ktoré sa používajú na prepojenie medziplatformových a natívnych častí.

Začneme s PhoneGapom. Nižšie je uvedená architektúra najvyššej úrovne aplikácie založenej na tomto rámci.



Aplikácia PhoneGap je v skutočnosti natívna aplikácia, ktorá zobrazuje WebView ako jediný ovládací prvok používateľského rozhrania. Prostredníctvom neho prebieha interakcia s rodnou časťou. Všetky štandardné WebViews v iOS, Android a Windows UWP podporujú možnosť pridávať natívne obslužné programy pre vlastnosti a metódy JS. JS kód zároveň žije vo svojom izolovanom prostredí a nevie nič o natívnej časti – jednoducho si vytiahne potrebné JS metódy alebo zmení potrebné JS vlastnosti. Všetko je vo vnútri štandardného webového DOM, ktorý jednoducho pridáva nové prvky súvisiace s natívnou implementáciou.



Pri vytváraní aplikácií na React Native bude vývojár takmer vždy musieť implementovať natívnu časť v Objective-C, Java alebo C # a samotná správa natívnej aplikácie bude pochádzať z JavaScriptu. V skutočnosti je JavaScript engine prvkom WebView, ktorý je dostupný samostatne. Interakcia prechádza rovnakým JS mostom ako v prípade PhoneGap. V React Native však kód JS nespravuje strom DOM webu, ale natívnu aplikáciu.

Upozorňujeme, že kvôli obmedzeniam systému iOS (neexistuje spôsob implementácie JIT) sa kód JavaScript interpretuje za behu a nie je kompilovaný. Vo všeobecnosti to výrazne neovplyvňuje výkon skutočné aplikácie ale stojí za to si to pripomenúť.

Teraz zvážte klasické Xamarin.iOS a Xamarin.Android, pretože Xamarin.Forms (podpora Windows UWP) je ich doplnkom.



Xamarin používa knižnicu Mono na interakciu s cieľovým operačným systémom, čo umožňuje vyvolať natívny kód pomocou mechanizmu P/Invoke. Používa sa aj na komunikáciu s natívnymi API v iOS/Androide. To znamená, že obaly v C# sú vytvorené pre všetky verejné natívne metódy API, ktoré zase volajú systémové API. Všetky systémové API teda môžu byť prístupné z aplikácie Xamarin.

A nakoniec sa pozrime na Qt, keďže o ňom je veľa otázok od skúsených vývojárov.



Qt je „vec sama o sebe“, má to plusy aj obmedzenia. Knižnice Qt sa jednoducho pripájajú k systémovým API C++, ktoré sa nachádzajú na všetkých operačných systémoch. Na kreslenie používateľského rozhrania sa používajú nízkoúrovňové mechanizmy, ale vlastný grafický engine, ktorý podporuje natívny štýl. Zároveň v systéme Android musíte pristupovať k Java API cez špeciálny most (JNI bridge) a pre Windows UWP použiť prevodník hovorov Open GL ES na DirectX, pretože Open GL nie je k dispozícii pre UWP.

Aby som to zhrnul: všetky multiplatformové rámce využívajú štandardné natívne funkcie operačných systémov, sú vyspelé, vytvorené skúsenými tímami a komunitou open source s podporou gigantov IT priemyslu. A nakoniec je čas na „najsilnejší“ argument.

Mýtus 4. Pomaly

Dôležitým tromfom, ktorý ľudia radi využívajú v sporoch o medziplatformové frameworky, je nízky výkon. Opäť podľa toho, s čím porovnávať a v akých papagájoch počítať.

Pripomeňme, že vlastnosťou multiplatformových aplikácií je paralelná existencia dvoch svetov spojených mostom:

  • PhoneGap: HTML/JS a natívna Java / Objective-C / C#;
  • Reagovať Native: JS a Native Java / Objective-C / C#;
  • Xamarin: Mono a natívna Java / Objective-C;
  • Qt: C++ a natívna Java/Objective-C.

Pri porovnávaní výkonu je teda potrebné brať do úvahy rýchlosť práce:

  • multiplatformová časť;
  • rodná časť;
  • Most.

Ak napríklad zadáte do vyhľadávača, reagujte natívny verzus rýchly výkon, môžete vidieť mnoho rôznych testov a mnohé z nich poznamenávajú, že výkon prudko klesá pri aktívnom používaní mosta vrátane aktívnej manipulácie s používateľským rozhraním z multiplatformového kódu. Pre Xamarin vyzerá situácia rovnako – multiplatformová časť je veľmi rýchla a v spracovaní dát porovnateľná s tou natívnou, pri použití mosta však môže klesnúť výkon. Qt vo všeobecnosti funguje na úrovni C++, ktorá je sama o sebe rýchla. Ak vezmeme do úvahy riešenia založené na PhoneGap, potom tu bude výkon veľmi závislý od WebView, ale aj tak by ste nemali aktívne meniť používateľské rozhranie v kóde JavaScript alebo vykonávať vedecké výpočty.

pomaly? Áno, poklesy výkonu sú možné kvôli nešikovnej interakcii s operačným systémom cez most. Samotné multiplatformové svety sú však rovnako rýchle ako tie natívne.

Mobilné aplikácie sa stali nenahraditeľným spoločníkom našich životov. S ich pomocou sa môžeme nielen zabávať a zjednodušiť si život, nakupovať či objednávať niektoré služby online, ale aj propagovať naše podnikanie, zvyšovať zákaznícku základňu a následne znásobovať zisky. A ak nikto nemôže pochybovať o potrebe vytvoriť aplikáciu pre svoje podnikanie, potom s výberom typu mobilnej aplikácie môžu nastať určité ťažkosti.

Všetky moderné aplikácie pre mobilné zariadenia možno rozdeliť na natívne a multiplatformové, pričom každá z týchto dvoch skupín má obe svoje silné stránky ako aj jeho nedostatky.

Natívne aplikácie sú aplikácie vyvinuté špeciálne pre konkrétnu platformu v príslušnom programovacom jazyku. Takže pri vytváraní aplikácie pre Android sa používa Java a pre IOS aplikácie Objective-c alebo Swift. Pri vytváraní takýchto projektov špecialisti zohľadňujú všetky funkcie platforiem, pričom osobitnú pozornosť venujú dizajnu UI / UX, požiadavkám / odporúčaniam vývojárov operačných systémov, ako aj najnovším trendom v mobilnom priemysle. Jeden špecialista nebude schopný úplne ovládať všetky vyššie uvedené jazyky, preto na vývoj jedného natívneho produktu pre rôzne platformy je potrebné prepojiť rôznych vývojárov, čo predstavuje dodatočné náklady a čas vývoja bude pôsobivý. Aplikácie sa ale zároveň „vybrúsia“ pre konkrétnu platformu, získajú prístup k interným zdrojom a funkciám zariadenia a budú fungovať čo najefektívnejšie.

Napriek značnému zoznamu výhod natívneho vývoja zákazníci nie vždy chcú tráviť čas a peniaze na ich vývoj a spájajú niekoľko majstrov s procesom tvorby. Najlepšou možnosťou v takýchto prípadoch je vývoj naprieč platformami, ktorý umožňuje vytvárať aplikácie pre akúkoľvek platformu pomocou štandardných webových technológií. V tomto prípade môže vývoj vykonávať jedna osoba, ktorá má potrebné znalosti a skúsenosti s HTML5, JavaScript a CSS3. Vývoj naprieč platformami je možné skompilovať do súboru .apk pre Android a súboru .ipa pre IOS. Na základe jedného vývoja tak môžete získať dve aplikácie pre populárne operačné systémy, pričom na to utratíte menej času a peňazí. Takýto vývoj má však aj svoje nevýhody, preto je nanajvýš žiaduce pristupovať ku každému konkrétnemu prípadu individuálne a zvoliť najvhodnejšiu možnosť – natívny alebo multiplatformový vývoj.

Klientske a serverové časti aplikácie

Väčšina serióznych aplikácií má svoju vlastnú stranu klienta, ktorá sa často nazýva frontend, a stranu servera, backend. Frontend je zodpovedný za to, čo vidíte na obrazovke svojho mobilného zariadenia, teda za celú vizuálnu reprezentáciu aplikácie, vrátane dizajnu, veľkosti a umiestnenia okien, menu, tlačidiel, šípok a akýchkoľvek ďalších prvkov. Frontend je tiež zodpovedný za reakciu aplikácie na určité akcie používateľa zamerané na prechod do rôznych sekcií aplikácie, vyvolanie nových ponúk atď.

Backend je serverová časť aplikácie a nachádza sa na vzdialenom serveri, ktorý možno umiestniť kdekoľvek a ovládať pomocou širokej škály softvérové ​​nástroje. Vzťah medzi klientskou a serverovou časťou sa uskutočňuje prostredníctvom API (aplikačné programovacie rozhranie). Inými slovami, API je akýmsi prostredníkom medzi frontendom a backendom, ktorý prenáša požiadavky zo strany klienta na server a vracia údaje potrebné pre používateľa.

Vývoj frontendu

Klientska časť aplikácie je mimoriadne dôležitá, pretože sa s ňou bude zaoberať samotný používateľ a jeho všeobecná predstava o aplikácii bude závisieť od pohodlia frontendu. Dá sa vyvíjať ručne, ale na to sa musíte dobre orientovať v HTML5, CSS3 a java-scripte a pomocou takzvaných rámcov. V prvom prípade sa často používa vývojové prostredie Apache Cordova, ktoré je bežne známe aj ako PhoneGap. Pomocou tohto rámca môžete vytvárať aplikácie pre akúkoľvek platformu pomocou webových technológií, ktoré Cordova prevádza na kód zrozumiteľný pre konkrétnu platformu. Cordova otvára prakticky neobmedzené možnosti pre vývojárov webu, ktorí sa nemusia učiť Objective-C alebo Swift, Java alebo Kotlin na vytváranie aplikácií pre konkrétne operačné systémy.

Zatiaľ čo Cordova nemá žiadne obmedzenia v používateľskom rozhraní a logike, rámce ponúkajú hotové šablónové riešenia. Na jednej strane to výrazne urýchľuje a zjednodušuje proces vývoja, pretože špecialista môže používať hotové tlačidlá, zoznamy, vstupné polia, karty a ďalšie prvky používateľského rozhrania. Na druhej strane špecialista môže použiť na vývoj iba tie nástroje a prvky, ktoré sú dostupné vo vybranom rámci. Najpopulárnejší z nich je Ionic, ktorý vám umožňuje vytvárať multiplatformové aplikácie pre každý vkus. Tento rámec má veľkú vstavanú zbierku štandardné prvky, ktoré vizuálne napodobňujú natívne aplikácie, no ich dizajn je možné v prípade potreby zmeniť. Zároveň môže vývojár pripojiť mnoho doplnkových pluginov, ktoré rozširujú možnosti iontového frameworku a projekt vytvorený na tomto frameworku je možné spustiť priamo v okne prehliadača a vyhodnotiť, ako bude vyzerať a fungovať. vytváraná aplikácia bez potreby emulátora alebo inštalácie na smartfóne.

Vývoj backendu

Zatiaľ čo na strane klienta sú zapojení dizajnéri a vývojári so znalosťou HTML, CSS, JS a frameworkov, na backende sa podieľajú programátori iného profilu. Na konfiguráciu serverov je možné použiť rôzne programovacie jazyky a nástroje, hlavnou vecou je správne nakonfigurovať ich prácu a interakciu s klientskou časťou. Tu je potrebné použiť vhodné systémy správa databáz (databázy). Môže to byť tradičná MySQL, Redis, PostgreSQL alebo akákoľvek iná databáza (napríklad MongoDB), ktorá je vhodná na implementáciu konkrétneho projektu a v ktorej sa back-end vývojár dobre orientuje. Vývojári môžu použiť PHP, NodeJS, C#, Ruby, Python, Java a ďalšie programovacie jazyky na vytvorenie serverovej strany aplikácie.

Špecialisti mobilného štúdia KitApp pristupujú k problematike vývoja frontendových a backendových častí komplexne a maximálne zodpovedne. Naši vývojári pre vás vytvoria multiplatformovú aplikáciu akejkoľvek zložitosti a smeru čo najrýchlejšie a najefektívnejšie! Kontaktujte nás a naši špecialisti vám rýchlo poradia so všetkými vašimi otázkami!

Multiplatformové aplikácie – byť či nebyť? Otázka nie je jednoduchá, keďže každý podnik má svoje vlastné ciele a požiadavky na mobilné aplikácie. Dnes však určite zistíme, ktorý vývoj je pre vás ten pravý.

Čo sú multiplatformové aplikácie?

Multiplatformové aplikácie sú aplikácie, ktoré sa vyvíjajú a následne bežia súčasne na Androide aj iOS. Podstatou vývoja je zdroj aplikácia je preložená do natívneho, teda zrozumiteľného pre konkrétne mobilné zariadenie. Výsledkom je, že program môže interagovať s operačným systémom, ktorý je v ňom nainštalovaný.

Pripomeňme si: natívne aplikácie, na rozdiel od multiplatformových, sú napísané pre konkrétny OS.

Výhody multiplatformového vývoja

  • rozšírenie používateľskej základne vďaka vzhľadu aplikácie súčasne v niekoľkých obchodoch;
  • jediný zdrojový kód vám ušetrí najímanie viacerých vývojárov pre každú platformu;
  • 75 % kódovej základne multiplatformovej aplikácie je možné opätovne použiť a prispôsobiť ju novým projektom.

Nevýhody multiplatformového vývoja

1. Vysoká závislosť od mobilného zariadenia

Multiplatformové aplikácie zvyčajne nefungujú offline. Preto sú ich možnosti veľmi závislé od toho, či má používateľ stabilné internetové pripojenie. Verzia operačný systém a model zariadenia sú tiež dôležité. Je takmer zaručené, že multiplatformová aplikácia zníži výkon zariadenia staršieho ako jeden až dva roky. Zatiaľ čo natívna aplikácia bude fungovať stabilne aj na starom gadgete so zastaraným firmvérom. Ak teda nechcete, aby vaši zákazníci čítali nahnevané recenzie o tom, ako vaša aplikácia konečne „dokončila“ niečí smartfón, zvoľte natívny vývoj.

2. Nepriateľské používateľské rozhranie

Používatelia sú tak závislí vzhľad a funkčnosť ich gadgetov, že od aplikácií nainštalovaných na nich očakávajú maximálnu odozvu. Chcú mať istotu, že každé tlačidlo je na svojom správnom mieste, že sa stránka posúva rýchlosťou, ktorá je pre nich optimálna, a že po každej akcii, ktorú urobia, nasleduje okamžitá reakcia. Multiplatformové aplikácie sa zvyčajne ťažko prispôsobujú zariadeniu a nemôžu sa pochváliť vysokorýchlostným výkonom.

Problém je v tom, že neexistujú žiadne usmernenia pre vývoj naprieč platformami – vývojové štandardy od tvorcov OS. Preto multiplatformová aplikácia vytvorená „pre Android“ nebude vhodná pre používateľa iOS a naopak. Môžete samozrejme vytvoriť samostatné návrhy pre každú platformu, ale z hľadiska nákladov na prácu sa to bude rovnať vytvoreniu dvoch rôznych aplikácií, aj keď v rovnakom jazyku.

3. Boj o prvenstvo medzi vývojovými nástrojmi

Na trhu multiplatformových vývojových riešení je konkurencia každým dňom tvrdšia. Zatiaľ sú medzi vývojármi najobľúbenejšie React Native a Xamarin, ale napríklad Vue Native ich môže dobre predbehnúť. V tomto prípade ex-lídri závodu stratia najdôležitejšiu výhodu - podporu operačného kódu. A to sa môže stať s akýmkoľvek multiplatformovým nástrojom.

Natívny vývoj sa takéhoto problému nebojí. Zavádzanie nových nástrojov je postupné a znalosť viacerých programovacích jazykov, ktorá je pre úzkeho špecialistu povinná, mu umožní rýchlo sa vysporiadať so všetkými novinkami. Okrem toho okolo každého operačného systému existujú obrovské profesionálne komunity, v dôsledku čoho sa všetky vzniknuté ťažkosti riešia hľadaním podobného problému na fórach, kde sú tisíce ľudí pripravených navrhnúť a pomôcť pri riešení.

Ktorá aplikácia je vhodná pre vaše podnikanie?

Pred zodpovedaním tejto otázky je mimoriadne dôležité analyzovať svoje podnikanie. Spotrebiteľské segmenty, hodnota časových a finančných zdrojov, požadovaná hĺbka integrácie aplikácií s používateľskými zariadeniami plus jasne definované dlhodobé ciele – minimum, od ktorého bude závisieť váš výber. Uľahčíme si to však, ak na príslušné otázky odpoviete hneď teraz.

1. Čo používa vaše publikum?

Ak viete, že pomer počtu používateľov iOS a Android medzi vašimi klientmi sa blíži k 50/50, zvoľte natívny vývoj. Preukážete tým, že rovnako rešpektujete potreby všetkých svojich zákazníkov bez ohľadu na úroveň ich príjmu.

Súvislosť medzi výberom mobilného zariadenia a úrovňou solventnosti opäť potvrdila App Annie. Výsledkom štúdie počtu stiahnutí a predajov mobilných aplikácií v Google Play a Obchod s aplikaciami v prvom štvrťroku 2018 sa ukázalo, že používatelia Android smartfónov si stiahli o 135 % viac aplikácií ako návštevníci iOS obchodu. App Store zároveň priniesol svojim majiteľom o 85 % vyššie príjmy ako Google Play.

Cesta k úspechu je zrejmá: hrať na dvoch ihriskách naraz. Presnejšie dve predajne. Stačí si spočítať, v ktorom z nich by sa aplikácia mala objaviť ako prvá. Samozrejme, ak simultánne vydanie nie je súčasťou vašej digitálnej stratégie).

2. Koľko času na vývoj máte?

Od odpovede na túto otázku závisia finančné náklady projektu. Faktom je, že z pohľadu času stráveného vývojom sa multiplatformová aplikácia javí len ako výnosnejšie riešenie. V skutočnosti môže jeho prispôsobenie pre platformy trvať takmer rovnako dlho ako vytvorenie dvoch natívnych aplikácií, pretože vývojári budú musieť napísať ďalšie časti kódu pre problémové oblasti.

S natívnou aplikáciou takéto problémy určite nebudú, čo je veľmi dôležité pre udržanie publika extrémne netolerantného voči chybám a bugom. Podľa štatistík Compuware je 79 % používateľov pripravených reštartovať aplikáciu, ak pri prvom spustení nefungovala správne, no len 16 % súhlasí s tým, aby jej dali ešte jednu šancu. Zvyšok s najväčšou pravdepodobnosťou len odinštaluje program.

3. Aké funkcie zariadenia plánujete využívať?

Už sme hovorili o tom, že iba natívne aplikácie sú schopné reprodukovať ťažkú ​​grafiku rýchlo a bez straty kvality. Ale toto technické výhody prirodzený vývoj nie je obmedzený. Vezmite si ako príklad aplikáciu Facebook. Vďaka vydaniu samostatných verzií pre Android a iOS sa posúvanie stalo plynulejším, skrátili sa časy načítania obrázkov a vyriešili sa všetky problémy s vyrovnávacou pamäťou.


A čo viac, natívne aplikácie majú priamy prístup ku všetkým službám zariadenia, čo vám umožňuje získať informácie o polohe používateľa alebo zozname kontaktov. Multiplatformové aplikácie musia využívať špeciálne natívne pluginy, čo negatívne ovplyvňuje rýchlosť prenosu dát a preťaženie RAM zariadení.

4. Aké výsledky hľadáte?

Digitálna stratégia je zoznam cieľov, ktoré môže vaša spoločnosť dosiahnuť pomocou digitálnych nástrojov. Výber druhého do značnej miery závisí od výhod, ktoré chcete nakoniec získať.


Rozložte proces od nápadu k výsledku bod po bode, berúc do úvahy všetky dostupné zdroje. Objavy môžu byť tie najneočakávanejšie.

Môžete napríklad zistiť, že preložiť vašu responzívnu stránku s mnohými funkciami a interaktívnymi prvkami do multiplatformovej aplikácie, ako ste pôvodne zamýšľali, je príliš nákladná úloha. Alebo sa konečne postarajte o to, aby mobilná stránka vždy prehrala s mobilnou aplikáciou – rovnako ako multiplatformový vývoj prehráva s natívnou. A medzi dôvodmi nájdite tie, o ktorých sme hovorili vyššie.

Záver: multiplatformová aplikácia je výhodná len v jednom prípade – vytvoríte demo verziu aplikácie, ste časovo, finančne a úzkoprofiloví špecialisti. Vo všetkých ostatných prípadoch vám natívna aplikácia poskytne mnohonásobne viac výhod, keďže ide o kvalitatívne inú úroveň vývoja.

Zdalo by sa, že tu máme multiplatformový vývoj, ktorý umožňuje vytvárať univerzálne aplikácie pre rôzne platformy. Napísal som aplikáciu rýchlejšie, okamžite som ju vydal všade - zisk! A nie je potrebný žiadny prirodzený vývoj. Alebo je to ešte potrebné? Opýtali sme sa našich odborníkov na nuansy oboch prístupov k vývoju mobilných aplikácií.

„Mobilný vývojár“ je široký pojem. Vývojár, ktorý implementuje časti mobilného operačného systému, je tiež mobilný vývojár. A ak je cieľom stať sa práve takýmto vývojárom, potom musíte začať vo všeobecnosti s učením sa C++, mobilného operačného systému a hardvéru mobilných zariadení.

Ak máte na mysli vývojára implementujúceho custom mobilných aplikácií, potom musíte začať s natívnym vývojom.

prečo je to tak? Natívny vývoj umožňuje lepšie a hlbšie skúmať možnosti konkrétnych operačných systémov (a aplikácií pre ne) a mobilného hardvéru.

Z užívateľského hľadiska rozhodne vyhráva natívny vývoj. Natívne aplikácie fungujú rýchlejšie, ich rozhranie je pohotovejšie a známe pre používateľov konkrétneho mobilného operačného systému, lepšie využívajú hardvérové ​​možnosti zariadení, fungujú lepšie offline a sú menej „buggy“.

Pôvodnou myšlienkou vývoja naprieč platformami je zníženie nákladov na prácu vývojárov. Stručne sa to dá vyjadriť takto: "Urobil som to raz, funguje to na čokoľvek." Myšlienka je dobrá a správna (z pohľadu vývojára), no sú tu otázky o kvalite. Akákoľvek všestrannosť prichádza od začiatku s kompromisom a mobilný vývoj nie je výnimkou.

Pri výbere typu vývoja pre konkrétnu úlohu musí vývojár zhodnotiť, či je tento kompromis prijateľný. Existuje množstvo úloh, pri ktorých by bolo použitie cross-platformového vývoja celkom opodstatnené, napríklad v testovacích projektoch, mobilných verziách stránok, hrách využívajúcich frameworky ako Unity 3D.

Zároveň pri projektoch, ktoré riešia problémy mobilného biznisu (s vysokou záťažou, potrebou podpory offline režimu, zameraného na dlhodobý vývoj), je natívny vývoj vnímaný ako jediný optimálny (a pre niektoré úlohy jediný možný ) možnosť.

Zároveň sú hlavnými nevýhodami natívneho vývoja čas vývoja (vyžaduje sa viac) a potreba rôznorodých zdrojov (vývojári v rôznych natívnych programovacích jazykoch). Existujú spôsoby, ako tieto nedostatky zmierniť – napríklad použiť na vývoj nejakú platformu mobilných aplikácií (trieda MEAP), ktorá umožňuje vytvárať natívne aplikácie.

Upgrade Downgrade

, Riaditeľ pre technologický rozvoj IT spoločnosti "ID - Management Technologies"

Akákoľvek multiplatformová knižnica alebo rámec je založený na rovnakých natívnych mechanizmoch, ktoré priamo implementujú natívny vývoj. Ide len o to, že v prípade multiplatformových riešení sú pracovné postupy postavené tak, aby „vyhladili rohy“ v zmysle priblíženia rozhrania finálneho riešenia k určitému spoločnému menovateľovi.

Univerzalizmus spravidla nie je vždy odpoveďou na úlohu vytvoriť fungujúce mobilné riešenie: vývojár pracuje tým lepšie, čím hlbšie rozumie mechanizmom zariadenia. rôzne procesy zvnútra, ako sa hovorí, „pod kapotou“.

Úplne funkčným modelom by bolo aj súčasné zvládnutie základných prvkov týchto dvoch prístupov, v počiatočnej fáze nie je nič nemožné v takejto učebnej úlohe. Napríklad, takýto scenár sa môže ukázať ako celkom uskutočniteľný a sľubný: začnite pracovať v multiplatformovej paradigme a paralelne, nezávisle alebo s pomocou kolegov, študujte, aké prirodzené príležitosti existujú na vývoj súčasných riešení a ako môžu aplikovať v praxi.

V tomto prípade je jednoduchšie dosiahnuť komplexné pochopenie toho, ako v princípe funguje proces vývoja mobilných zariadení, ktorý sa nazýva end-to-end spôsobom. Je to užitočné aj preto, že každá, aj tá najpokročilejšia, univerzálna platforma zaostáva za natívnou vo svojich schopnostiach: výrobcovia hardvéru a mobilných OS často spolupracujú a neustále zvyšujú možnosti finálnych riešení – možnosti mobilných vývojových platforiem, najmä multiplatformových riešení. , nevyhnutne zaostávať .

Nové produkty v mobilnom segmente sa objavujú na trhu neustále, niektoré z nich ďaleko predbehli dobu – vezmite si Samsung a jeho vývoj zariadenia so skladacou obrazovkou: je zrejmé, že vďaka radikálne odlišnému front-endu , existujúce vývojové platformy nie sú na takéto veci pripravené.

Tu pomôže hlboká znalosť natívnych platforiem: iba vývojár s hlbokými, systémovými znalosťami mobilného vývoja, teda natívnych platforiem, dokáže kompenzovať prirodzené zaostávanie za hardvérom a OS. Len takýto špecialista bude môcť zvýšiť funkčnosť svojho riešenia pre najnovšie mobilné zariadenia založené na nie celkom vyspelých vývojových platformách dostupných v súčasnosti.

Vývoj naprieč platformami je skvelý na prototypovanie, rýchle testovanie nápadu atď. Hneď ako dôjde k vytváraniu skutočne základných produktov, vývojár nevyhnutne prichádza k potrebe hĺbkovo preštudovať základné prvky procesu, teda natívny vývoj.

Upgrade Downgrade

, Dekan Fakulty iOS Development GeekUniversity, vzdelávací portál GeekBrains

Krátka odpoveď: ak nemáte skúsenosti s programovaním, musíte si, samozrejme, zvoliť natívny vývoj. Vývoj naprieč platformami je vhodný pre profesionálov, ktorí prechádzajú z príbuzných oblastí do mobilného vývoja. Ak ste napríklad front-end vývojár s dobrou znalosťou JavaScriptu, pomocou rámca React Native (založeného na frameworku React) sa môžete rýchlo a bezbolestne pokúsiť zvládnuť mobilný vývoj. Podobne ako v prípade vývojára .NET bude jednoduchšie zvládnuť framework Xamarin.

Crossplatformový vývoj je výhodný aj pre zákazníka – ľahšie sa nájde jeden tím vývojárov, ktorí podľa spoločného vzoru vyvinú aplikáciu pre dve platformy naraz.

Výhody sú zrejmé, ale aké sú nevýhody multiplatformového vývoja?! Predpokladá sa, že čím komplexnejšia a jemnejšia je funkcionalita v mobilnej aplikácii, tým ťažšie, ak nie nemožné, je implementovať ju pomocou multiplatformových nástrojov – to často prevažuje nad všetkými výhodami univerzálnych nástrojov. Podľa mojich skúseností existuje niekoľko veľkých spoločností, ktoré boli s rastom svojej aplikácie nútené opustiť cross-platform v prospech natívneho vývoja. Pre malé projekty a prípadne úlohy na voľnej nohe teda stačia všeobecné riešenia, kým pre veľké projekty sú vhodnejšie natívne riešenia.

Dopyt po oboch oblastiach je pomerne vysoký, ale po natívnom rozvoji je o niečo vyšší: na žiadosť Swifta na hh.ru v Rusku - 369 voľných, Kotlin - 397, React Native - 111, Flutter - 13 Xamarin - 18. Ale pokoj istota, dobrý špecialista v V žiadnej oblasti nebude práca.

Upgrade Downgrade

Na začiatok je dôležité poznamenať, že každá mobilná aplikácia pozostáva z niekoľkých vrstiev:

  • UI – čo používateľ vidí;
  • obchodná logika – na čo je aplikácia napísaná;
  • ostatné komponenty platformy – práca so sieťou, databázami a ďalšími komponentmi systému, ktoré využíva obchodná logika.

V závislosti od konkrétnej aplikácie sa veľkosť komponentov na týchto vrstvách môže značne líšiť. Napríklad aplikácia na čítanie správ na webovej lokalite sa bude veľmi líšiť od klienta VPN.

Samotný vývoj možno rozdeliť do troch typov: natívny, plne multiplatformový a hybridný.

natívny vývoj

Pri natívnom vývoji sú všetky tri vrstvy napísané pomocou rovnakej sady nástrojov. Preto môžu navzájom interagovať bez akejkoľvek ďalšej zložitosti.

Výhody natívneho vývoja:

Hybridný vývoj

Tento typ vývoja kombinuje oba predchádzajúce prístupy. Vrstva obchodnej logiky je vytvorená ako „prenosný“ komponent a integrácia používateľského rozhrania a platformy je vytvorená pomocou štandardných nástrojov. Existuje niekoľko jazykov na písanie všeobecnej logiky: C/C++ (zrelý a výkonný), KotlinNative (veľmi aktívne vyvinutý) a JavaScript (najmenej bežný).

Výhody:

  • najvhodnejšie komponenty na to zostávajú pôvodné;
  • spoločná logika sa vytvorí raz.

nedostatky:

  • ak bude spoločný komponent vytvorený mobilným tímom, potom je potrebné získať odbornosť v inom jazyku;
  • existuje réžia na integráciu komponentov naprieč platformami.

S akým typom vývoja je najlepšie začať?

Aby ste mohli odpovedať na túto otázku, musíte pochopiť, aké projekty chcete vytvoriť. Malé projekty môžu byť čisto multiplatformové a to bude plne opodstatnené. Tu by som vám odporučil, aby ste sa bližšie pozreli na Flutter.

Dnes by som ale začal s natívnym vývojom. Po prvé, väčšina projektov sa dnes vytvára natívne. To znamená, že budete mať viac príležitostí na zmenu projektov/spoločnosti. Po druhé, časom bude možné prejsť na hybridný multiplatformový vývoj. To vám umožní rásť v technických záležitostiach.

Upgrade Downgrade

Podľa môjho názoru je najlepšie začať s natívnym a potom, ak naozaj chcete, zvládnuť jeden alebo viac multiplatformových nástrojov. Výnimkou môže byť vývoj hier, keďže sú písané hlavne v Unity a ide o multiplatformový engine.

Ak hovoríme o výhodách natívneho vývoja, tak pre programátora to znamená menej prekážok a viac rôznych nástrojov na prácu. Bude mať aj viac zdrojov informácií na riešenie zložitých problémov, ktoré sa vyskytnú v procese tvorby aplikácie – nie je žiadnym tajomstvom, že na internete je oveľa viac tipov a trikov pre natívny vývoj ako pre multiplatformový vývoj.

Pre koncového používateľa natívny vývoj znamená, že aplikácia bude mať známe, predvídateľné rozhrania a vzorce správania – za predpokladu, že je aplikácia napísaná podľa všetkých návodov.

Aplikácia naprieč platformami nie vždy dokáže plne vyhovieť sprievodcom oboch platforiem, čo môže vývojárom a používateľom spôsobiť ďalšie ťažkosti. Najjednoduchší príklad- situácia s tlačidlom "Späť": v systéme Android sa nachádza takmer na všetkých obrazovkách, zatiaľ čo v systéme iOS nie. Ak vytvoríte aplikáciu pre viacero platforiem bez tohto tlačidla, niektorí používatelia systému Android môžu pociťovať nepohodlie.

Za zmienku stoja aj rozdiely v nákladoch na vývoj. Ak je projekt jednoduchý, výber medziplatformového vývoja vám umožní ušetriť rozpočet, pretože v skutočnosti nevyvíjate samostatné produkty pre rôzne platformy, ale jeden pre všetky. Ale ak projekt rastie, potom sa váhy začnú nakláňať opačným smerom a natívny vývoj môže byť ziskovejší.

Čo sa týka rýchlosti aplikácií, multiplatformové produkty sú pomalšie. Napríklad tie, ktoré sú založené na webových technológiách, majú ako vrstvu prehliadač, čo výrazne spomaľuje aplikáciu.

Upgrade Downgrade

Výber medziplatformového alebo natívneho prístupu v skutočnosti závisí od dvoch faktorov: od charakteru mobilného vývoja, ktorému sa osobne chcete venovať, alebo od požiadavky zamestnávateľov, s ktorými máte záujem spolupracovať. Ak sa teda pozrieme napríklad na Upwork (platformu na vyhľadávanie vzdialených špecialistov na projekty a úlohy), môžeme vidieť jasnú prevahu ponúk v smere Xamarin a React Native. Výhody sú tu zrejmé: je to lacné, rýchle a umožní vám realizovať projekty na všetkých platformách naraz. Ak však vezmeme do úvahy veľké IT spoločnosti s hľadaním zamestnancov in house, potom je tu kladený značný dôraz na natívny vývoj, napriek tomu, že tento typ si vyžaduje viac času a je drahší.

V našej spoločnosti uprednostňujeme a vyberáme natívny vývoj, pretože umožňuje dizajnérom a vývojárom vytvárať plynulejšie a intuitívnejšie UX/UI. Natívny vývoj navyše poskytuje flexibilnejšiu kontrolu nad systémovými funkciami.

Upgrade Downgrade

Ak sa chcete stať mobilným vývojárom, odpoveď je zrejmá: musíte si vybrať ktorékoľvek z natívnych vývojových prostredí a oprieť sa o Objective-C/Swift pre iOS alebo Java/Kotlin pre Android. V tomto prípade sú všetky funkcie systému k vašim službám, môžete ovládať takmer všetky nuansy.

Ak chcete len napísať program, ktorý bude fungovať aj na telefónoch, potom nemôžete veľa premýšľať a vybrať si, v čom je vaša duša viac alebo v čom máte nejaké pozoruhodné skúsenosti: C++, React Native, Xamarin alebo päťstotisíc JS frameworky pre multiplatformový vývoj. Alebo dokonca pokračujte vo vytváraní vlastných [responzívnych] webových stránok.

Aby som bol úprimný, som skôr skeptický k samotnej myšlienke vývoja naprieč platformami na tak odlišných (a odlišných) platformách, ako sú Android a iOS. Nikto z predajcov nemá rád „nesprávnych“ vývojárov, ktorí sa snažia sedieť na dvoch stoličkách súčasne. Každý sa snaží pripútať programátorov k nástrojom a prostrediam a v dohľadnej budúcnosti nie je tendencia zbližovať sa. Čo môžem povedať, Apple v tomto preteku dokonca opustil OpenGL, najcrossplatformnejšiu zo všetkých knižníc po Curl, ale teraz majú svoj vlastný Metal, ktorý, zdá sa, robí to isté, len lepšie a v inom jazyku.

Na druhej strane, mobilný vývoj je veľmi často vytvorením dvoch aplikácií, ktoré vyzerajú rovnako pre nejakú sieťovú službu. Zákazníci nie sú vždy pripravení zaplatiť za dva produkty, ktoré vyzerajú úplne na nerozoznanie, takže dopyt po multiplatformových vývojových technológiách existuje a, pravdaže, je dosť vysoký. Programátori sa tiež nebránia šetreniu peňazí, najmä ak chcú predať mobilnú aplikáciu, nemajú chuť učiť sa Swift / Kotlin, ale JS / C # už majú na dosah ruky.

Samozrejme, multiplatformový vývoj so sebou prináša množstvo neprehliadnuteľných nuancií. Všetky univerzálne riešenia sú nútené stavať hrady z piesku: buď sa spoliehajú na zložité a krehké technologické riešenia(ako Xamarin) alebo na mobile JavaScript motory ako React Native. Dodávateľov platforiem zároveň ani nenapadne podporovať niektoré z riešení a každá aktualizácia natívneho SDK je veľkou bolesťou hlavy pre akýkoľvek multiplatformový rámec. Nehovoriac o takých systémových špecifických funkciách, ako je prístup k fotoaparátu, kľúčenke či dokonca banálnej fotogalérii, ktorú sa každý snaží s rôznym úspechom obísť. Developeri, ktorí si zvolia univerzálnu cestu, sú rukojemníkmi svojho frameworku a často sa vývoj, ktorý sľuboval výrazné úspory, zmení na boj proti hrabaniu.

V multiplatformových riešeniach je tiež často zvykom obetovať to, čo sa označuje pojmom používateľská skúsenosť (UX): mnohé frameworky sa snažia používať ovládacie prvky, ktoré sú čo najvšeobecnejšie pre oba systémy a takmer vždy je toto riešenie pre každého rovnako nepohodlné. . Alebo spomaliť. Alebo nemoderné. Alebo vybíja batériu. Pokračujte v zozname sami.

Odlišujú sa od seba multiplatformové aplikácie, ktorých jadrá sú napísané na nízkej úrovni, najbežnejšej pre všetky operačné systémy: v jazykoch ako C/C++. V tomto prípade je zvykom zovšeobecňovať používanie kódu, ktorý slúži obchodnej logike a rozhranie sa píše pre každú platformu zvlášť. V ideálnom prípade by sa dalo vyhnúť duplicite kritickej časti aplikácie a zároveň zachovať používateľskú skúsenosť, ktorá je špecifická pre každú platformu. V skutočnom živote sú však veci zložitejšie. Napríklad Dropbox sa niekoľko rokov po sebe snažil žiť s nízkoúrovňovým jadrom, no nakoniec to z mnohých dôvodov vzdal a teraz je spokojný s aplikáciami natívnej platformy. Záujemcov odkazujem na ich kuriózny článok na túto tému.

Podľa mňa je šetrenie na multiplatformových frameworkoch vždy iluzórne. Pravdepodobne v niektorých triviálnych projektoch, kde je aplikácia len verziou hlavnej stránky, super optimalizovanou pre mobilné zariadenia, funguje všeobecný prístup. V iných prípadoch riskujete zopakovanie osudu Dropboxu. Moja rada je, ak chcete byť mobilným vývojárom, investujte do učenia sa platformy. Vždy sa oplatia, aj keď sa musíte zapojiť do multiplatformového projektu.

Upgrade Downgrade

, Senior Software Developer, Accenture Tver Technology Center

Trh s mobilnými aplikáciami sa aktívne rozvíja a zodpovedajúcim spôsobom rastie aj súbor technológií na ich vývoj. Existuje pomerne veľa nástrojov, ktoré môžete použiť.

Pre natívny vývoj na platforme Android je tu Java alebo wrapper nad JVM – Kotlin. Pre iOS môžete použiť Objective-C alebo nad ním wrapper – Swift. Toto sú všetky jazyky OOP, ktoré veľa zdedili od Smalltalku a C.

Na multiplatformový vývoj teraz slúži Flutter od Google, na ktorý budete potrebovať poznať Dart. Alebo React Native z Facebooku.

Pre začínajúceho mobilného vývojára budú s najväčšou pravdepodobnosťou rozhodujúcim faktorom jeho minulé skúsenosti a znalosť jazykov. Ak je Java základom jeho sady nástrojov, bude sa môcť oveľa rýchlejšie naučiť svet mobilného vývoja cez platformu Android s použitím rovnakej Java alebo Kotlin.

Zároveň Objective-C pre vývoj iOS veľa prevzal zo Smalltalku, ako aj Java, takže ak chcete, môžete si vybrať v prospech iOS. Majte však na pamäti, že vývoj pre Android môže prebiehať na Windows alebo Linuxe, no iOS vyžaduje MacOS X. Pre vývojára JavaScriptu so znalosťou Reactu je však React Native očividne najrýchlejší spôsob. Rovnako ako pre vývojárov Dart, voľba bude v prospech Fluttera.

Keď začínajúci vývojár získa predstavu o tom, aký je mobilný vývoj, aké sú klady a zápory zvolenej cesty, sám sa rozhodne, či bude pracovať s jedným prístupom, alebo bude problémy riešiť pomocou multiplatformových riešení.

Tento prístup má svoje výhody: multiplatformová metóda umožňuje uvoľniť projekt do produktívneho prostredia o niečo rýchlejšie s použitím menšieho množstva zdrojov. Navyše sa ľahšie udržiava. Má však aj zjavné nevýhody pre vývojára aj používateľa. Vývojár napríklad nemusí poznať natívne technológie, ale musí brať do úvahy pravidlá platformy, pretože aplikácia napísaná podľa pokynov pre iOS spôsobí používateľom Androidu ťažkosti a naopak.

Aplikácie naprieč platformami nemôžu dosiahnuť rovnakú úroveň integrácie zariadení ako natívne aplikácie. To znamená, ak aplikácia hovorí o interakcii so zariadením, ako je fotoaparát, kalendár alebo používanie výpočtový výkon zariadení, je jednoduchšie to dosiahnuť pomocou natívneho prístupu a bude to rýchlejšie a produktívnejšie.

Pri vývoji multiplatformovej aplikácie špecialisti berú do úvahy možnosti rámca, ktorý ukladá obmedzenia. Za zváženie tiež stojí, že na vývoj produktu na natívnych technológiách sú pre každú platformu potrební špecialisti.

Ak pracujete ako freelancer alebo máte za cieľ pokryť maximálny počet zariadení s minimálnymi finančnými prostriedkami, zamerajte sa v prípade zamerania na cross-platformový vývoj mobilné riešenia alebo front-end práca.

Aké sú hlavné výhody a nevýhody mobilného natívneho a multiplatformového vývoja? Samotný natívny vývoj je drahý, pretože spoločnosť potrebuje investovať do dvoch tímov – iOS a Android. V prípade jednoduchých aplikácií je rýchlosť vývoja Flutter / React Native vyššia.

Ale plus je, že infraštruktúra je už vytvorená a zrozumiteľná. Získate prístup k akýmkoľvek zdrojom zariadenia a môžete ich rozvíjať pod inteligentné hodinky, autá a ďalšie.

Skvelá vec je aj vývoj naprieč platformami. Na trhu práce v oblasti IT v Rusku však ešte nie je dostatočne rozvinutý. Rozumní špecialisti - počítajte na prstoch. Rámcová infraštruktúra je mladá, no situácia sa postupne mení k lepšiemu. Tento vývoj umožňuje písať pre viacero zariadení naraz. Aj keď napríklad píšete vo Flutteri, ľahko sa integruje s natívnym kódom.

Upgrade Downgrade

Vývoj naprieč platformami je zameraný na rýchle výsledky a výraznú úsporu rozpočtu – píšeme jeden kód pre všetky zariadenia. Oblasti jeho použitia sú buď riešenie pre interné použitie, kde nie je až taká dôležitá využiteľnosť produktu a dominantnú úlohu zohráva funkčnosť, alebo vytvorenie rýchleho „pilotného“ projektu, kedy zákazník potrebuje ukázať princíp resp. predstavu o aplikácii. Okrem toho, ak na zariadení nie je presné pochopenie, s ktorým operačným systémom bude váš prototyp prezeraný, potom je vývoj naprieč platformami cestou von. Vopred však musíte pochopiť, že všetky zariadenia majú odlišnú architektúru, takže fyzicky je takmer nemožné spustiť kvalitnú aplikáciu iba na jednom multiplatformovom kóde. V zložitých scenároch budete musieť napísať natívny kód. Okrem toho, kvôli svojej špecifickosti, vývoj medzi platformami prináša náklady, ktoré neumožňujú, aby bola aplikácia čo najefektívnejšia. Je to pochopiteľné, v tomto prípade musí byť medziplatformový kód preložený pre každú z platforiem, čo robí aplikáciu „ťažšou“ tým, že okrem funkčného kódu obsahuje aj jej prostredie na vykonávanie.

Dajte iný názor

Všetko je jasné, ukážte závery

Aký prístup k rozvoju by ste teda mali zvoliť?

Všetko závisí od úlohy. Ak potrebujete napísať prototyp aplikácie pre viacero platforiem resp mobilná verzia sa môžete pozrieť na multiplatformové rámce. S nimi pravdepodobne napíšete aplikáciu rýchlejšie ako pri natívnom vývoji, najmä ak pracujete na frameworku podobnom vášmu bežnému nástroju, ako je React Native.

Na druhej strane univerzálnosť multiplatformových aplikácií musí byť nejakým spôsobom kompenzovaná. Niekde vyskočí „nenatívny“ prvok rozhrania, niekde je horšia interakcia so systémom, niekde klesá rýchlosť práce a pod. stabilnejší a natívne vyzerajúci produkt.

V tomto ohľade, ak práve začínate s mobilným vývojom, potom by bolo lepšie najskôr urobiť natívny vývoj. K nej si na internete nájdete viac informácií, hlbšie pochopíte možnosti platformy a nebudú vás rušiť jednotlivé nuansy medziplatformového vývoja. Navyše, ak sa v budúcnosti rozhodnete pre cross-platformový vývoj, získané znalosti vám určite nebudú prekážať.

Pripomíname, že svoju otázku môžete položiť odborníkom a ak sa ukáže, že bude zaujímavá, zozbierame na ňu odpovede. Otázky, ktoré už boli položené, nájdete v zozname problémov. Ak sa chcete pridať do radov odborníkov a poslať odpoveď z vašej spoločnosti alebo od vás osobne, napíšte na , povieme vám, ako na to.

Vývoj naprieč platformami vám umožňuje vytvoriť mobilnú aplikáciu, ktorá bude súčasne fungovať v prostredí iOS a Android. Ide o rozpočtovú alternatívu vytvárania aplikácie pre každý operačný systém samostatne.

Vlastnosti multiplatformového vývoja

Vyvíjať jednu aplikáciu pre rôzne platformy je dobré aj zlé zároveň. No preto, lebo sa to dá urobiť rýchlejšie a lacnejšie ako niekoľko aplikácií pre každý operačný systém. A to je zlé, pretože kompromis sa odráža vo fungovaní aplikácie.

Pred začatím projektu je potrebné vziať do úvahy tieto vlastnosti:

  • V multiplatformovom prostredí sa kód napíše raz. Aby aplikácia fungovala na inom operačnom systéme, kód sa preloží do iného programovacieho jazyka. Čas a peniaze vynaložené na vývoj sú 1,5-krát menej.
  • Aplikácie nemusia fungovať správne. Pri multiplatformovom vývoji nie je možné brať do úvahy všetky nuansy práce s architektúrou každého operačného systému, takže aplikácie môžu bežať pomalšie ako tie, ktoré sú navrhnuté špeciálne pre iOS alebo Android.
  • Požiadavky na rozhranie a dizajn prvkov sa líšia v závislosti od operačného systému.. Napríklad v systéme iOS neexistuje tlačidlo späť, ako napríklad v systéme Android. Pri vývoji jednotného dizajnu je potrebné vziať do úvahy tento bod: v systéme iOS tlačidlo buď zostane, ale nebude fungovať, alebo sa bude musieť ručne vyrezať, a to je práca navyše s kódom.

Väčšina chýb pri prechode z jednej platformy na druhú sa opravuje manuálne, ale nie je možné úplne vyriešiť problémy s prispôsobením sa „nenatívnemu“ operačnému systému.

Takže vývoj naprieč platformami je zlý?

Nie, vývoj naprieč platformami je v poriadku, pokiaľ od neho nepožadujete viac, ako môže dať.

Túto možnosť je možné zvoliť v nasledujúcich prípadoch:

  • Pokrytie všetkých operačných systémov s obmedzeným rozpočtom. Ak cieľové publikum aktívnejšie pomocou iOS alebo Androidu, môžete začať s natívnou aplikáciou pre jeden operačný systém. Ak je hneď dôležité maximálne pokrytie, je lepšie zvoliť multiplatformovú možnosť.
  • Skontrolujte výklenok. Ak existuje sľubný nápad, ale nie je istota, že bude fungovať, je riskantné okamžite investovať veľký rozpočet do vývoja. Má zmysel začať s vývojom naprieč platformami, študovať reakcie používateľov a na základe toho robiť strategické rozhodnutia.
  • Aplikácia nepoužíva zložité animácie a nevykonáva výpočty. Tieto operácie vážne zaťažujú zariadenie a multiplatformová aplikácia nie je optimalizovaná na plné využitie zdrojov konkrétnej platformy.
  • Aplikácia využíva len základné funkcie zariadenia. Zobrazovať informácie, nahrávať súbory, používať geolokáciu, zadať objednávku – to všetko zvládne aplikácia naprieč platformami. Vyžaduje sa hlbšia integrácia možností zariadenia – budete si musieť vybrať natívny vývoj.
  • Firemná aplikácia pre zamestnancov. Ak je aplikácia vyvinutá pre úzke interné úlohy a ľudia s ňou budú pracovať prostredníctvom osobných miniaplikácií, najlepšou voľbou bude multiplatformová aplikácia.

Na otázku, či je možné pre váš projekt použiť multiplatformové riešenia, neexistuje univerzálna odpoveď. Vyplňte formulár nižšie: preštudujeme váš projekt a vyberieme najlepšiu možnosť na jeho realizáciu.