JavaScript-pohjaisten ohjelmistokehysten suorituskyky alustariippumattomassa mobiilikehityksessä
Nieminen, Mikko Sakari Artonpoika (2016)
Nieminen, Mikko Sakari Artonpoika
2016
Tietotekniikan koulutusohjelma
Tieto- ja sähkötekniikan tiedekunta - Faculty of Computing and Electrical Engineering
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2016-06-08
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tty-201605133980
https://urn.fi/URN:NBN:fi:tty-201605133980
Tiivistelmä
Usean mobiilikäyttöjärjestelmän suosio markkinoilla luo haasteita mobiilisovellusten kehitykseen. Sovelluksesta joudutaan toteuttamaan useampia alustakohtaisia versioita hyödyntäen toisistaan eroavia teknologioita. Tehdyn työn uudelleenhyödynnettävyys on vähäistä, sillä alustojen välillä ei ole yhteistä alustan tukemaa natiiviksi sovellukseksi käännettävää ohjelmointikieltä.
Tässä diplomityössä tutkittiin alustariippumattomien JavaScript-ohjelmointikieleen pohjautuvien Ionic- ja React Native -ohjelmistokehysten suorituskykyä ja testattiin niiden soveltuvuutta vaihtoehdoksi natiiville mobiilisovellukselle. Soveltuvuuden arviointia varten toteutettiin hybridi- ja hybridinatiivisovellukset edellä mainituilla ohjelmistokehyksillä Android-käyttöjärjestelmälle. Testisovelluksia arvioitiin mittaamalla sovelluksen vaatimia resursseja sekä käyttäjätestin avulla. Työssä tutkittiin myös miten sovelluskehittäjä voi toteutustavoillaan vaikuttaa alustariippumattoman sovelluksen suorituskykyyn.
Tutkimuksen mukaan alustariippumattomia ohjelmistokehyksiä on mahdollista hyödyntää natiivisovelluksen sijaan sovellukselle asetetuista vaatimuksista riippuen. Ionic-testisovelluksen resurssien käyttö oli selkeästi hybridinatiivia React Native -sovellusta korkeampaa. Myös käyttäjätesteissä React Native -sovellus suoriutui paremmin, mutta myös Ionic-sovelluksen suorituskyvyn nähtiin olevan riittävä useimmissa tilanteissa.
Alustariippumattomien teknologioiden soveltuvuus mobiilikehitykseen natiivisovellusten kilpailijoiksi ei tämän työn perusteella ole enää kyseenalainen. Oleellinen kysymys toteutustapaa valittaessa on, missä tilanteissa natiivisovellus kykenee tuomaan riittävästi lisäarvoa verrattuna alustariippumattoman ratkaisun tarjoamaan kustannustehokkuuteen. Tämän työn tulosten perusteella natiivisovelluksen toteuttaminen on edelleen perusteltua tilanteissa, joissa sovelluksen käyttöliittymä vaatii ehdotonta suorituskykyä tai sovelluksen ominaisuudet vaativat laitteistolta tukea ominaisuuksiin, joita tarjolla olevat alustariippumattomat toteutukset eivät vielä tue. Lähitulevaisuudessa markkinoilla olevien laitteiden suorituskyvyn parantuessa ja JavaScript-virtuaalikoneiden kehittyessä erot natiivien- ja alustariippumattomien toteutustapojen välillä tulevat todennäköisesti pienenemään alustariippumattomien teknologioiden eduksi.
Tässä diplomityössä tutkittiin alustariippumattomien JavaScript-ohjelmointikieleen pohjautuvien Ionic- ja React Native -ohjelmistokehysten suorituskykyä ja testattiin niiden soveltuvuutta vaihtoehdoksi natiiville mobiilisovellukselle. Soveltuvuuden arviointia varten toteutettiin hybridi- ja hybridinatiivisovellukset edellä mainituilla ohjelmistokehyksillä Android-käyttöjärjestelmälle. Testisovelluksia arvioitiin mittaamalla sovelluksen vaatimia resursseja sekä käyttäjätestin avulla. Työssä tutkittiin myös miten sovelluskehittäjä voi toteutustavoillaan vaikuttaa alustariippumattoman sovelluksen suorituskykyyn.
Tutkimuksen mukaan alustariippumattomia ohjelmistokehyksiä on mahdollista hyödyntää natiivisovelluksen sijaan sovellukselle asetetuista vaatimuksista riippuen. Ionic-testisovelluksen resurssien käyttö oli selkeästi hybridinatiivia React Native -sovellusta korkeampaa. Myös käyttäjätesteissä React Native -sovellus suoriutui paremmin, mutta myös Ionic-sovelluksen suorituskyvyn nähtiin olevan riittävä useimmissa tilanteissa.
Alustariippumattomien teknologioiden soveltuvuus mobiilikehitykseen natiivisovellusten kilpailijoiksi ei tämän työn perusteella ole enää kyseenalainen. Oleellinen kysymys toteutustapaa valittaessa on, missä tilanteissa natiivisovellus kykenee tuomaan riittävästi lisäarvoa verrattuna alustariippumattoman ratkaisun tarjoamaan kustannustehokkuuteen. Tämän työn tulosten perusteella natiivisovelluksen toteuttaminen on edelleen perusteltua tilanteissa, joissa sovelluksen käyttöliittymä vaatii ehdotonta suorituskykyä tai sovelluksen ominaisuudet vaativat laitteistolta tukea ominaisuuksiin, joita tarjolla olevat alustariippumattomat toteutukset eivät vielä tue. Lähitulevaisuudessa markkinoilla olevien laitteiden suorituskyvyn parantuessa ja JavaScript-virtuaalikoneiden kehittyessä erot natiivien- ja alustariippumattomien toteutustapojen välillä tulevat todennäköisesti pienenemään alustariippumattomien teknologioiden eduksi.