Tajne razvoja mobilnih aplikacija. Što je "Nativna aplikacija"? Razvoj izvornih aplikacija na Androidu

💖 Sviđa li vam se? Podijelite vezu sa svojim prijateljima

Tržište mobilnih aplikacija staro je više od deset godina, ali se i dalje ubrzano razvija. Potražnja tvrtki u stalnom je porastu i još uvijek znatno premašuje ponudu, što dovodi do stalnog povećanja troškova razvoja. Jedno rješenje za smanjenje troškova ovog procesa je razvoj na više platformi, kada se isti kod koristi na svim platformama.

Prošli put smo se dotakli višeplatformskog mobilnog razvoja i od tada se puno toga promijenilo. Vrijeme je da ponovno razgovaramo o metodama i alatima.

Prvo prođimo ponovno kroz terminologiju.

Zavičajni

Ako programeri u procesu pisanja aplikacije koriste programski jezik usvojen za određenu platformu, bilo da se radi o Objective-C i Swiftu za iOS ili, takva aplikacija će se zvati nativna (od engleskog native - izvorni, prirodni).

Prednosti izvornih aplikacija:

  • brzinu i odziv sučelja. Aplikacija odmah reagira na klikove, praktički nema kašnjenja u animaciji, pomicanju, primanju i ispisivanju podataka;
  • jasan i jednostavan pristup funkcijama uređaja i senzorima. Za programera, rad s geolociranjem, push obavijestima, snimanjem fotografija i videa putem kamere, zvuka, akcelerometra i drugih senzora nije problem;
  • mogućnost dubinskog rada s funkcijama pametnog telefona. Kao u prethodnom odlomku, stvari poput animacija, stvaranja složenih sučelja i rada neuronskih mreža izravno na uređajima implementiraju se, možda ne jednostavno, ali predvidljivo;
  • . Izvorne aplikacije obično rade s "platformskim" elementima sučelja: izbornici, navigacija, obrasci i svi ostali elementi dizajna preuzeti su iz operativnog sustava i stoga su poznati i razumljivi korisniku.

Postoji samo jedan nedostatak - visoka cijena razvoja i podrške. Za svaku platformu morate napisati vlastiti kod. S rastom tržišta mobilnih aplikacija programeri su postali ne samo skupi, već vrlo skupi.

I to ne rodbina

Višeplatformske aplikacije napisane su za nekoliko platformi odjednom na jednom jeziku koji nije izvorni jezik. Kako takav kod može raditi na različitim uređajima? Ovdje također postoje dva pristupa.

Prvi je da se u fazi pripreme aplikacije za objavu ona pomoću transpilera pretvara u nativnu za određenu platformu. Zapravo, jedan višeplatformski programski jezik se "prevodi" u drugi.

Drugi je da se rezultirajućem kodu dodaje određeni omotač koji, već radeći na uređaju, u hodu prevodi pozive iz ne-nativnog koda u izvorne funkcije sustava.

Pretpostavlja se da se većina ovog koda može prenositi između platformi - očito je da se, na primjer, logika kupnje, spremanja robe u košaricu, izračunavanja rute za taksi, pisanja poruke u messengeru ne mijenja. ovisno o tome ima li klijent Android ili iOS. Samo trebamo poboljšati UI i UX za platforme, ali sada, unutar određenih ograničenja, čak se i to može kombinirati - na primjer, izbornik hamburgera aktivno se koristi i na Androidu i na iOS-u. Tako da je i korekcija sučelja kako bi aplikacija zadovoljila duh i slovo željene platforme stvar želje, potrebne brzine i kvalitete izrade.

Prednosti:

  • cijenu i brzinu razvoja. Budući da je potrebno napisati mnogo manje koda, trošak rada je smanjen;
  • sposobnost korištenja internih resursa poduzeća. Kao što ćemo kasnije pokazati, razvoj mobilne aplikacije na više platformi često mogu napraviti vaši postojeći programeri.

Mane:

  • nenativno sučelje ili, u najmanju ruku, potreba za radom sa sučeljem svake platforme zasebno. Svaki sustav ima svoje zahtjeve za dizajn elemenata i ponekad se oni međusobno isključuju. To se mora uzeti u obzir tijekom razvoja;
  • problemi u implementaciji složenih funkcija ili mogući problemi u radu čak i s jednostavnim procedurama zbog pogrešaka u samim razvojnim okvirima. Međuplatformsko okruženje samo prevodi zahtjeve za sistemske pozive i sučelja u format koji sustav razumije, pa se stoga u ovoj fazi mogu pojaviti i poteškoće s razumijevanjem i pogreške unutar samog okvira;
  • brzina rada. Budući da je višeplatformsko okruženje "nadgradnja" nad kodom (ne uvijek, ali u određenim situacijama), ono ima svoja kašnjenja i stanke u obradi korisničkih radnji i prikazivanju rezultata. Posebno je to bilo vidljivo prije nekoliko godina na pametnim telefonima koji su bili slabije snage u odnosu na današnje, no sada, s povećanjem performansi mobilnih uređaja, to se već može zanemariti.

Kao što vidite, ove dvije metode praktički su zrcalna slika jedna druge - prednosti izvornog razvoja, nedostaci međuplatformskog razvoja i obrnuto.

Popularne razvojne platforme i alati za više platformi

Kao što smo gore napisali, postoje dva pristupa - pretvaranje koda u nativni u fazi sklapanja ili dodavanje određenog omotača koji prevodi pozive u i iz sustava.

Cordova i PWA dva su alata koji rade upravo u ideologiji omotača.


Cordova i HTML5

Jedno od najpopularnijih područja u međuplatformskom programiranju, koje se često popularno naziva PhoneGap. Zapravo, kreira se mobilna web stranica koja je “zamotana” u mali platformski kod koji prenosi pozive od sustava do aplikacije i natrag.

Svi nedostaci i prednosti ovdje su izraženi jasnije nego bilo gdje drugdje. Možete koristiti web programere (HTML, CSS i JavaScript kao temeljne tehnologije) i napraviti prvu verziju aplikacije za mjesec dana ili čak nekoliko tjedana za relativno malo novca. Da, usporit će u radu, možda neće imati sasvim točnu geolokaciju, ali radit će na svim uređajima i omogućit će vam barem da testirate potražnju kupaca na mobilnim uređajima.

Ogroman broj okvira stvoren je za ovaj pristup, ali svi oni u biti rade istu stvar. Razlika između njih je u tome što Cordova (PhoneGap) ne postavlja ograničenja i predloške na logiku i korisničko sučelje za vaš HTML5 projekt, a okviri rade s vlastitim gotovim elementima korisničkog sučelja koji oponašaju mobilne platforme i vlastitu razvojnu logiku. Primjer ovog pristupa je: Ionic Framework - wrapper; Framework7, Mobile Angular UI, Sencha Touch, Kendo UI - okviri sučelja.

PWA

Moderna tehnologija iz Googlea su iste web aplikacije, ali kroz korištenje određenih tehnologija (prvenstveno tzv. Service Worker - skripte koje rade u pozadini i Web App Manifest - opis web aplikacije u obliku razumljivom za mobitel sustav ) mogu raditi kao izvorni bez PhoneGap omotača. Mogu se instalirati na početni zaslon, zaobilazeći trgovinu aplikacija, raditi izvan mreže, raditi s push obavijestima i s izvornim funkcijama.

Problem je u tome što sve platforme čak ni sada ne podržavaju ove "određene tehnologije". To se prvenstveno odnosi na Apple, kojemu se očito baš ne sviđa mogućnost distribucije aplikacija zaobilazeći App Store.

Uzimajući u obzir sve nedostatke HTML5 rješenja, mnoge su tvrtke stvorile alate koji omogućuju pisanje koda na jednom, nematernjem jeziku, a on se zatim prevodi na materinji. Ovo ubija dvije muhe jednim udarcem: postoji samo jedna baza koda, a aplikacije su što bliže izvornim.


Xamarin

Microsoftova platforma. Standardni programski jezik za Enterprise razvoj je C#, a višeplatformsko razvojno okruženje je Visual Studio. Rezultat su izvorne aplikacije za iOS, Android i Windows. Istina, relativno velike veličine.

React Native

Platforma iz - aplikacije su napisane u JavaScriptu i koriste stilove slične CSS-u. Ispada da je sučelje izvorno, a kod se tumači na platformi, što mu daje potrebnu fleksibilnost.

Budući da je relativno mlada platforma, React Native još uvijek očito (iako ne katastrofalno) pati od nedostatka razvojnih alata i dokumentacije.

lepršati

Naravno, takav div kao što je Google nije mogao zanemariti temu razvoja aplikacija za Android i iOS na više platformi. Flutter, iako trenutno samo u beta verziji, ima drugačiji pristup od React Native i Xamarina. Ne pretvara izvorni kod u izvorni kod, koji izvršava platforma, već zapravo crta prozor na zaslonu pametnog telefona i sam renderira sve elemente. Jezik koji se koristi je "vlasnički" Dart, koji je Google stvorio kao poboljšanu verziju JavaScripta.

To ima i prednosti (na primjer, izvana identična sučelja) i mane (na primjer, ponovno crtanje sučelja zahtijeva određenu količinu memorije i CPU vremena).

Platforma se ubrzano razvija i Google u nju ulaže puno truda i novca. Ali u usporedbi s Flutterom, čak se i React Native čini kao vrlo uspostavljen i impresivan ekosustav.

Što izabrati

Vjerojatno vam se već vrti u glavi, ali još uvijek nemate ideju što odabrati. Predstavimo jednostavan popis pitanja koja će vam pomoći:

  • Treba li nekako raditi na bilo kojem uređaju? Odaberite HTML kao osnova;
  • Imate dovoljno sredstava, ne žurite vam i želite što kvalitetniju aplikaciju? Imate izravan put do zavičajni razvoj;
  • Imate li “ugrađenog” web programera ili samo želite brzo i jednostavno isprobati mobilnu aplikaciju u akciji? Ovdje možemo preporučiti Cordova/HTML ili PWA;
  • Imate li vlastiti CRM sustav i C# programera koji ga podržava? Uzmi Xamarin;
  • "želite isprobati", ali morate sve napraviti lijepo i moderno? Odvratiti pogled Reagirajte Native ili Flutter.

Možete ići i s druge strane. Pogledajte funkcionalnost koju ćete trebati u svojoj aplikaciji i krenite odatle:

  • jednostavna aplikacija za posjetnice? Uzeti React Native ili HTML5 i dobit ćete dvije platforme za minimalnu cijenu;
  • Imate web stranicu s puno prometa i trebate testirati svoju prisutnost u mobilnom prostoru? HTML5;
  • složene aplikacije s pristupom željenim funkcijama uređaja? Izvorni razvoj, Xamarin, React Native.

Razvoj na više platformi nije lijek za sve

Prilikom odabira morate poći od dodijeljenih zadataka i postojećih resursa. Krosplatformski razvoj je dobar i razumljiv smjer, ali sa svojim prednostima i nedostacima koje treba imati na umu prije pokretanja projekta. Dovršena višeplatformska aplikacija očito je bolja od neizrađene izvorne. Možete je brzo i jeftino razviti, uploadati u trgovinu i jednostavno provjeriti potražnju korisnika - traži li netko vašu aplikaciju, instalira li je, koje funkcije koristi. Na temelju rezultata takvog eksperimenta bit će moguće odlučiti o sudbini mobilnog smjera u vašoj tvrtki i ulaganja u nju.

Još uvijek imate nedoumica i pitanja o aplikacijama na više platformi? Pročitajte kako smo izradili aplikaciju za brzo dobivanje pretplate na jednu od gradskih sportskih ustanova i isprobajte aplikaciju za plaćanje svih vrsta usluga - od stambenih i komunalnih usluga do narudžbi u online trgovinama. Još bolje, prijavite se za besplatnu konzultaciju, navodeći približni proračun i kratak opis ideje ili kontaktirajte našeg menadžera Katyu telefonom

Pametni telefoni nastavljaju dobivati ​​sve više prostora na suncu, ne samo kao alat za konzumiranje fotografija mačaka i XXX videa, već i kao radni alat. Stoga potražnja za mobilnim razvojem raste. Opće je prihvaćeno da su rad i cool Objective-C/Swift za iOS i Java/Kotlin za Android. Bez sumnje, to je težak posao i cool, ali postoji veliki broj stvarnih scenarija u kojima je korištenje međuplatformskih okvira poželjnije u usporedbi s izvornim alatima.

Neki programeri očekuju da će međuplatformski okviri riješiti sve njihove životne probleme, dok su drugi neprijateljski raspoloženi prema njima. Oba "zaraćena tabora" imaju svoje zablude uzrokovane nedostatkom razumijevanja kako i što funkcionira. To dolijeva ulje na vatru, jer se umjesto tehničkih argumenata koriste emocije.

Također među programerima, posebno početnicima, postoje mnogi mitovi o međuplatformskim mobilnim okvirima. U našem ćemo članku analizirati najpopularnije od njih. Ali prvo, pogledajmo mobilni razvoj kroz oči tvrtke koja osigurava novac za cijeli IT blackjack.

Zašto su nam potrebni alati za više platformi?

Povijesno gledano, na tržištu računala oduvijek je postojala konkurencija, a svaki proizvođač je osigurao optimalan skup tzv. izvornih alata za razvoj aplikacija za svoje operativne sustave i uređaje.

Izvorni alati = osigurao vlasnik ekosustava.

Svi ostali znakovi "nativnosti" su SEKUNDARNI - ponašanje i sučelje aplikacije, pristup mogućnostima OS-a, performanse itd.

Osim toga, gotovo uvijek se pokazalo da su izvorni alati međusobno nekompatibilni ne samo na razini razvojnih jezika, prihvaćenih konvencija i arhitektura, već i na razini mehanizama za rad s operativnim sustavom i bibliotekama. Kao rezultat toga, za implementaciju istih algoritama i sučelja bilo je potrebno napisati aplikaciju za nekoliko okruženja u različitim programskim jezicima, a zatim je podržati na temelju "jedna naredba po platformi". Pritom su mogućnosti i izgled aplikacija na različitim platformama gotovo uvijek 90% identični. Zabave radi, usporedite implementaciju svojih omiljenih programa za iOS i Android.

Druga važna točka je prisutnost potrebnog znanja i iskustva unutar tima: ako ih nema, trebat će vremena za učenje.

Kako bi se riješila oba ova problema, na tržištu su se odavno pojavili alati za razvoj više platformi (ne samo mobilnih) koji nude:

  • maksimizirati zajedničku bazu koda u jednom programskom jeziku kako bi se proizvod lakše razvijao i održavao;
  • koristiti postojeće kompetencije i stručnjake za implementaciju aplikacija na novim platformama.

Budući da sada postoji mnogo programskih jezika (i okruženja) (i stručnjaka koji govore te jezike), postoji priličan broj alata za razvoj na više platformi. Kao primjer, usredotočit ćemo se na one popularne u našem kraju PhoneGap, Xamarin, React Native i Qt.


Sada možemo govoriti o mitovima.

Mit 1. Magija

Najčešći mit koji opsjeda umove programera početnika povezan je s vjerovanjem u super-algoritme (i super-programere koji su ih stvorili) koji magično pretvaraju višeplatformske aplikacije u izvorne. Nešto u stilu "pretvorbe JavaScript koda u Swift i zatim kompajliranja Swift aplikacije." Ovaj mit potiču sami programeri alata za više platformi, obećavajući stvaranje "nativnih aplikacija" kao rezultat. I nije da netko ovdje laže, ali bogata mašta i nerazumijevanje osnovnih mehanizama ponekad navode programere na razmišljanje o šamanskim tehnikama.

Glavno načelo na kojem se nalaze rješenja za više platformi je dijeljenje koda na dva dijela:

  • više platformi, živi u virtualnom okruženju i ima ograničen pristup mogućnostima ciljne platforme putem posebnog mosta;
  • domaći, koji omogućuje inicijalizaciju aplikacije, upravljanje životnim ciklusom ključnih objekata i ima puni pristup API-jima sustava.


Kako bi se povezao “nativni” svijet i “cross-platformski” svijet, potrebno je koristiti poseban most, on je taj koji određuje mogućnosti i ograničenja međuplatformskih okvira.

Pri korištenju mosta, performanse su uvijek smanjene zbog konverzije podataka između “svjetova”, kao i konverzije API poziva i biblioteka.

Dakle, sve višeplatformske aplikacije moraju imati izvorni dio, inače ih operativni sustav jednostavno neće moći pokrenuti. Dakle, pogledajmo pobliže koje sistemske API-je i mehanizme pružaju sami iOS, Android i Windows. Prijeđimo na sljedeći mit.

Mit 2. Nije izvorno!

Dakle, imamo višeplatformski dio aplikacije koji živi u virtualnom okruženju i komunicira s operativnim sustavom kroz okvirnu infrastrukturu i most.

Svi operativni sustavi: iOS, Android i Windows UWP omogućuju pristup sljedećim podsustavima (skupovima sistemskih API-ja):

  • WebView (web preglednik unutar aplikacije) koristi se u kombinacijama temeljenim na PhoneGap-u i u biti djeluje kao okruženje za izvođenje za lokalnu web stranicu;
  • JavaScript motori se koriste u React Native i analogima za brzo izvršavanje JS koda i razmjenu podataka između Native i JS;
  • OpenGL ES (ili DirectX) koristi se u motorima za igre i aplikacijama temeljenim na Qt/QML ili analognim za renderiranje sučelja;
  • UI podsustav odgovoran je za izvorno korisničko sučelje aplikacije, što je relevantno za React Native i Xamarin.


Višeplatformske aplikacije imaju izvorni dio i isti puni pristup sistemskim API-jima kao izvorne aplikacije. Razlika je u tome što se sustavna metoda poziva preko mosta i infrastrukture okvira:

WebView- aplikacija živi u svom web pregledniku, slično web stranici s jednom stranicom. Nema pristupa izvornim kontrolama (gumbi, popisi itd.), sve se temelji na HTML/CSS/JavaScript. S druge strane, web programer će se osjećati kao riba na izljevu.

JavaScript motori postao popularan relativno nedavno, budući da je sličan mehanizam dodan u iOS samo u verziji 7.0. Jedna od značajki koju vrijedi razmotriti je potreba za serijalizacijom složenih struktura podataka koje se prenose između JavaScripta i izvornih okruženja u JSON-u. Da ukratko opišemo ovu klasu rješenja, JS kod koji kontrolira nativnu aplikaciju izvodi se u JavaScript okruženju.

OpenGL ES i DirectX su podsustavi niske razine i koriste se za renderiranje korisničkog sučelja u igrama i, na primjer, Qt/QML. Odnosno, kada koriste OpenGL/DirectX, programeri sami crtaju kontrole i animacije, koje mogu biti samo slične izvornim. S druge strane, to je podsustav niske razine s vrlo visokim performansama, zbog čega se također koristi u međuplatformskim motorima za igre.

Sve višeplatformske aplikacije imaju izvorni dio, a time i potencijalno isti puni pristup sistemskim API-jima kao izvorne. Također, međuplatformske aplikacije su izgrađene i pakirane s izvornim alatima u izvorne instalacijske pakete. Ključno je pitanje kako je organizirana interakcija između višeplatformskog dijela i nativnog. Na primjer, unutar WebViewa ili korištenjem Open GL ES / DirectX ne postoji način za stvaranje korisničkog sučelja s potpuno nativnim izgledom i osjećajem, ali u isto vrijeme postoji potpuni pristup GPS-u, Push obavijestima i drugim funkcijama. A kod u JavaScriptu ili C# može prilično slobodno kontrolirati izvornu aplikaciju i njezino ponašanje, pružajući potpuno izvorni look’n’feel.

Ukratko, da, "ne-nativni" je sa stajališta korištenih razvojnih alata (ne od Applea, Googlea). Ali aplikacija može biti potpuno nativna u smislu pristupa API-jima sustava i pružiti potpuno nativni izgled i dojam. I prelazimo na sljedeći mit.

Mit 3. Štaka na štaku

Ovdje je vrijedno razumjeti da se izvorni API-ji prema zadanim postavkama ne smatraju štakama (iako ovdje postoje različita mišljenja), tako da je sva ogorčenost usmjerena na međuplatformski dio. Očito, okruženje za izvršavanje (na primjer, WebView, JavaScript motor ili Mono) također je teško nazvati štakom - zrela zrela rješenja s dugom poviješću.

Čini se da je ključno kako se cross-platformski dio integrira s nativnim. Da bismo bolje razumjeli kako funkcioniraju različiti okviri, koristeći primjer PhoneGap-a, Xamarina, Qt-a i React Native-a, pogledat ćemo one mehanizme operativnog sustava koji se koriste za povezivanje međuplatformskih i “nativnih” dijelova.

Počet ćemo s PhoneGap-om. Ispod je arhitektura najviše razine aplikacije koja se temelji na ovom okviru.



Aplikacija na PhoneGap-u zapravo je izvorna aplikacija koja prikazuje WebView kao jedinu kontrolu korisničkog sučelja. Kroz njega dolazi do interakcije s izvornim dijelom. Svi standardni web-prikazi u iOS-u, Androidu i Windows UWP-u podržavaju mogućnost dodavanja vlastitih izvornih rukovatelja za JS svojstva i metode. U isto vrijeme, JS kod živi u vlastitom izoliranom okruženju i ne zna ništa o izvornom dijelu - jednostavno povlači potrebne JS metode ili mijenja potrebna JS svojstva. Sve je unutar standardnog web DOM-a, kojem se jednostavno dodaju novi elementi povezani s izvornom implementacijom.



Prilikom izrade aplikacija u React Nativeu, programer će gotovo uvijek morati implementirati nativni dio u Objective-C, Javi ili C#, a upravljanje samom nativnom aplikacijom dolazi iz JavaScripta. Zapravo, JavaScript mehanizam je WebView element koji je dostupan zasebno. Interakcija se odvija kroz isti JS most kao u slučaju PhoneGap-a. Međutim, u React Native, JS kod ne kontrolira web DOM stablo, već izvornu aplikaciju.

Imajte na umu da se zbog ograničenja iOS-a (ne postoji način za implementaciju JIT-a), JavaScript kôd tumači u hodu, a ne kompilira. Općenito, to nema značajan utjecaj na performanse u stvarnim aplikacijama, ali vrijedi imati na umu.

Sada pogledajmo klasične Xamarin.iOS i Xamarin.Android, budući da je Xamarin.Forms (koji podržava Windows UWP) nadskup iznad njih.



Xamarin koristi biblioteku Mono za interakciju s ciljnim operativnim sustavom, što vam omogućuje pozivanje izvornog koda pomoću mehanizma P/Invoke. Također se koristi za komunikaciju s izvornim API-jima u iOS-u/Androidu. To jest, za sve javne izvorne API metode, omoti se stvaraju u C#, koji zauzvrat pozivaju sistemske API-je. Na ovaj način možete pristupiti svim sistemskim API-jima iz vaše Xamarin aplikacije.

I na kraju, pogledajmo Qt, budući da ima puno pitanja o njemu od strane iskusnih programera.



Qt je "stvar za sebe", to ima i prednosti i ograničenja. Qt biblioteke jednostavno se povezuju na C++ sustav API-ja koji se nalaze na svim operativnim sustavima. Za renderiranje korisničkog sučelja koriste se mehanizmi niske razine, ali vlastiti grafički mehanizam podržava izvorni stil. U ovom slučaju, na Androidu morate pristupiti Java API-ju preko posebnog mosta (JNI most), a za Windows UWP koristite Open GL ES pretvarač poziva u DirectX, budući da Open GL nije dostupan za UWP.

Ukratko: svi međuplatformski okviri koriste standardne izvorne mogućnosti operativnih sustava, zreli su i kreirani od strane iskusnih timova i zajednice otvorenog koda uz podršku divova IT industrije. I konačno, vrijeme je za "najjači" argument.

Mit 4. Sporo

Važan adut koji ljudi vole koristiti u sporovima oko međuplatformskih okvira je niska izvedba. Opet, ovisi s čime uspoređivati ​​i koje papige računati.

Podsjetimo se da je posebnost višeplatformskih aplikacija paralelno postojanje dva svijeta povezana mostom:

  • PhoneGap: HTML/JS i izvorna Java / Objective-C / C#;
  • React Native: JS i Native Java / Objective-C / C#;
  • Xamarin: Mono i izvorna Java/Objective-C;
  • Qt: C++ i izvorna Java / Objective-C.

Stoga, kada se uspoređuju performanse, treba uzeti u obzir brzinu rada:

  • višeplatformski dio;
  • zavičajni dio;
  • most.

Ako u tražilicu upišete, na primjer, react native vs swift performance, možete pogledati mnogo različitih testova, a mnogi od njih primjećuju da izvedba naglo pada aktivnom upotrebom mosta, uključujući aktivnu manipulaciju korisničkog sučelja iz među- kod platforme. Za Xamarin situacija izgleda isto - višeplatformski dio je vrlo brz i usporediv s nativnim u obradi podataka, ali kod korištenja mosta performanse mogu pasti. Qt općenito radi na razini C++, što je samo po sebi brzo. Ako uzmemo u obzir rješenja koja se temelje na PhoneGapu, tada će izvedba uvelike ovisiti o WebViewu, ali ipak ne biste trebali aktivno mijenjati korisničko sučelje u JavaScript kodu ili provoditi znanstvene izračune.

Polako? Da, mogući su padovi performansi zbog neprikladne interakcije s operativnim sustavom kroz most. Međutim, sami međuplatformski svjetovi jednako su brzi kao i izvorni.

Gdje započinjete jutro? Prije su ljudi za doručkom voljeli čitati najnovije novine iz kojih su saznavali najnovije vijesti, događaje u svijetu, pronalazili oglase i čitali viceve. No, svijetla znanstveno-fantastična budućnost već je stigla, novine su zamijenili pametni telefoni i tableti, a rubrika šala evoluirala je u cijelu aplikaciju. Iz aplikacija doznajemo vremensku prognozu, tečajeve, vijesti, vidimo gdje su prometne gužve, pratimo aktivnosti naših omiljenih umjetnika, listamo plakate i tako dalje. Čvrsto su ušli u život modernog čovjeka. A suvremeni se čovjek često obvezuje razvijati ih. I često se dogodi da nema pojma da postoje native aplikacije, a postoje hibridne i web aplikacije, ne zna kako ih razlikovati i koja vrsta više odgovara konceptu njegovog projekta.

Danas ćemo razgovarati o nativnim i hibridnim aplikacijama s Denisom Altukhovim, Android programerom u Anadei.

Bok Denis!
Zdravo!

Recite mi kao profesionalac: koja je razlika između nativnih i hibridnih aplikacija?
Pa, pogledajte: nativni su stvoreni za određenu platformu, bilo da je to Android, iOS ili Windows. Napisani su na izvornim jezicima - Java u slučaju Androida i Objective C u slučaju iOS-a. Preuzeto isključivo iz službenih trgovina.

Sviđa vam se PlayMarket?
Da, za nas su to PlayMarket i AppStore za Apple. Instalacija i distribucija se vrši preko ovih trgovina. Otvara se kao zasebna aplikacija i ima svoje prozore. Non-native, napisan u JavaScriptu, u biti je aplikacija koja se otvara u pregledniku i ima neku vrstu mobilnog izgleda.

Je li to u biti web aplikacija?
Da. A prednost mu je što je višeplatformski - pišete za sve platforme odjednom, Windows, Android i iPhone ili što već otvori. Ali ovdje je nametnuto takvo ograničenje da nećete moći pristupiti mnogim tehničkim funkcijama koje klijent zahtijeva. Na primjer, želi aktivan rad s kamerom - to ne možete učiniti u stranom jeziku. Ne možete napraviti dizajn pomoću vodiča koji su dostupni za iOS i Android.

Može li se hibridna aplikacija drugačije prikazivati ​​u različitim preglednicima?
Može "lebdjeti", ali globalno će sve izgledati isto. Ali, na primjer, ako je osoba navikla koristiti Android, onda će očekivati ​​da će vidjeti neke standardne "Android" stvari. A kada aplikacija preglednika nije postavljena onako kako očekujete, to je, iskreno govoreći, neugodno.

Sve velike aplikacije uglavnom su izvorne. Zašto?
Nepostojanje bilo kakvih ograničenja glavni je razlog. Možete pristupiti svim funkcijama koje vam pruža operativni sustav. Takva je aplikacija fleksibilnija i ima puno bolji vijek trajanja baterije zahvaljujući ispravnoj arhitekturi materinjeg jezika. Operativni sustav sam gleda vašu aplikaciju i dogovara pravilan rad s baterijom, ekranom i tako dalje. Bit će puno teže implementirati isti rad s kartama u hibridnoj aplikaciji bez korištenja izvornih alata Googlea i Applea.

Jeste li se u svojoj praksi susreli s hibridnim primjenama?
Da. Primjerice, prije godinu dana pojavio se projekt koji je radio s kartama - bio je napisan u JavaScriptu, bilo ga je teško pokrenuti u posebnom studiju, sam projekt je bio pokvaren. Nekako sam ga uspio pokrenuti samo na iPhone emulatoru!

O moj Bože!
I to zato da se barem nešto vidi! I bilo je prilično teško razumjeti što se tamo događa. Na kraju je kupac došao do zaključka da je umjesto jedne hibridne naručio dvije native aplikacije – za iOS i za Android.

Znači samo je gubio vrijeme?
Da. Ali ne možete ga kriviti za ovo - hibridne aplikacije su i jeftinije i brže se razvijaju. Pa izbor developera je puno širi - stručnjak za mobilne platforme više nije potreban, dovoljno je obratiti se front-end developeru koji adekvatno vlada JavaScriptom. Poznavajući sintaksu jezika, moći će dovršiti narudžbu, ali bez dubokog poznavanja platforme može puno toga propustiti i razina aplikacije bit će niska.

Jesu li zbog toga nenativne aplikacije često loše kvalitete?
Da - oni se "sruše" ili ne rade ispravno jer je netko došao izvana. Još jedan problematičan aspekt “hibrida” je organizacija obavijesti. Možda te usluge tamo nekako rade, ali, na primjer, sada radimo na društvenoj aplikaciji za dijeljenje fotografija, a tamo su obavijesti u iOS-u i Androidu izgrađene potpuno drugačije. Evo vam značajne razlike. Kako će izgledati obavijesti u web aplikaciji na najavljene tri platforme (iOS, Android, Windows), gdje svaka ima svoje individualne karakteristike... ali tko zna?

Što je sa sigurnošću?
Tu gube i hibridi. Apk datoteku možete preuzeti samo s jednog mjesta – iz trgovine. Osim toga, prije nego što objavite aplikaciju pomoću standardnih alata, imate priliku sve šifrirati, sakriti implementaciju i tako dalje. Osim enkripcije, koristi se još jedna stvar koja se zove proguard - razbija poveznice i briše imena. Non-native nema ništa od ovoga, što znači da ga bilo tko može rastaviti, ukrasti vaš kod, preuzeti s nekog drugog mjesta.

Odnosno, sada su hibridne aplikacije još jako, jako daleko od nativnih?
Naravno. Imaju smisla ako razvijate nešto vrlo jednostavno, općenito, ako je budžet nizak, a rokovi kratki. Nešto što ne zahtijeva svu snagu uređaja i nije vezano uz hardver. Ako je potrebna sva funkcionalnost, onda nativni operativni sustavi Googlea i Applea već imaju ugrađeno cijelo brdo metoda i načina rada s kamerom, kartama, bluetoothom i drugim stvarima. I naravno bit će bolji i kvalitetniji od ponovno izumljenog bicikla nekih programera trećih strana.

Apsolutno se slažem s tobom. Hvala što ste odvojili vrijeme za razgovor!
Molim.

Rezimirajmo razgovor s Denisom:

  • ako vam je potrebna velika brzina i vaša će aplikacija izravno koristiti hardver (kamera, RAM, video čip, bluetooth, wi-fi, zaslon itd.) uređaja - razvijte izvornu aplikaciju;
  • ako ste zainteresirani za visoku razinu sigurnosti, razvijte izvornu aplikaciju;
  • ako radite na stvarno velikom projektu, razvijte izvornu aplikaciju;
  • ako trebate nešto vrlo jednostavno, a vaš projekt ne treba gore navedene točke, tada možete proći s hibridnom aplikacijom.

Hibridni i nativni razvoj: usporedivi?


Hibridne aplikacije ili native (od engleskog native - izvorni)? Ovo je jedno od najvažnijih pitanja koje kupac softvera ima kada treba objaviti novu aplikaciju za potrošačku upotrebu.

Počnimo s definiranjem svakog od njih. Hibridna aplikacija, kako zvuči, kombinira elemente izvornih (aplikacija radi bez ikakve vanjske podrške) i web (aplikacija radi pomoću preglednika i obično je napisana u HTML5) aplikacija. Aplikacija posuđuje međusobno kompatibilne web tehnologije kao što su HTML5, CSS i Javascript i koristi dio vlastitog koda kako bi bolje reagirala na korisnički uređaj. Hibridne aplikacije smještene su unutar vlastite aplikacije gdje se nalazi WebView mobilne platforme (preglednik uključen unutar mobilne aplikacije, da tako kažemo). Jednostavno rečeno, hibridna aplikacija je web stranica koja je upakirana u originalni omot. Primjeri robnih marki koje koriste mashupe uključuju Amazon App Store, Gmail i Yelp.

Izvorna aplikacija razvijena je za određeni mobilni operativni sustav (Objective-C /Swift za iOS ili Java za Android) i optimizirana je da u potpunosti iskoristi sve mogućnosti platforme (kamera, popis kontakata, GPS itd.). U osnovi, izvorna aplikacija implementirana je pomoću vlastitih alata platforme. Primjeri takvih aplikacija uključuju Starbuck, Home Depot, Facebook (iako se neki ne slažu s potonjim).

Pogledajmo neka važna razmatranja koja će vam pomoći pri odabiru između izvorne ili hibridne aplikacije.

Trošak razvoja

Hibridne aplikacije razvijene su za mnoge platforme. Identičan HTML kod može se primijeniti i ponovno koristiti na više od jednog mobilnog operativnog sustava. Jednostavno rečeno, kada naručite izradu hibridne aplikacije, vaš finalni proizvod će odmah raditi na većini modernih pametnih telefona i tableta. Na taj su način vaši troškovi razvoja značajno smanjeni.

Nativni razvoj aplikacija, s druge strane, zahtijeva pisanje potpuno različitih programa za svaki jedinstveni uređaj. Za razliku od hibridnog programiranja, koje posuđuje iz prethodnog iskustva s HTML5 na webu, izvorno se programiranje često smatra specijaliziranijim. Samim time raste trošak, što je nepraktično za male tvrtke i pojedince.

Vrijeme

Hibridne aplikacije često su popularne među tvrtkama koje žele što prije nešto plasirati na masovno tržište. Opet, budući da se isti HTML kod ponovno koristi u različitim operativnim sustavima i samo dio složenog strojnog koda treba biti prepisan, aplikacija će biti spremna za rad na više uređaja što je brže moguće.

Ako vrijeme nije prioritet, onda bi izvorni razvoj mogao biti prava stvar za vas. U suprotnom, hibrid bi bio poželjniji.

nadopune

Hibridni razvoj omogućuje ažuriranje sadržaja izravno s interneta. Ako nema iznenadne promjene u funkcionalnosti, ažuriranja su gotovo neprimjetna. Mnoga od ovih ažuriranja možda se neće instalirati putem App Storea. To čini ispravljanje grešaka i dodavanje ažuriranja učinkovitijim i manje frustrirajućim za korisnika. Međutim, postoji jedno upozorenje povezano s web ažuriranjima.

Može doći do situacije u kojoj aplikacija cilja na značajke mobilne platforme koja više ne radi jer je dodatak zastario. Kada se to dogodi, suočeni ste s dilemom - morate ili ukloniti značajku aplikacije ili unajmiti programera da napiše dodatak. Isti scenarij vrijedi i kada se objave nove verzije mobilne platforme. Ako želite da vaša aplikacija može iskoristiti prednosti novih značajki, ponovno zadužite razvojnog programera da izradi dodatak za hostiranje ažuriranja ili možete pričekati da ga zajednica izradi.

S izvornim razvojem možete ažurirati svoju aplikaciju kako bi se nosila s promjenama platforme i iskoristila prednosti novih značajki bez oslanjanja na stalnu podršku zajednice za svoje dodatke ili bez ovisnosti o ciklusima izdanja zajednice. Za hibridni razvoj potrebno je provesti sveobuhvatno razmatranje pouzdanosti dodataka kako bi se izbjegla neugodna iznenađenja u skoroj budućnosti.

Korisnici

Iz izvorne aplikacije možete jednostavno koristiti široku funkcionalnost svog mobilnog uređaja: kameru, mikrofon, GPS i još mnogo toga. Međutim, krivulja učenja korisnika je mala.

Izvorne aplikacije također se obično razvijaju za korištenje kada nema Wi-Fi ili mogućnosti primanja podataka izvana. Hibrid također može raditi u autonomnom načinu rada, samo ćete imati nešto manje opcija.

Vrijedno je napomenuti da je brzina odgovora, pod ostalim jednakim uvjetima, obično veća za izvorne aplikacije. Ovo često osjeti korisnik u okruženju igranja koje ovisi o grafičkim performansama. To vrijedi čak i kada hibridna aplikacija koristi HTML5 Canvas i WebGL. Razlika u brzini je djelić sekunde - na vama je da odlučite je li kritična ili ne.

Sigurnost

Hibridni kritičari mogu navesti JavaScript injekcije ili SSL ranjivosti, ali ako ste osigurali svoju stranicu, to nije vaša briga. Međutim, hibridne aplikacije imaju više javno dostupnih informacija o znanju, što čini proces obrnutog inženjeringa vjerojatnijim. Oni također ovise o dodacima, koji čine dodatni sloj koda gdje se potencijalno može pronaći sigurnosna ranjivost.

Izvorne aplikacije koriste vlastite sigurnosne značajke bez dodataka. Stoga, za aplikacije koje zahtijevaju visoku razinu sigurnosti, domaći razvoj može biti poželjniji. Za sve ostale potrebe poslovnih aplikacija, hibridni razvoj nudi sasvim zadovoljavajuću razinu sigurnosti.

Kompatibilnost s više platformi

Ovdje je jednostavno - ovdje hibridne aplikacije pobjeđuju: izvorna aplikacija razvijena za iPhone neće raditi na Androidu, i obrnuto.

Zaključak

Tražite li konačan odgovor? Jedino što vam mogu reći jest da je najbolji oblik razvoja aplikacija onaj koji odgovara vašim jedinstvenim potrebama. To će ovisiti o vašim resursima i potrebama vašeg krajnjeg korisnika. Da vas podsjetim da me uvijek možete kontaktirati za razvoj programa; Mogu izraditi aplikaciju u Javi ili C#. Također imam iskustva u razvoju za J2ME i Android.

U ovom ćemo članku usporediti 6 kros-platformskih razvojnih rješenja koja su bila popularna 2016. i pokušati pronaći najbolje rješenje.

Međuplatformski okviri PhoneGap, Xamarin, Unity, Qt i Appcelerator Titanium, Telerik Platforma trenutno zauzimaju 80% tržišta međuplatformskog razvoja za mobilne uređaje.



Donja tablica prikazuje glavne karakteristike svakog okvira:

PhoneGap Xamarin Jedinstvo Qt Appcelerator Titanium Telerik AppBuilder
Jezici JavaScript, HTML5, CSS3 i izvorni jezici (Java, Objective-C, C#) C#, Xaml C#, UnityScript, Boo C++ QML JavaScript, Python, Ruby, PHP .Net, JavaScript, HTML5, Java, PHP
Podržane platforme Android, iOS, Windows Phone, Blackberry, WebOS, Symbian, Bada, Ubuntu, Firefox OS. iOS, Android, Windows Phone i Windows 8/RT, Tizen Android, iOS, Windows Phone, Tizen, PS 4, Xbox One Android, iOS, WinRT, Windows, Symbian, Linux, QNX iOS, Android, BlackBerry, Windows, Tizen, Denso iOS, Android, BlackBerry, Windows, Windows Phone
Cijene PhoneGap cijene

Plaćena verzija: od 9,99 dolara

Besplatna verzija: dostupna

Adobe Creative Cloud članstvo: dostupno

Cijene
Xamarin

Zajednica Xamarin Studio: besplatno

Zajednica Visual Studio: besplatno

Visual Studio Professional: dostupan

Visual Studio Enterprise: dostupan

Cijene
Jedinstvo

Osobno izdanje: besplatno

Profesionalno izdanje: od 75 dolara mjesečno

Cijene
Qt

Postoji besplatna verzija. Plaćene verzije počinju od 79 USD.

Cijene
Appcelerator

Indie: 39 USD mjesečno

Postoji besplatno probno razdoblje

Cijena od 39$ mjesečno

Otvoreni izvor + - - + + -
korisničko sučelje mreža Zavičajni UI platno Zavičajni Zavičajni mreža

PhoneGap

PhoneGap vam omogućuje izradu mobilnih aplikacija korištenjem standardnih web tehnologija (HTML5, JavaScript i CSS3). Kao rezultat toga, to je dovelo do brzog porasta popularnosti okvira; uz njegovu pomoć možete raditi bez razvoja u programskim jezicima kao što su Java za Android, Objective-C za iOS i C#.

PhoneGap Build vam omogućuje izradu nadogradnji za iOS, Android i Windows Phone istovremeno, bez potrebe za instaliranjem bilo kakvih SDK alata (naravno, postoji neka lukavština u ovome - kada se razvija, ipak je bolje izgraditi lokalno, barem na Androidu , prije slanja na testiranje) . Ali što je još važnije, ova vam usluga omogućuje izgradnju iOS-a u oblaku bez potrebe za posjedovanjem Maca.

Instalacija PhoneGapa zahtijeva nevjerojatan napor, pa vam savjetujem da odvojite pola dana... Šalim se. Instalacija za XCode trajala je oko 3 minute - sastojala se od preuzimanja arhive, raspakiranja i instalacije. To je sve.

PhoneGap pruža mogućnost korištenja izvornih funkcija mobilnog uređaja za rad s:

  • brzinomjer,
  • fotoaparat,
  • kompas,
  • kontakti,
  • pohrana datoteka,
  • geolokacija,
  • baza podataka
  • događaji, obavijesti,
  • mediji, itd.
Ako aplikacija ne prijeđe ove točke, tada će brzina razvoja pomoću okvira PhoneGap biti red veličine veća od razvoja izvorne aplikacije za svaku platformu. Video s razvojem aplikacije i opisom PhoneGap-a.

Prednosti:

  • PhoneGap ima jednostavan API koji olakšava početak razvoja za one koji su se susreli s HTML-om, CSS-om i JavaScriptom.
  • Mogućnost korištenja bilo koje postojeće JavaScript biblioteke (JQuery, Prototype, Sencha Touch)
  • Podržava sve mobilne platforme
Mane:
  • Korisničko sučelje se prikazuje pomoću ugrađenog preglednika. Zbog toga je teže dobiti povratne informacije u usporedbi s izvornom aplikacijom.
  • Često se ispostavi da su postojeći dodaci zastarjeli, pa ponekad morate napisati vlastiti.

Xamarin

Xamarin je drugi međuplatformski okvir na našem popisu. Xamarin vam omogućuje stvaranje jedne logike aplikacije koristeći C# i .NET.

Funkcionalno, platforma Xamarin predstavlja niz podplatformi. Ove podplatforme igraju veliku ulogu - preko njih aplikacije mogu usmjeravati zahtjeve do aplikacijskih sučelja na uređajima. Vizualno sučelje je definirano, logika je vezana u C#, a sve će to raditi na Androidu, iOS-u i Windows Phoneu. Video o razvoju aplikacije na Xamarinu.

Prednosti:

  • Velika i rastuća zajednica.
  • Programeri mogu koristiti TestCloud za automatsko testiranje aplikacija.
  • Ako ste već upoznati s C# i .NET, tada nećete morati potrošiti puno vremena na učenje nekoliko novih okvira.
  • Možete ponovno koristiti već napisani kod.
  • Prijave pod različitim sustavima izgledat će vrlo slično.
  • Dinamički izgled za iOS je beskrajno lakši od ručnog korištenja ograničenja.
  • Zahvaljujući CustomRenderers, standardne kontrole lako se nadopunjuju proizvoljnim svojstvima (na primjer, izrada gradijentne ispune za gumbe traje nekoliko minuta, iako ne radi odmah).

Mane:

  • Neke uzorke sučelja teško je implementirati na monodroidu i vrlo teško na monotouchu, jer se zadana rješenja za ovu ili onu značajku oslanjaju na platformske štake koje jednostavno ne rade u Xamarinu.
  • Postoje problemi s mono, monotouch i monodroid platformama. Vaša aplikacija mora ispunjavati specifične zahtjeve stabilnosti.
  • Android stranice ne mogu se postaviti kao dio postojeće aktivnosti/fragmenta.
  • Nisu sve kontrole provedene.

Telerik AppBuilder

Jedan od glavnih razloga za korištenje AppBuildera je potpuni mrežni IDE. Omogućuje vam stvaranje, testiranje pa čak i objavljivanje hibridnih aplikacija s bilo kojeg računala ili mobilnog uređaja, bez potrebe za preuzimanjem.

Mogućnost izrade iOS aplikacija koje rade na Windowsima ili Linuxu još je jedna prednost.

Prednosti:

  • Telerik nudi Visual Studio i Sublime Text dodatke za AppBuilder.
  • AppBuilder nudi brz način uvoza Cordova dodataka.
  • Punopravni mrežni IDE.
  • Jednostavan za korištenje i učenje

Mane:

  • Mala zajednica

Jedinstvo

Višeplatformski alat za razvoj 2D i 3D aplikacija i igara, Unity je također jedan od najboljih alata za demonstraciju 3D sadržaja. Aplikacije izrađene pomoću Unityja rade pod operativnim sustavima Windows, OS X, Linux, Android, Apple iOS, Windows Phone, BlackBerry, kao i na igraćim konzolama Wii, PlayStation 3 i Xbox 360. Video s razvojem mobilne igre na Unityju .

Prednosti:

  • Izvrsna opcija za izradu mobilnih igara za niz uređaja
  • 3D motor daje rezultate visoke kvalitete bez složenih konfiguracija
  • Postoji mnogo dobrih besplatnih dodataka
  • Unity programerima omogućuje izradu vlastitih shadera i promjenu načina na koji Unity renderira igru.

Mane:

  • UI i poteškoća u korištenju za početnike
  • Izvorni kod nije dostupan
  • Unity prevoditelji nisu optimizirani za ARM procesore na nekim mobilnim uređajima.


Qt biblioteka za stvaranje višeplatformskih prozorskih aplikacija u C++. Qt treba smatrati ne toliko skupom klasa za stvaranje GUI-ja, već potpunim skupom alata klasa za sve prilike. Moguće je razvijati programe ne samo u C++, već iu QML jeziku koji je vrlo sličan JavaScriptu. Ovo je posebna grana Qt razvoja usmjerena na brzu izradu prototipa i razvoj mobilnih aplikacija. Video s razvojem Tiled Map Editor-a na Qt-u.


Prednosti:
  • Qt ima mnogo dobrih alata za pomoć u razvoju, na primjer: IDE QT Creator, Qt Designer i profiliranje koda.
  • Ima biblioteke koje sadrže intuitivne API-je za elemente kao što su mreže, animacije i drugo.

Mane:

  • Qt je težak za početnike

Appcelerator Titanium

Titanium je potpuno otvorena platforma za razvoj, implementaciju, distribuciju i konačno pokretanje web aplikacija. Appcelerator Titanium omogućuje izradu mobilnih aplikacija u JavaScriptu, HTML-u i CSS-u.

Možete kreirati moderne, i što je najvažnije, izvorne aplikacije koristeći bilo koji trenutno popularni operativni sustav: Windows, GNU/Linux ili MacOS X.

Aplikacije izrađene pomoću ovog SDK-a bit će doista izvorne. Navigacijski kontroler na Androidu izgledat će poznato i drugačije od onog na iOS-u. Štoviše, ne samo izgled, već i sam kod aplikacije također će biti izvorni. Usput, to vas ne sprječava da napravite klasični WebView i ispunite ga željenim web sadržajem.

Prednosti:

  • JavaScript olakšava razvoj aplikacija bez korištenja jezika platforme.
  • Appcelerator vam omogućuje analitiku u stvarnom vremenu
  • Korištenje izvornog API-ja dat će bolje performanse za aplikacije koje nisu jako velike.

Mane:

  • Postoje kašnjenja prilikom pokretanja aplikacije zbog učitavanja knjižnice
  • Teško je izraditi složene aplikacije jer korištenje JavaScripta ima negativan utjecaj na performanse aplikacije.

React Native

Što je React Native? Ovo je JS framework temeljen na JS-u i Reactu - JS knjižnici za kreiranje UI-a (View level).

Tehnologija je vrlo obećavajuća, ali mlada, pa je platforma ponegdje još sirova. Android verzija se pojavila kasnije, tako da za sada ima više komponenti za iOS aplikacije. Također je vrijedno uzeti u obzir da će, kada se aplikacija implementira, sav JS završiti na uređaju korisnika, tako da ne biste trebali držati tajnu poslovnu logiku na razini prezentacije. Možemo reći da se sada React Native može koristiti za brzi prototip mobilnih verzija vaših web aplikacija. Štoviše, ako je web aplikacija već napisana u ReactJS, tada se brzina prijenosa značajno povećava. Primjer razvoja pomoću React Native.

Prednosti:

  • Unificirani tijek rada i alati: nije važno radite li na Android ili iOS verziji, i dalje koristite iste alate.
  • Iz tog razloga - brzina i lakoća razvoja.
  • Povezivanje naslijeđene aplikacije s JS API-jem i hibridnim aplikacijama: Recimo da već imate gotovu iOS aplikaciju i želite se prebaciti na React Native. Tada možete omotati izvorne komponente tako da budu dostupne u React Native. Tako da možete postupno prijeći na React, a rezultat je hibridna aplikacija - polovica je nativna, a polovica u Reactu, te nekoliko naslijeđenih komponenti u JS API-ju.
Ne postoji savršeno rješenje, svaki okvir ima svoje prednosti i nedostatke. Za vrlo jednostavne aplikacije, preporučio bih korištenje PhoneGapa dok odziv ne postane ključni kriterij. Za ozbiljniji razvoj bolje je koristiti Xamarin, ali i s Xamarinom je bolje kombinirati nativni razvoj za većinu UI elemenata.
reci prijateljima