Asiantuntija

Mikko Väänänen

Senior mobiilikehittäjä

Mobiilisovelluksen suunnittelun ensimmäinen askel on oikean teknologian valinta

Sovellusten suosio jatkaa kasvuaan ja usein mobiili on asiakkaan käyttöympäristön ensisijainen kanava. Mobiilisovellusten parissa viihdytään ja niitä käytetään niin tiedon etsimiseen, töiden tekemiseen, tuotteiden varaamiseen ja maksamiseen kuin yhteydenpitoon läheisiin ihmisiin ja kiinnostaviin yrityksiin. Ei ihme, että myös uusia mobiilisovellusteknologioita putkahtelee esille ja valinnan vaikeus voi olla suuri.
 

Käytännössä useilla eri toteutustavoilla pääsee vastaaviin lopputuloksiin, joten onko teknologialla oikeasti isoa merkitystä? Lyhyt vastaus: on. Jos valinta on väärä, voivat hallinnointikustannukset nousta pilviin tai pahimmassa tapauksessa asiakaskokemus kärsiä niin paljon, että sovellus jää käyttämättä ja investointi menee hukkaan.

 

Teknologiavalinta riippuu useista eri tekijöistä, mm. ylläpito- ja kehityskustannuksista, markkinassa saatavilla olevasta osaamisesta ja sovelluksessa tarvittavista erityisominaisuuksista. Perinteinen “nopeus, laatu ja hinta” -kolmio hieman eri kärjillä pätee siis tässäkin. Teknologioiden kirjo millä mobiilisovelluksia voidaan toteuttaa on laaja. Sovellusteknologioita voidaan hahmottaa ja luokitella esimerkiksi sen mukaan, kuinka paljon ne hyödyntävät web-tekniikkaa tai natiivikoodia.
 

Natiivit sovellukset

Natiivilla mobiilisovelluksella tarkoitetaan sovellusta, joka käyttää mobiilikäyttöjärjestelmien tarjoamia rajapintoja suoraan niiden kanssa yhteensopivilla kielillä, kuten Objective-C ja Swift (iOS) tai Java ja Kotlin (Android). Tällaisella sovelluksella on pääsy kaikkiin käyttöjärjestelmän tarjoamiin palveluihin. Sovelluksen jakelu tapahtuu pääosin Applen ja Googlen sovelluskauppojen kautta. Nykyään sovelluksen toteuttamista puhtaasti natiivitekniikalla on kuitenkin hankala perustella joitakin poikkeustapauksia lukuun ottamatta, koska saatavilla on parempiakin vaihtoehtoja.

Lue lisää

Web-sovellukset

Web-sovellukset on toteutettu web-standardeihin pohjautuvilla teknologioilla, kuten HTML5, CSS, Javascript, Service Workers ja Web Storage. Niitä toteutetaan yleensä sovelluskehyksillä kuten React, Angular ja Vue. Web-sovelluksia ajetaan web-selaimessa ja ne ovat rajoittuneet selaimen tarjoamiin palveluihin (esim. kamera ja sijainti). Pääsyä muihin käyttöjärjestelmän päälle rakennettuihin palveluihin kuten osoitekirjaan ei ole saatavilla. Puuttuville palveluille saattaa silti löytyä joissakin tapauksissa toinen toteutustapa web-standardien kautta.

Lue lisää

PWA-sovellukset ovat mobiilisovelluksen kaltaisia web-sivuja

Jos web-sovellus toteutetaan PWA-tyyppisenä (Progressive Web App), se voidaan asentaa laitteen kotinäkymään ja saada toimimaan mobiilisovelluksen kaltaisesti. Sitä ajetaan kuitenkin samoilla rajoituksilla kuin muitakin selainsovelluksia, joten sillä ei ole pääsyä muihin käyttöjärjestelmän palveluihin kuin mitä selain sille tarjoaa.

Lue lisää

Hybridisovellukset

Pelkästään natiivitekniikalla tai pelkästään web-tekniikalla toteutettujen sovelluksien välissä on kategoria teknologioita, joita kutsutaan hybrideiksi. Tässä kategoriassa käyttöliittymää ja sovelluslogiikkaa ajetaan yleensä sovelluksen sisäisessä web-selainkomponentissa, joka on upotettu sovelluskehyksen tarjoamaan natiivitekniikalla toteutettuun sovelluskuoreen. Selaimesta on piilotettu siitä tavanomaisesti löytyvät toiminnot, kuten osoiterivi. Sovelluskuori tarjoaa selaimessa ajettavalle sovellukselle Javascript-rajapintojen kautta joitakin käyttöjärjestelmän tarjoamia palveluita, joita web-sovelluksille ei muuten olisi tarjolla. Hybridisovellusten jakelu tapahtuu natiivisovellusten tapaan sovelluskaupan kautta.

Lue lisää

Esimerkkejä suosituimmista teknologioista vuonna 2023

Edellä mainittujen hybriditekniikoiden rinnalle on viime vuosina noussut myös sovellusalustoja, joihin ei voida käyttää aivan samaa jaottelua natiivi- ja hybriditekniikan välillä kuin yllä. Jos tavoitteena on vähentää kustannuksia projektin ja ylläpidon aikana sekä aikaa suunnittelupöydältä tuotantoon suorituskyvystä tinkimättä, valinta kohdistuu tällä hetkellä yleisimmin React Nativeen tai Flutteriin. React Native on Facebookin (nyk. Meta) vuonna 2015 kehittämä ja Flutter on Googlen vuonna 2017 kehittämä sovellusalusta.

Molemmat alustat ovat kypsiä tuotantoon ja toteuttavat saman perusidean: yksi ja sama koodipohja toimii sekä iOS- että Android-laitteissa (cross-platform). Kummallakin alustalla voidaan toteuttaa moderneja mobiilisovelluksia kustannustehokkaammin kuin perinteisellä natiiviteknologialla, joka vaatii oman erillisen koodipohjan sekä iOS- että Android-laitteille.

Flutter
React Native

React Nativen suosion syyt ovat osin samoja kuin Flutterin, vaikka alustoissa on myös selkeitä eroja.

  • React Native on hyvin samankaltainen Web-sovellusten toteutukseen käytettävän Reactin kanssa, joten React-taustainen kehittäjä omaksuu nopeasti React Native -kehittämisen erityispiirteet.
     
  • Toteutukseen käytetään Javascriptiä tai Typescriptiä, joka transpiloidaan Javascriptiksi. React Nativella toteutetussa sovelluksessa ajetaan Javascript-moottoria sovelluksen sisäisessä taustaprosessissa ja UI-komponentit on mäpätty suoraan käyttöjärjestelmäkohtaisiin UI-komponentteihin.
     
  • Käyttöliittymä tuntuu ja näyttää samalta kuin natiivilla koodilla tehdyssä sovelluksessa, koska UI-komponentit ovat samoja. Javascript-moottori kommunikoi natiivialustan kanssa asynkronisesti serialisoidun viestinvälityksen avulla.
     
  • React Native on luonnollinen valinta Javascript-taustaiselle kehittäjälle. Sen etuna on myös pidempi historia ja sitä myötä laajempi kehittäjäyhteisö sekä kolmannen osapuolen komponenttikirjasto.

 

Muutaman tässä mainitun teknologian lisäksi markkinoilla on useita muitakin paljon käytettyjä ratkaisuja. Ei siis ihme, jos valinnan tekeminen voi tuntua haastavalta ja väärän valinnan tekeminen mietityttää. Tiimimme asiantuntijat auttavat asiakkaitamme vastaavien kysymysten kanssa päivittäin, joten ota yhteyttä ja keskustellaan lisää!

 

Kirjoittajasta

Asiantuntija

Mikko Väänänen

Senior mobiilikehittäjä

Mikko Väänänen työskentelee senior mobiilikehittäjänä CGI:llä. Mikolla on yli 20 vuoden kokemus erilaisista ohjelmistokehitysprojekteista ja viime vuosina hän on keskittynyt mobiiliteknologioihin.