Dragutin Dumić
Autor:
Dragutin Dumić

Programer za C#.NET programski jezik

Hibridne i nativne mobilne aplikacije

  • 30.11.2017

Budući da internet obiluje člancima o hibridnim i nativnim mobilnim aplikacijama, uglavnom u teorijskom obliku, u ovom članku fokus će biti usmjeren na usporedbu performansi s obzirom na odabranu tehnologiju. Analizirat će se brzina renderiranja korisničkog sučelja, brzina slanja HTTP zahtjeva i obrada rezultata.

Prilikom odabira tehnologije za izradu mobilnih aplikacija često se, kao jedna od mogućnosti, pojavi hibridna aplikacija. Međutim, potrebno je procijeniti hoće li to u konačnici biti lakši put i ako hoće, koji od programskih okvira (eng. Framework) koristiti za izradu takve aplikacije. Ovaj članak namijenjen je upravo tome, da odgovori na takva pitanja.

Što su to hibridne aplikacije

Hibridne aplikacije su aplikacije koje su uglavnom razvijene korištenjem Web tehnologija, a kao rezultat daju Web aplikaciju koja se pokreće kao samostalna aplikacija. U današnje vrijeme su sve popularnija ovakva rješenja budući da gotovo svaki mobilni uređaj može podjednako odrađivati posao Web browsera. To dovodi do činjenice da je aplikaciju moguće pokretati na svim operacijskim sustavima jer ovisi o Web browseru, a ne o operacijskom sustavu.

Motivacija za korištenje hibridnih aplikacija

Reduciranje broja ljudi, skraćivanje rokova isporuke te jednostavno održavanje samo su neke od mogućnosti kojima hibridne aplikacije mogu uvelike smanjiti troškove na projektu. Nakon ovakvih argumenata prirodno se nameće pitanje „Čemu onda nativne aplikacije?". Odgovor leži u činjenici da, kao što to obično i bude, nije sve tako crno-bijelo. U većini slučajeva se zbog ograničenja programskog okvira može dogoditi da se neke stvari ne mogu implementirati, a rizik se nije prepoznao na vrijeme. Također, novom verzijom operacijskog sustava potencijalno se moraju ažurirati svi moduli aplikacije te je potrebno izbaciti ažuriranu verziju aplikacije koja nema ni jednu novu funkcionalnost (eng. Feature) što nije najbolja praksa za mobilne aplikacije. 
Osim toga, postoji još cijeli niz argumenata koji će poduprijeti odluku o odabiru nativne aplikacije, a možda za korisnika i najvažnije su korisničko sučelje (eng. User interface) i brzina izvršavanja. Iako je dosta napora uloženo u hibridne aplikacije na polju user interface-a, i dalje se po samom ponašanju sučelja može prepoznati radi li se o nativnoj ili hibridnoj aplikaciji. O svemu tome više pročitajte u nastavku.

Programski okviri za hibridne mobilne aplikacije

Framework Pros Cons
Xamarin

  • Performanse
  • Nativan UX
  • Jednostavno za održavanje

  • Limitiran pristup Open Source bibliotekama
  • Community
  • Nije za aplikacije s naprednijom grafikom
  • Veličina aplikacije
PhoneGap
  • Veliki izbor biblioteka
  • Brza izrada prototipa
  • Loše performanse
  • Manjak UI widgeta
  • Dokumentacija
Intel XDK
  • HTML, CSS, JS mobile i Cordova
  • Responsivan dizajn
  • Lagana provjera na različitim uređajima kroz XDK emulate tab
  • Performanse
  • Platform-specific featurei
  • Limitirane funkcionalnosti zbog security modela
  • Community
Ionic
  • Rad s predefiniranim komponentama
  • Dobar community
  • Zahtjeva dobro poznavanje AngularJS-a
Framework7
  • Jednostavan
  • Temeljen na HTML, CSS i JS
  • Dobre performanse
  • PhoneGap/Cordova  builder nije uključen
Appcelerator Titanium
  • Performanse
  • Native UI komponente
  • Lokalno upravljanje SDK
  • Normalizacija UI kroz platforme
Mobile Angular UI
  • Lagan i "ogoljen" Angular
  • Dokumentacija
  • Nedovoljno zreo
  • Community
Onsen UI
  • Rad s predefiniranim komponentama
  • Odlična dokumentacija
  • PhoneGap/Cordova builder nije uključen
  • Podrška za Material Design
Sencha Touch
  • MVC arhitektura
  • Nativni paketi preko Sencha SDK
  • Performanse
  • Pisanje vlastitih proširenja za pristup dodatnim nativnim API-ima
Kendo UI
  • Animacije
  • Brzina
  • Dokumentacija
  • Kombinacija jQuery i AngularJS
  • Komercijalan je
React Native
  • Performanse bliske nativnim
  • Veliki Community
  • Krivulja učenja

Ocjena performansi hibridnih aplikacija naspram nativnih

Prema Mohammadi Kho'i F. i Jahid J., koji su u svom istraživanju postavili dosta interesantnih pitanja, valja izdvojiti neke. Prvo je bilo vezano za odabir pristupa izrade mobilnih aplikacija, a rezultat je vidljiv u grafikonu ispod.

Na pitanje o korištenju hibridnih tehnologija došli su do rezultata, izraženim u postocima, prikazanim u grafikonu ispod.

Kao razlozi odabira gore nabrojanih tehnologije najčešće se spominju:

  • Jednostavnost razvoja
  • Mnoštvo funkcionalnosti
  • UI-dizajn
  • Jednostavnost testiranja

Za kraj valja izdvojiti još neke od njihovih rezultata ispitivanja kao:

  • Da li se nativne aplikacije ponašaju jednako kao hibridne?

Nativne aplikacije se ponašaju puno bolje u kontekstu performansi jer npr. GPS i Map feature-i zahtijevaju pristup specifičnom hardveru.

  • Da li nativne i hibridne aplikacije podržavaju Geocoder?

Za razliku od hibridnih aplikacija, nativne aplikacije podržavaju Geocoder. Za hibridne aplikacije je potrebno instalirati razne pluginove.

  • Da li sve platforme podržavaju razmjenu podataka između activity-a?

Hibridne, kao i nativne, aplikacije podržavaju ovu funkcionalnost.

  • Da li sve platforme imaju isto ponašanje kod Multi-touch?

Kod multi-touch feature-a nativne aplikacije su prikladnije od hibridnih jer hibridne aplikacije moraju slati zahtjev prema nativnom kontejneru, što, jasno, zahtjeva određeno vrijeme za obradu.

  • Da li sve platforme podržavaju 3D-touch?

Nativne aplikacije podržavaju 3D-touch, dok hibridne aplikacije ovise o pluginovima.

Performanse
Geocoder (pluginovi)
Razmjena podataka između activity-a
Multi-touch
3D-touch (pluginovi)
Nativne Hibridne

Što su nativne mobilne aplikacije

Nativne aplikacije su one mobilne aplikacije pisane u programskim jezicima specifičnim za pojedinu platformu. Na tablici 1 vidljivi su programski jezici specifični za pojedinu platformu.

Platforma Programski jezik
Android Java
iOS

Objective-C

Swift

Windows C#

Glavna prednost izrade nativnih aplikacija su performanse. Osim toga, kod nativnih aplikacija omogućeno je lakše upravljanje događajima u aplikaciji te korištenje nativnih komponenti i direktan pristup OS-ovim API-ima, što je prikazano na slici 1.

layers
Slika 1:Slojevi mobilnih aplikacija, dostupno na "aplikacijski slojevi", zadnji pristup 05.09.2017

Razvoj pametnih telefona je otišao toliko daleko da neki od današnjih primjeraka imaju jače procesore, više RAM-a te jače grafičke kartice od nekadašnjih "zmajeva" od računala. Stoga je brzina kao glavna prednost nativnih aplikacija, po nekim navodima, gotovo nestala. Na takvim telefonima se i dalje osjeti kako aplikacija nije nativna, navigacija nije fluidna, obrada traje duže i slično. Prilikom odabira tehnologija treba voditi računa i o korisnicima koji nemaju najmodernije pametne telefone te nemaju instaliranu najnoviju verziju operacijskog sustava. Takvi korisnici nisu u mogućnosti uopće pokrenuti aplikaciju.
Iako bi razvoj nativne aplikacije bilo sigurnije rješenje, hibridne aplikacije itekako znaju biti isplative. Ukoliko bi hibridna aplikacija zadovoljavala sve potrebe koje su definirane tada je, jasno, bolje pristupiti razvoju takve aplikacije. Do problema dolazi ako tijekom razvoja dođe takav korisnički zahtjev kakav ne podržava neka hibridna aplikacija, ili rješenje koje postoji ima nekakvu grešku u radu. Tada razvoj takve aplikacije postaje dosta skup.

Test performansi

Za testiranje performansi napravljena je hibridna aplikacija u Xamarin-u (4.7.10.22), te nativna verzija iste za Android. Valja napomenuti kako je za testiranje performansi korišten Android Nexus 4 API 24 emulator, a serveru se pristupalo preko VPN-a.

Brzina slanja HTTP zahtjeva i obrada rezultata

Kako bi se testirala sposobnost kreiranja HTTP zahtjeva i obrada rezultata pripremljen je API koji vraća JSON, a moguće ga je pogledati ovdje. Za Android nativnu aplikaciju, vrijeme potrebno za dohvat odgovora i generiranje objekta je prosječno 350 milisekundi, a kod je dostupan ovdje. Kod Android hibridne aplikacije vrijeme za obradu zahtjeva iznosilo je 2700 milisekundi u prosjeku, a kod je dostupan ovdje. Ukoliko bi se veličina JSON objekta udvostručila, tada bi nativna aplikacija obradila zahtjev za prosječno 470 milisekunde, a hibridna za 2954 milisekunde.

Brzina renderiranja korisničkog sučelja

Za renderiranje korisničkog sučelja korišten je odgovor iz prethodnog naslova, na temelju kojeg su kreirani elementi na korisničkom sučelju. Vrijeme potrebno da se kreiraju elementi za nativnu Android aplikaciju iznosi oko 380 milisekundi, dok je za hibridnu aplikaciju, u prosjeku, bilo potrebno 3390 milisekundi. Na listi za prikaz se ispisivalo samo ime i prezime.

Zaključak

Na temelju istraživanja donesen je zaključak da je istina zapravo negdje u sredini. Ne postoji nikakva jednadžba ili dokaz da je bolje koristiti hibridne ili nativne aplikacije. Sve ovisi o zahtjevima. Ovo bi trebala biti motivacija da se prilikom odabira tehnologije dobro analizira je li potrebna hibridna ili nativna aplikacija te koji programski okvir, ukoliko je riječ o hibridnoj, u potpunosti ili bar u najvećoj mjeri, odgovara zahtjevima. Ako postoji nedoumica oko odabira hibridne ili nativne aplikacije sigurnije je odabrati nativnu. U početku će možda izgledati da su troškovi projekta nepotrebno povećani zbog razvoja dviju aplikacija. S druge strane, dugoročno gledano moguće je da će se potrošiti puno vise na "natjeravanje" hibridne aplikacije da dobije ponašanje nativne i to nativno ponašanje s obzirom na sve platforme.

Popularne teme
.NET ABAP ADFS Agile Always On Anemic Model Angular automatsko generiranje dokumnetacije Azure Backbone benchmark BI BI projekti blog Bootstrap building people business inteligence Business Intelligence Change Chrome CI CITCON Claims compile Continuous Delivery continuous deployment Continuous Integration CSR d3js data data visualization Data visualization alati DDD dekompozicija dependency injection development dinamička forma dinamički parametri dinamički query distribuirani razvoj dokumentacija Domain-Driven design DOP društvena odgovornost edge-based video analytics Eliminating waste enkapsulacija enterprise razvoj softvera ERP ETL Excel FIORI Frontend funkionalna dokumentacija game Geopackage GPKG GIS Git Groovy heat map HICCUPS Hichert HTML IBCS interoperability invision IoT IPSO izvještavanje java JavaFX Javascript Jazz Build Engine JBE Jenkins jquery jqueryui jsfiddle JVM Kaizen Kanban king KING ICT Kingovci Knockout kvaliteta lambde leadership Lean legacy code M language Management Maven Metodologija microservices Microsoft mobile Mobility mockups moć monday game NetWeaver network nodejs oblikovni obrasci OGC OKR open source optimizacija organizacija organizacijska struktura OutOfMemoryError outsourcing overengineering paginacija Performance performanse PERT PMI PMP; Agile; Project management; Scrum; KING ICT; razvoj; metodologija podatkovni skup poslovna analiza pouzdanost Power BI Power Map Power Pivot Power Query Power View pretraga proces procjena Product Owner programming proizvod Project manager projektni plan radar Rational Team Concert razvoj tima refaktoriranje Release resize responsive charts REST retrospektiva Rich-Domain model Roko Roić rolling wave planning RTC SAP scale scatterplot chart Scrum scrum team scrum tim service boundaries single responsibility principle Single Sign-On smart metering SoapUI social responsibility softver Software software prototyping Software Testing Club Spring Boot SQL standard sustav videonadzora svg swagger tdd Team team building team development Team Foundation Server tech tehnologije terminski plan Testing tim timesheet timovi Toggl.com touch transakcijski nadzor tražilica underengineering unit testing Uspjeh Visual Studio vodstvo vodstvo leadership moć društvena odgovornost DOP social responsibility CSR vođenje projekata WBS Web workshops Zagreb STC

PRIJAVA NA NEWSLETTER

Najnovije novosti iz ICT svijeta