Blogi

Minkä cross-platform -teknologian rockstara valitsee?

Olet kehittämässä mobiiliapplikaatiota ja haluat säästää fyrkkaa ja aikaa cross-platform-teknologialla. Lista eri teknologioista on järisyttävän pitkä ja kasvaa silmissä. Minkä valitset?

Tämän päivän trendinä on isojen korporaatioiden esiinmarssi. Microsoftilta, Facebookilta ja Googlelta löytyy kelpo vaihtoehtoja mobiilikehitykseen cross-platformilla. Kaikilla kolmella teknologialla on laajan yhteisön tuki ja iso taustayritys kehittämässä alustaa. Xamarin ja Flutter kasvavat keskitetyn kehityksen keinoin ja React Nativen kehitys perustuu Open Source -yhteisöön, vaikka puskurissa onkin Facebookin jalanjälki.

Xamarin

Microsoftin muutama vuosi sitten hankkima Xamarin on toteutettu täysin eri tavalla kuin listan muut työkalut. Xamarinissa applikaatiot kehitetään C#-ohjelmointikielellä ja käyttöliittymät joko natiivityökaluilla tai Xamarin Formsin tapauksessa XAML-notaatiolla. Xamarinin työkalupaketti kääntää yhteisestä C#-koodista omat julkaisunsa eri alustoille: Android, iOS, Windows-laitteissa toimiva UWP ja Samsungin Tizen. Xamarinin kanssa kehittäjällä on täysi pääsy laitteiden sensoreihin ja API-rajapintoihin.

Xamarinin hyödyt eroavat kirkkaasti muista työkaluista. Jos muuta sovelluskehitystä tehdään Microsoftin työkaluilla, voi liiketoimintalogiikkaa hyödyntää helpommin osana Xamarin-sovelluksia. Xamarinin pariin on myös helpompi saada kokeneita .NET-kehittäjiä. Listan muut ratkaisut perustuvat vahvemmin web-teknologioihin. Xamarinin kääntöpuolena on sovellusten suuri asennuspaketinkoko ja ei aivan natiiviin verrattavissa oleva suorituskyky. Aikaisemmin Xamarinin suurin murhe oli kehitystyökalujen puute. Nykyään Xamarinia kehitetään osaksi Visual Studiota integroidun työkalupaletin kanssa ja kehittäjäkokemus on aivan listan kärkipäässä. Xamarinin miinuksena oli ennen myös kehityksen aikaisen näkymän päivityksen, eli hot-reloadin, puute, mutta tämä ominaisuus on ollut jo preview- asteella ollut jonkin aikaa.

React Native

React Nativen tukipilareina ovat web-teknologiat ja tarkemmin sanottuna tekijänsä Facebookin React. React Nativella kehitetyt sovellukset ovat muy bueno, oikein tehtynä vetävät vertoja natiiviille. Ainoastaan sovelluksen käynnistysaika häviää natiiville. Reactiin ja myös React Nativeen on juurrutettu vahva komponenttiajattelu.

Käytännössä erilliset sovelluksen osat ovat omia itsenäisiä ja erillisiä, irrotettavia komponentteja. Tämä on iso etu silloin, kun rakennetaan useita erilaisia mobiiliapplikaatioita saman yrityksen tarpeisiin. Reactilla voi helposti rakentaa komponenttikirjaston kehittäjien uudelleen käytettäväksi eri sovellusten kanssa. Jos yrityksessä rakennetaan verkkosovelluksia Reactilla, voi näiden osia käyttää ristiin mobiilisovelluksen kanssa.

React Nativen ongelmana on kirjastojen monimuotoisuus. Laitteiden APIen käyttö vaihtelee paljon kilpailevien kirjastojen kanssa. Käyttökokemus loppukäyttäjälle eikä kehittäjäkokemus ole aina parhaimmalla tasolla. Jos kehittäjä lähtee rakentamaan omia laajennuksia ja kirjastoja, on pakko turvautua Java, Kotlin, Objective-C ja Switft -toteutuksiin eri alustoille. Se ei välttämättä ole saman kehittäjän vahvuusalue, jos tausta on web-teknologioiden puolella.

Flutter

Googlen panostus cross-platform-kehitykseen on Flutter, joka painottaa nopeaa
käyttöliittymäkehityksestä. Kehitys tapahtuu DART-ohjelmointikielellä, konfiguroitavia widgettejä käyttämällä. Kaikki widgetit ovat käytännössä samannäköisiä alustasta riippumatta. Käyttäjäkokemus Flutterissa on priimaa, erittäin nopean käynnistyksen ja lähes natiiviin verrattavissa olevan suorituskyvyn takia.

Kehittäjäkokemukseltaan listan uusin tulokas jää hieman jälkeen. CI ja CD-järjestelmät eivät vielä tue Flutter-sovelluksia kovin hyvin, joten julkaisuihin ja testaukseen saa varata enemmän aikaa jokaisella versiokierroksella verrattuna Xamariniin ja React Nativeen. Googlen tuki kehittäjille tunnetaan erinomaisena, joten kehittäjäkokemus tulee ottamaan isoja harppauksia lähiaikoina. Asennettavat sovellukset ovat suurehkoja Flutterin omien tukikirjastojen takia, eivät silti ihan Xamarinin kokoluokkaa. Flutterissa on kohtalainen tuki iOS ja Android-laitteiden API:lle, kaikkea ei ole vielä toteutettu.

Haastajat: PhoneGap, Cordova ja NativeScript

PhoneGap, Cordova ja NativeScript ovat jääneet sekä adaptaatiossa että kehittäjäkokemuksessa jälkeen ison taustatuen puutteen takia. Ne perustuvat enemmän tai vähemmän Javascript-tulkkiin ja periaatteessa upotettuun selaimeen käyttöliittymien rakennukseen. Ennen Flutteria näillä ns. hybridityökaluilla oli paikkansa tilanteessa, jossa yksinkertainen, informatiivinen tai lomakemainen sovellus haluttiin nopeasti markkinoille. Sovelluksien monimutkaisuuden kasvaessa näistä työkaluista on usein siirrytty johonkin toiseen paremmin hallittavaan kokonaisuuteen. Nykyisellään Flutter tarjoaa kaikki samat hyödyt yksinkertaisten käyttöliittymien nopeaan kehitykseen ja on loppupeleissä parempi vaihtoehto.

Jäitkö vielä raapimaan päätäsi? Pistä bändille koodia niin saat vastaukset kaikkiin kysymyksiin ja tiedät, millä työkaluilla teet kovimmat tulokset.

Takaisin blogiin