sveučilište j.j. strossmayera u osijeku odjel za matematiku...
TRANSCRIPT
Sveučilište J.J. Strossmayera u Osijeku Odjel za matematiku
Sveučilišni diplomski studij matematike, smjer: Matematika i računarstvo
Danilo Šormaz Razvoj mobilnih aplikacija
Seminarski rad
Kolegij : Softversko inženjerstvo
Nositelj kolegija : doc. dr. sc. Alfonzo Baumgartner
Osijek, 2018
2
Sadržaj 1. Uvod ............................................................................................................................................... 3
2. Nativni vs Hibridni razvoj aplikacija ................................................................................................ 3
3. Platforme mobilnih aplikacija ........................................................................................................ 7
3.1. Android ................................................................................................................................... 7
3.1.1. Razvoj Android mobilnih aplikacija ..................................................................................... 9
3.2. iOS ........................................................................................................................................ 10
3.2.1. Razvoj iOS aplikacija ......................................................................................................... 11
3.3. Windows Phone.................................................................................................................... 12
3.3.1. Razvoj Windows Phone aplikacija ..................................................................................... 12
4. Zaključak ....................................................................................................................................... 13
5. Literatura ...................................................................................................................................... 14
3
1. Uvod
U ovom seminaru će biti obrađena tema razvoja mobilnih aplikacija, grane softvera koja se
najbrže razvija. U prvom dijelu ćemo izvršiti podjelu razvoja aplikacija na nativni i hibridni razvoj.
Navest ćemo prednosti i mane razvoja aplikacije na jedan odnosno drugi način. Usporedit ćemo ta
dva razvoja, navesti primjere nativnih i hibridnih aplikacija, te primjere frameworka za hibridni razvoj.
U nastavku ćemo opisati tri najpopularnije mobilne platforme te njihove razvojne okoline.
2. Nativni vs Hibridni razvoj aplikacija
Nativna aplikacija je softverski proizvod razvijen za točno određenu platformu ili uređaj. To je
zapravo najčešći oblik mobilnih aplikacija. Instalira se izravno na uređaj najčešće putem nekakvog
online marketa kao što je Google Play. Kao što i samo ime govori nativne aplikacije koriste nativne
programske jezike za svaku platformu; npr Objective - C ili Swift za iOS i Javu za Android .
Prednosti nativnog razvoja aplikacija:
User Experience - dugogodišnjem korisniku jedne platforme ta platforma je jako dobro
poznata, pa ima problema s korištenjem aplikacije koja izgleda i ponaša se prema
konvencijama druge platforme. Zato će nativne aplikacije biti intuitivnije budući da svaka
platforma ima svoj specifičan UI.
Brzina i performanse - budući je aplikacija razvijana i optimiziriana za točno određenu
platformu (bio to iOS ili Android) to će se odraziti na boljoj učinkovitosti. Uz nativni način
razvoja aplikacije sve je unaprijed uzeto u obzir poput memorije i baterije uređaja. Kôd
nativnih aplikacija radi brže, nove funkcionalnosti se lakše integriraju te je sama aplikacija
stabilnija.
Mogućnosti - kada promatramo razlog zašto su Android i iOS nativne aplikacije bolje,
trebamo uzeti u obzir činjenicu da aplikacije imaju potpun pristup kameri, bazi podataka,
geolokaciji i drugim funkcionalnostima uređaja. S hibridnim načinom razvoja postoje
ograničenja prilikom konstrukcije interface-a jer se koristi na više platformi.
Testiranje - testira se samo jedna platforma pa su testovi specifičniji, detaljniji, te je veća
mogućnost da budu uspješniji.
Internetska konekcija najčešće nije potrebna, tj. ovisi o funkcionalnosti.
4
Mane nativnog razvoja aplikacija:
Trošak razvoja aplikacije - potrebno je zasebno razviti aplikaciju za svaki mobilni operativni
sustav, što iziskuje više vremena i novca u razvoju, a i kasnijoj nadogradnji.
Brzina razvoja aplikacije - sav kôd mora biti jedinstven za svaku platformu što će iziskivati više
vremena za razvoj.
Održavanje i evolucija - u ovisnosti o broju platformi i uređaja za koje je aplikacija rađena
toliko ćemo više errora i bugova morati popraviti.
Za razvoj aplikacije je potrebno ili više ljudi koji će moći pokriti razne jezike, ili jedan iskusniji
developer koji mora znati više jezika.
Glavna razlika između nativnih i hibridnih aplikacija dolazi iz procesa razvoja aplikacije. Hibridne
aplikacije se pišu odjednom za sve platforme, tj. kôd je jedinstven, uz neke iznimke. Zapravo hibridna
aplikacija se može opisati kao mješavina nativne aplikacije i web aplikacije. Hibridne aplikacije se
razvijaju pomoću HTML-a, CSS-a i JS-a. Developeri razvijaju jedan bazni kod na kojem se dodatno vrše
manje promjene za različite platforme. Hibridne aplikacije mogu koristiti WebView, aplikaciju koju
možemo zamisliti kao fullscreen web preglednik tj. mogu koristiti nativni wrapper. Zbog toga
možemo reći da su hibridne aplikacije aplikacije koje su razvijene web tehnologijom, a kao rezultat
daju web aplikaciju koja se pokreće kao samostalna aplikacija.
Prednosti hibridnog razvoja aplikacija:
Razvijanje aplikacije je puno jednostavnije budući se izrađuje jedna aplikacija za više
platformi.
Brže razvijanje uz nižu cijenu .
Jedinstvena logika - bez obzira na platformu logičkio dio aplikacije će se ponašati jednako.
Razvijena na web tehnologijama HTML, CSS, JS koje su mnogo jednostavnije za korištenje.
Mane hibridnog razvoja:
User Experience - postizanje dobrog korisničkog iskustva je teško jer prilikom razvijanja
interface mora zadovoljiti potrebe korisnika Androida i iOS-a. Ukoliko aplikacija bude više
izlazila u susret korisnicima Androida, tada će korisnici iOS-a osjetiti poteškoće prilikom
uporabe aplikacije (i obratno).
Performanse - nedovoljno brzo renderiranje interface-a i trzanje efekata animacije kod
starijih verzija OS-a.
5
Programski okviri za hibridne mobilne aplikacije:
Framework Prednosti Mane
Xamarin
Performanse Nativan UX Jednostavno za održavanje
Limitiran pristup open-source bibliotekama Community Nije za aplikacije koje imaju napredniju grafiku Veličina aplikacije
PhoneGap/Cordova
Veliki izbor biblioteka Brza izrada prototipa
Loše performanse Manjak UI widgeta
Intel XDK
HTML, CSS, JS mobile i Cordova Responzivan dizajn Lagana provjera na različitim uređajima kroz XDK emulate tab
Performanse Limitirane funckionalnosti zbog security modela Community
Ionic
Rad s predefiniranim komponentama Dobar community
Zahtjeva dobro poznavanje Angular JS-a
Framework7
Jednostavan Temeljen na HTML, CSS i JS Dobre performanse
PhoneGap/Cordova builder nije uključen
Kendo UI
Animacije Brzina Dokumentacija
Kombinacija jQuery i Angular JS
Apache Cordova je framework za razvoj mobilnih aplikacija. Ovaj framework omogućuje
developerima da razvijaju aplikaciju koristeći CSS3, HTML5 i JS. On koristi mobilni preglednik tj.
njegov rendering engine za izvršavanje aplikacije. Preko tog enginea je omogućena komunikacija s
operativnim sustavom te nakon uspješne komunikacije se prikazuje UI aplikacije. Postoje dva različita
smjera razvoja Cordova aplikacija:
cross - platform - omogućava da pokrijemo sve željene platforme (Android, iOS, BlackBerry,
Windows Phone), ali nam daje nešto manje funkcionalnosti.
platform - centered - bazira se na dodacima za točno određenu platformu što omogućuje
bolje performanse i više mogućnosti.
Iako smo strogo podijelili razvoj Cordova aplikacija, moguće je da se ova dva načina kombiniraju. Npr.
možemo napisati većinu aplikacije tako da koristimo prvi pristup, a zatim taj dio iskoristiti i
određenim aplikacijama dodati biblioteke za iOS, Android itd.
Cordova trenutno podržava razvijanje aplikacija za: Apple iOS, Bada, BlackBerry, FirefoxOS, Google
Android, Microsoft Windows Phone, Nokia Symbian OS, Tizen i Ubuntu Touch.
6
Cordova pruža API za pristup sustavskim funkcijama uređaja, tako da iz web aplikacije možemo
aktivirati kameru, izbaciti notifikaciju, očitati geografske koordinate i dr. Ove funkcionalnosti su
dostupne nakon instaliranja odgovarajućeg Cordova plugina:
Battery Status
Camera
Console
Contacts
Device
File
Geolocation
Media
Vibration
itd.
Da bi odgovorili na pitanje kada koristiti nativni razvoj aplikacije, a kada hibridni, moramo znati što je cilj našeg projekta i što naš projekt zahtjeva.
Izabrat ćemo nativni razvoj ukoliko :
Aplikacija treba biti u mogućnosti da radi i offline i online
Želimo što responzivniju aplikaciju
Aplikacija zahtjeva pristup servisima i resursima uređaja
Želimo što funkcionalniju aplikaciju
Želimo bolji UX
Želimo stabilnost i brzinu
Izabrat ćemo hibridni razvoj ukoliko :
Offline način rada nije važan
Aplikacija ne sadrži zahtjevne obrade podataka ili kompleksne animacije
Imamo web aplikaciju i želimo u što kraćem roku uz minimalne troškove izraditi mobilnu
aplikaciju
Primjeri hibridnih aplikacija: Gmail, Twitter, Uber, Amazon Appstore...
Primjer nativnih aplikacija: Pokemon GO, Google play, App Store, Facebook, Kalkulator...
7
3. Platforme mobilnih aplikacija
3.1. Android
Android je mobilni operacijski sustav razvijen od strane Google-a. Tvrtku Android su osnovali
Andy Rubin, Rich Miner, Nick Sears i Chris White 2003. godine. Prvobitna namjera tvrke je bilo
razvijanje naprednijeg operacijskog sustava za digitalne kamere. Međutim, tvrtka je shvatila kako
tržište kamera nije dovoljno veliko kako bi se postigao veći uspjeh , te se prebacuju na razvoj
operacijskog sustava za mobilne telefone. Google 2005. godine kupuje tvrtku Android, a bitniji
zaposlenici, uključujući Rubina, Minera i White-a, se pridružuju Googleu kao dio akvizicije. U Googleu,
tim vođen Rubinom razvija platformu za mobilne uređaje na Linux kernelu. 2006. godine predstavlja
prototip „Sooner“ , koji je imao sličnosti s BlackBerry mobilnim uređajem. Uređaj nije imao zaslon
osjetljiv na dodir, imao je QWERTY fizičku tipkovnicu. Izlaskom Appleovog iPhone-a 2007. godine,
Android je morao unaprijediti svoj mobilni uređaj, kako bi ostao konkurentan na budućem tržištu.
Slika 1: Prototip Sooner
2007. godine osnovana je Open Handset Alliance tj. grupa koja se zalagala za open source
budućnost mobilne tehnologije, a koju su sačinjavali Google, HTC, Motorola, Samsung, Sprint, T-
Mobile, Qualcomm i Texas Instruments. Ubrzo grupacija dobija još dva open source konkurenta:
Symbian Foundation i LiMo Foundation. Open Handset Alliance je iste godine predstavila svoj prvi
projekt - Android OS.
2008. godine pojavljuje se prvi komercijalni uređaj na Android sustavu - HTC Dream, poznat i kao
T - Mobile G1. Uređaj je bio pokretan Androidom 1.5 kodnog imena „Cupcake“. Verzije Androida su
dobivale imena po slasticama i to abecednim redom, pa tako imamo „Cupcake“ , „Donut“ , „Eclair“
itd. Jednom prilikom Google je pokušao na svoj način objasniti zašto daju takva imena verzijama
8
Androida - „Since these devices make our lives so sweet, each Android version is named after a
dessert“.
Kodno ime Broj verzije Godina izlaska
Bez kodnog imena 1.0 2008
„Petit Four“ 1.1 2009
„Cupcake“ 1.5 2009
„Donut“ 1.6 2009
„Eclair“ 2.0 - 2.1 2009
„Froyo“ 2.2 - 2.2.3 2010
„Gingerbreade“ 2.3 - 2.3.7 2010
„Honeycomb“ 3.0 - 3.2.6 2011
„Ice Cream Sandwich“ 4.0 - 4.0.4 2011
„Jelly Bean“ 4.1 - 4.3.1 2012
„KitKat“ 4.4 - 4.4.4 2013
„Lollipop“ 5.0 - 5.1.1 2014
„Marshmallow“ 6.0 - 6.0.1 2015
„Nougat“ 7.0 - 7.1.2 2016
„Oreo“ 8.0 - 8.1 2017
„Android P“ 9 2018 (beta) Slika 2: Verzije Android OS-a
Kako je Apple razvijao operacijski sustav isključivo za svoj uređaj Iphone, tako je i Google
2010. godine predstavio Nexus uređaj koji je specifičan po tome što se na njemu nalazi čisti Android
operacijski sustav - bez dodatnih modifikacija od strane proizvođača samog uređaja.
Slika 3: Verzije Android OS-a
9
3.1.1. Razvoj Android mobilnih aplikacija
Aplikacije koje proširuju funkcionalnost mobilnih uređaja su pisane uz korištenje Android
software develompent alata (SDK) i često uz korištenje Jave kao programskog jezika. Java može biti
kombinirana sa C/C++ programskim jezikom. 2017. godine Google je objavio podršku za razvoj
Android mobilnih aplikacija u programskom jeziku Kotlinu.
SDK omogućuje veći skup razvojnih alata, uključujući debbuger, biblioteke, emulator za mobilni
uređaj baziran na QEMU (Quick Emulator - besplatan open source hypervisor ili monitor virtualne
mašine), dokumentaciju, primjer koda i tutorijale. Prvobitno su developeri koristili Eclipse IDE uz ADT
(Android Development Tools) plugin. Od 2014. godine do danas aplikacije za Android se razvijaju u
Android Studiu (trenutačna verzija je 3.1.2), baziranom na IntelliJ IDEA (Java integrated development
environment).
Android Studio pruža razne mogućnosti prilikom razvoja aplikacija:
fleksibilan Gradle - based build sustav (Gradle je open - source build automation sustav)brz
emulator
jedinstveno okruženje koje omogućuje razvoj za sve Android uređaje
Instant run koji trenutno gura promjene na aktivnu aplikaciju, bez da stvara novi APK
(Application Package Kit)
Template kodovi i integracija s GitHubom koji omogućuju brzu izgradnju uobičajenih dijelova
aplikacije
Sadrži opsežne alate za testiranje aplikacije
Lint alati za praćenje performansa, iskoristivosti, kompatibilnosti verzije itd.
C++ i NDK (skup alata koji omogućavaju implementaciju dijelova aplikacije u nativnom kodu,
koristeći jezike poput C-a i C++-a. Za određene tipove aplikacija, ovo svojstvo može pomoći
prilikom ponovne iskoristivosti određenih kodova i biblioteka napisanih u tim jezicima)
podrška.
Layout Editor - omogućuje drag and drop UI komponente.
Prezentacijski dio aplikacije se piše u XML-u.
Prilikom razvoja aplikacije developeri moraju uzeti u obzir da razvijaju aplikaciju koja će biti
pokretana na različitim uređajima s različitim verzijama Android sustava na sebi. Time razvoj Android
aplikacija zahtjeva više vremena, veću posvećenost detaljima, te iscrpno testiranje na različitim
uređajima i verzijama platforme.
Android nudi različite mogućnosti distribucije aplikacija. Moguće je distribuirati aplikaciju
koristeći mrežnu trgovinu aplikacija Google Play, web stranicu ili slanjem aplikacije korisniku direktno
preko e-maila. Google Play pruža najbolju uslugu distribucije aplikacija budući je na taj način
10
obuhvaćeno najviše potencijalnih korisnika. Kako bi developerima bilo omogućeno da distribuiraju
aplikacije koristeći Google Play, moraju imati Google korisnički račun te moraju uplati iznos u
vrijednost od 25$ (američkih dolara) na ime registracije. Google na stranicama za developere nudi
upute i zadatke koje je potrebno obaviti prije distribucije aplikacije. Developeri dobijaju 70% cijene
aplikacije, dok se s ostalih 30% financiraju distribucijski partneri. Trenutno na Google Playu postoji
3.6 milijuna Android aplikacija.
3.2. iOS
iOS je mobilni operativni sustav kojeg je razvila tvrtke Apple. Prvi uređaj s ovim operativnim
sustavom je bio iPhone. iPhone nije bio prvi uređaj sa zaslonom osjetljivim na dodir, ali je za razliku
od ostalih uređaja imao bolje performanse jer je Apple razvio operacijski sustav specifično samo za
iPhone (za razliku od Androida koji je razvijao OS za različite uređaje). Kasnije je Apple dodatno
proširio iOS na uređaje iPod i iPad.
Za razliku od Androida, iOS je closed source operativni sustav koji pripada obitelji UNIX-oida, a
pisan je u C-u, C++-u, Objective C-u te u Swiftu. Apple razvija i hardver i softver što omogućuje
performanse uređaja na vrlo visokom nivou.
Slika 4: iOS verzije
11
3.2.1. Razvoj iOS aplikacija
Centar razvoja iOS aplikacija je Xcode IDE. Prilikom razvoja aplikacija koristi se Apple hardver i
Apple softver. Logika aplikacija se pisala u Objective C - u, dok danas developeri prelaze sve više na
programski jezik Swift. Međutim dopušteno je i kombiniranje ta dva jezika prilikom izrade aplikacije.
Xcode sadrži većinu potrebnih alata i resursa za razvoj iOS aplikacije, ali za neke detaljnije stvari bit će
potrebni neki dodatni alati.
Xcode komponente :
Assistant Editor - dijeli Xcode editor u dva editora, pri čemu je jedan definiran za primaran
rad, dok drugi automatski prikazuje dokumente koji su korisni za rad na primarnom
dokumentu
Jump Bar - služi za brzi skok do bilo kojeg resursa u projektu
Testing
Schemes
Documentation
iOS Simulator - omogućuje testiranje aplikacije bez samog uređaja
Compilers
Graphical Debugger - debuggiranje direktno u editoru
Interface Builder - integriran u Xcode, omogućuje slaganje korisničkog sučelja bez pisanja
koda.
Iako iOS simulator omogućuje trenutno testiranje aplikacije bez samog uređaja, najbolje je
testirati aplikaciju na stvarnom uređaju.
Aplikacije se distribuiraju putem App Store-a. Proces je jednostavan, ali postoje određena pravila
prilikom objavljivanja aplikacija na App Store-u.
Razvoj aplikacije od samog početka pa do distribucije podjeljen je na 5 faza:
1. Uključivanje u iOS Developer Program
2. Razvoj i testiranje aplikacije
3. Dodavanje aplikacije u iTunes Connect sustav, uređivanje opisa, screenshotova itd.
4. Slanje aplikacije Apple-u na pregled. Ukoliko je aplikacija odbijena vraćamo se na točku 2.
5. Puštanje aplikacije u App Store.
Osnovna developerska licenca je skuplja od developerske licence za Android developere, i iznosi 99$
godišnje. Licenca koja podržava naprednije mogućnosti košta 299$ godišnje. Prema podacima iz 2017
godine App Store je sadržavao 2.2 milijuna aplikacija.
12
3.3. Windows Phone
Windows Phone je familija mobilnog operativnog sustava razvijenog od strane Microsofta. Predviđen
je za smartphone uređaje kao zamjena za Windows Mobile. Prvobitno je 2010. godine izašla verzija
Windows Phone 7 . Za razliku od Windows Mobile-a, u fokusu nisu bili samo poslovni korisnici već
cijela populacija. Windows Phone 8.1 je posljednja verzija ovog operativnog sustava. 2015. godine
Windows Phone je zamjenjen s Windows 10 Mobile. U ovoj verziji OS-a naglasak je bio na integraciji s
Windows 10 OS-om.
Ovaj operativni sustav nikada nije bio konkurent Androidu i iOS-u. Naime, razvoj ovog sustava nema
budućnost. Broj mobilnih aplikacija za ovaj sustav je nedovoljan da bi privukao veći broj korisnika.
Vrlo često su aplikacije nedovoljno razvijene i nestabilne.
3.3.1. Razvoj Windows Phone aplikacija
Razvoj aplikacija za Windows mobilnu platformu moguć je samo na Windows OS-u, u Visual Studiju.
Aplikacije se piše u jednom od .NET programskih jezika: Visual C++, Visual C# ili Visual Basic-u.
Prezentacijski dio aplikacije se piše u XAML-, modificiranoj verziji XML-a.
Universal Windows Platform (UWP) je API izrađen od strane Microsofta. Svrha UWP-a je da omogući
razvijanje univerzalnih aplikacija koje će biti pokretane na Windows 10, Windows 10 Mobile, Xbox
One i HoloLens-u, bez dodatnog uređivanja aplikacije za svaki od prethodno navedenih uređaja.
Podržava razvoj Windows aplikacija koristeći C++, C#, VB.NET, Javascript, HTML i XAML. API je
implementran u C++-u. Naime, UWP je razvijen kao ekstenzija Windows Runtime-a. Windows Phone
8.1 je koristio verziju Windows Runtime-a koja se zvala Windows Phone Runtime. Ona je
omogućavala razvoj aplikacija u C# i VB.NET.
Distribuiranje Windows mobilnih aplikacija je omogućeno putem Windows Store-a. Licenca za
individualne developere iznosi oko 19$, dok za tvrtke iznosi 99$.
13
4. Zaključak
Mobilni telefoni i aplikacije se vrlo brzo razvijaju. Potražnja za raznolikim mobilnim aplikacijama
je svakodnevna, kao i potražnja za aplikacijama koje će biti bolje od trenutnih.
Korisnici koriste i nativne i hibridne aplikacije, i trenutno ne možemo s točnošću tvrditi koje
aplikacije tj. koji pristup razvoju aplikacija je bolji. Sve ovisi o vrsti aplikacije i njenim potrebama. Iako,
možemo reći da postoji doza preferiranja hibridnih aplikacija, zbog jednostavnosti razvoja.
Danas najveći dio tržišta zauzimaju Android i iOS, koji se nastavljaju rapidno razvijati. Nažalost,
Windows ne predstavlja više konkurenciju prethodno navedenim tvrktama. U procesu razvoja
aplikacije moramo obratiti pažnju na pojedina ograničenja i karakteristike platforme. iPhone uređaji
predstavljaju najkvalitetniji omjer hardvera i softvera budući Apple izrađuje i hardver i softver.
U budućnosti mobilne aplikacije će i dalje držati visok nivo popularnosti, te se trenutno stanje na
tržištu mobilnih platformi vjerojatno neće previše mjenjati.
14
5. Literatura
1. https://www.hdonweb.com/mobiteli/nativna-aplikacija-mobilna-web-stranica
2. https://thebhwgroup.com/blog/mobile-app-development-process
3. https://dzone.com/articles/native-vs-hybrid-app-development-1
4. https://searchsoftwarequality.techtarget.com/definition/native-application-native-app
5. https://developer.android.com/docs/
6. https://en.wikipedia.org/wiki/Android_(operating_system)
7. https://en.wikipedia.org/wiki/IOS
8. https://en.wikipedia.org/wiki/Windows_Phone