Flutter[2] on avoimen lähdekoodin käyttöliittymäkehitystyökalu, jonka Google on kehittänyt. Sen avulla ohjelmistosuunnittelijat voivat rakentaa natiiveja sovelluksia useille eri alustoille yhdestä koodipohjasta käyttäen Dart ohjelmointikieltä.

Flutter
Kehittäjä Google
Kehityshistoria
Ensijulkaisu Alpha (v0.0.6)
Vakaa versio 3.10.2 / 24.5.2023
Tiedot
Ohjelmistotyyppi Ohjelmistokehys
Alusta Android
iOS
Linux
MacOS
Windows
Ohjelmointikielet C, C++, Dart [1]
Lisenssi BSD-lisenssi
Aiheesta muualla
Verkkosivusto

Historia muokkaa

Flutterin ensimmäinen versio julkaistiin nimellä "Sky"[3]. Se esiteltiin Dart-päivämääräkonferenssissa vuonna 2015. Sky rajoittui alun perin vain Android-laitteille, mutta ideana oli luoda ohjelmisto, joka voisi tuottaa 120 kuvaa sekunnissa jatkuvasti.[4]

Vuonna 2017 Google julkaisi Flutterin ensimmäisen betaversion. Tämä alkuperäinen versio tarjosi jo useita merkittäviä ominaisuuksia, kuten Hot Reload -ominaisuuden, joka mahdollisti välittömän koodimuutosten esikatselun ilman sovelluksen uudelleenkäynnistämistä.[5]

Flutterin 1.0 versio julkistettiin vuoden 2018 lopussa[6], joka laajensi tukensa iOS:lle ja tarjosi kehittäjille vakaan alustan rakentaa korkealaatuisia sovelluksia molemmille suosituimmille mobiilialustoille.[6]

Vuoden 2021 maaliskuussa Google julkaisi Flutter 2:n.[7] Tämä merkittävä päivitys toi virallisen tuen verkkosovelluksille uuden Canvas Kit -renderöinnin ja verkkosovelluksille tarkoitettujen widgettien avulla, sekä aikaisen tuen työpöytäsovelluksille Windowsille, macOS:lle ja Linuxille sekä parannetut Add-to-App -API:t. Tämä julkaisu käytti myös Dart 2.0:aa, joka sisälsi äänilukotuksen (sound null-safety), aiheuttaen monia rikkinäisiä muutoksia ja ongelmia useissa ulkoisissa paketeissa. Flutter-tiimi kuitenkin tarjosi ohjeita ja työkaluja näiden ongelmien lieventämiseksi.[8]

Syyskuun 8. päivänä 2021 Google julkaisi Dart 2.14:n ja Flutter 2.5:n[9]. Päivitys toi parannuksia Androidin koko näytön tilaan ja Google'n uusimpaan Material Design -versioon, joka tunnetaan nimellä "Material You". Dart sai kaksi uutta päivitystä, joissa standardoitiin lint-ehdot ja merkittiin tuki Apple Siliconille vakaaksi.[10]

Toukokuun 12. päivänä 2022 Google ilmoitti Flutter 3:n ja Dart 2.17:n julkaisusta[11]. Tämä päivitys laajensi tuettujen alustojen kokonaismäärän kuuteen, mukaan lukien vakaa tuki Linuxille ja macOS:lle sekä Intel- että Apple Silicon -prosessoreilla.[12]

Elokuun 30. päivänä 2022 julkaistiin Flutter 3.3. [13]Tämä julkaisu sisälsi Objective-C:n ja Swiftin interop-tuen ja varhaisen esikatselun uudesta renderöintimoottorista nimeltä "Impeller", jonka tavoitteena on vähentää nykimistä, joka johtuu shader-kompilaatiosta.[14]

Tammikuun 25. päivänä 2023 julkaistiin Flutter 3.7.[15]

Tekniikka muokkaa

Flutterin rakenne perustuu neljään pääkomponenttiin:[16] Dart-ohjelmointikieleen, Flutter-moottoriin, Foundation-kirjastoon ja Widget-kirjastoihin.[16]

  • Dart: Flutter käyttää Dartin ohjelmointikieltä, joka on Googlen kehittämä. Dart tukee sekä AOT (Ahead Of Time) -kompilointia, joka on tärkeä korkean suorituskyvyn saavuttamiseksi, että JIT (Just In Time) -kompilointia, joka mahdollistaa Hot Reload -ominaisuuden ja tukee kehittäjää sovelluksen kehittämisprosessissa.
  • Flutter-moottori: Flutter-moottori on kirjoitettu pääasiassa C++:lla ja se tarjoaa alhaisen tason renderöinnin. Se tarjoaa pääsyn Skia (Googlen 2D-renderointimoottori) -palveluihin ja käyttää Dartia sekä perus- että käyttöliittymäkerroksen koodina.
  • Foundation-kirjasto: Tämä Dartilla kirjoitettu kirjasto tarjoaa korkean tason abstraktioita, jotka käyttävät Flutter-moottoria. Se tarjoaa myös satoja luokkia, jotka sisältävät keskeiset, yleiskäyttöiset algoritmit ja apuohjelmat.
  • Widgetit: Flutterin käyttöliittymä rakennetaan widgeteistä, jotka ovat käyttöliittymän peruselementtejä. Jokainen widget on itsenäinen ja voi sisältää muita widgettejä luoden hierarkisen rakenteen.

Ominaisuudet muokkaa

Flutterin keskeiset ominaisuudet sisältävät Hot Reload -ominaisuuden, widget-pohjaisen järjestelmän, yhden koodipohjan useille alustoille ja hyvän suorituskyvyn.[17]

  • Hot Reload:[5] Tämä ominaisuus mahdollistaa muutosten tekemisen koodiin lennossa ja niiden välittömän esikatselun, mikä tekee sovelluksen debuggaamisesta ja iteroinnista huomattavasti nopeampaa.[5]
  • Widget-pohjainen:[18] Flutterin käyttöliittymä on rakennettu widgeteistä. Ne ovat kuin rakennuspalikoita, jotka auttavat luomaan räätälöityjä ja monimutkaisia käyttöliittymiä.[19]
  • Yksi koodipohja:[20] Flutter mahdollistaa sovelluksen kehittämisen Androidille, iOS:lle, Webille, Windowsille, Linuxille ja MacOS:lle samalla koodipohjalla. Tämä vähentää kehityksen aikaa ja yksinkertaistaa ylläpitoa.[21]
  • Suorituskyky:[22] Koska Flutter kompiloi Dart-koodin natiiviksi koodiksi, se pystyy tarjoamaan erinomaisen suorituskyvyn.[23]

Esimerkkejä sovelluksista muokkaa

Useat tunnetut yritykset ovat jo hyödyntäneet Flutteria sovellustensa kehittämisessä. Esimerkkeinä ovat:

  • Alibaba: Maailman suurimpiin kuuluva verkkokauppa Alibaba[24] on käyttänyt Flutteria mobiilisovelluksensa kehittämisessä.[25]
  • Google Pay: myös Googlen omat sovellukset, kuten Google Pay[26], on rakennettu Flutterin avulla.[27]
  • Reflectly: Reflectly[28], suosittu mindfulness- ja päiväkirjasovellus, rakennettiin alun perin natiivilla koodilla, mutta yritys päätti siirtyä Flutteriin sen joustavuuden ja suorituskyvyn vuoksi.[29]

Flutterin suosio on kasvanut huomattavasti sen julkaisun jälkeen, ja sen aktiivinen kehittäjäyhteisö, jatkuva kehitys ja laaja-alainen tuki tekevät siitä houkuttelevan vaihtoehdon monille sovelluskehittäjille.[30]

Lähteet muokkaa

  1. FAQ - Flutter flutter.dev.
  2. Flutter: Google's Answer to Cross-platform Mobile Development CityLife. 18.6.2023. Viitattu 18.6.2023. (englanniksi)
  3. Tomic Riedel: The History of Flutter in less than 3 minutes! Medium. 17.10.2022. Viitattu 18.6.2023. (englanniksi)
  4. Ron Amadeo: Google’s Dart language on Android aims for Java-free, 120 FPS apps Ars Technica. 1.5.2015. Viitattu 19.6.2023. (englanniksi)
  5. a b c Hot reload docs.flutter.dev. Viitattu 18.6.2023. (englanniksi)
  6. a b Flutter 1.0 released: The first stable release of Google's mobile UI toolkit Android Authority. 4.12.2018. Viitattu 18.6.2023. (englanniksi)
  7. Announcing Flutter 2 developers.googleblog.com. Viitattu 18.6.2023. (englanniksi)
  8. Migrating to null safety dart.dev. Viitattu 19.6.2023. (englanniksi)[vanhentunut linkki]
  9. Chris Sells: What’s new in Flutter 2.5 Flutter. 8.9.2021. Viitattu 18.6.2023. (englanniksi)
  10. Hotfixes to the Stable Channel GitHub. Viitattu 19.6.2023. (englanniksi)
  11. Tim Sneath: Introducing Flutter 3 Flutter. 11.5.2022. Viitattu 18.6.2023. (englanniksi)
  12. Flutter 3.0.0 release notes docs.flutter.dev. Viitattu 19.6.2023. (englanniksi)
  13. Kevin Chisholm: What’s new in Flutter 3.3 Flutter. 31.8.2022. Viitattu 18.6.2023. (englanniksi)
  14. Tim Sneath: Announcing Flutter 3.3 at Flutter Vikings Flutter. 30.8.2022. Viitattu 19.6.2023. (englanniksi)
  15. Nikul Kukadiya: Flutter 3.7.3 Updates Medium. 16.2.2023. Viitattu 18.6.2023. (englanniksi)
  16. a b Christian Findlay: Components of Flutter State Management www.christianfindlay.com. 18.4.2023. Viitattu 18.6.2023. (englanniksi)
  17. Tim Sneath: Announcing Flutter 3.3 at Flutter Vikings Flutter. 30.8.2022. Viitattu 19.6.2023. (englanniksi)
  18. Introduction to widgets docs.flutter.dev. Viitattu 18.6.2023. (englanniksi)
  19. Flutter Widgets - Introduction to Flutter Widgets Edureka. 12.4.2023. Viitattu 19.6.2023. (englanniksi)
  20. Multi-Platform flutter.dev. Viitattu 18.6.2023. (englanniksi)
  21. Speeding up development with Flutter somniosoftware.com. Arkistoitu 19.6.2023. Viitattu 19.6.2023. (englanniksi)
  22. Batuhan Sahin: Flutter Performance Tips Codimis. 2.8.2022. Viitattu 18.6.2023. (englanniksi)
  23. Pinedamg: How Flutter & Dart Code Gets Compiled To Native Apps Medium. 9.2.2022. Viitattu 19.6.2023. (englanniksi)
  24. What Technical Advantages Does Alibaba Have in Building a Flutter System? Alibaba Cloud Community. Viitattu 18.6.2023. (englanniksi)
  25. Flutter Showcase | Alibaba Group flutter.dev. Viitattu 19.6.2023. (englanniksi)
  26. Showcase - Flutter apps in production flutter.dev. Viitattu 18.6.2023. (englanniksi)
  27. Flutter Showcase |Google Pay flutter.dev. Viitattu 19.6.2023. (englanniksi)
  28. Reflectly - Made With Flutter madewithflutter.net. 7.6.2021. Viitattu 18.6.2023. (englanniksi)
  29. Flutter Showcase | Reflectly flutter.dev. Viitattu 19.6.2023. (englanniksi)
  30. Guest Post: Why Flutter is the most popular cross-platform mobile SDK Stack Overflow Blog. 21.2.2022. Viitattu 18.6.2023. (englanniksi)