JavaFX ja MVVM-arkkitehtuuri

Aloitamme Faberconilla uuden blogisarjan, jossa käsitellään MVVM-mallin käyttämistä JavaFX-sovelluksissa. Tarkoituksena on esitellä yleiskäyttöinen MVVM-arkkitehtuurimalli JavaFX:lle.

JavaFX on Javan uusin käyttöliittymätekniikka graafisia desktop-sovelluksia varten. JavaFX on pikkuhiljaa syrjättänyt 1990-luvulta käytössä olleen Swing-tekniikan. JavaFX sovelluksia voidaan tehdä joko XML-käyttöliittyminä tai ohjelmallisesti Swingin tapaan käyttäen JavaFX:n käyttöliittymäkomponentteja. Seppiä kiinnostaa XML-käyttöliittymät, ne edustavat nykysuuntausta kuten .NET-puolen XAML-käyttöliittymät. XML-käyttöliittymien tekemiseen voidaan myös käyttää kelvollista wysiwyg editoria Scene Builderia, jonka kehityksestä huolehtii nykyisin Gluon.

JavaFX-sovellusten käyttöliittymän alapuolinen sovelluksen rakenne voidaan tehdä vapaasti. Miten sovelluksen arkkitehtuuri pitäisi sitten valita? Viime vuosina on yleisesti keskitytty websovellusten sekä mobiilisovelluksien arkkitehtuurien kehitykseen, kun taas desktop-sovelluksia on pidetty vanhanaikaisena ja niiden arkkitehtuurien kehittämistä vähemmän kiinnostavana. Kuitenkin tarve joustaville, selkeille ja yleiskäyttöisille arkkitehtuurimalleille on yhtä suuri myös desktop-sovelluksien puolella. Desktop-sovelluksille ei ole samanlaista luontaista tasorakennetta kuin websovelluksilla, joissa sovelluksen toiminta voidaan aina jakaa client- ja palvelinpuolelle. Desktop-sovellukset ovat ikäänkuin ”yhtä puuta”. Tästä huolimatta samat arkkitehtuurimallit, MVC- ja MVVM-mallit erityisesti, käyvät myös JavaFX-sovelluksiin.

Miksi tarvitaan arkkitehtuuria? Arkkitehtuuri on oleellinen osa sovelluksen suunnitelmallisuutta. Ilman arkkitehtuuria tekeminen on sattumanvaraista, koodarit koodaavat kuin itse haluavat. Ei autotehtaassakaan toimita niin, että jokainen työntekijä tekee työtään kuin parhaakseen näkee tai miten hauskinta on. Arkkitehtuuri antaa rajat joiden raameissa toimitaan. Arkkitehtuurin pitää olla kaikkien projektiin kuuluvien henkilöiden tiedossa ja siihen pitää kaikkien sitoutua. Arkkitehtuurin noudattamista on myös valvottava. Yleinen virhe softataloissa on, että prosessit osataan, niihin keskitytään mutta jätetään arkkitehtuuri, jos sitä on edes suunniteltu, oman onnensa nojaan. Mikäli projektipäällikkö ei itse ole tekninen asiantuntija – kuten suuntaus nykyisin on – hänen pitäisi osata delegoida valvonta vaikkapa sovellusarkkitehdille. Valvontaa voidaan toki vähentää, kun tekijät ymmärtävät, että arkkitehtuuria on myös noudatettava. Arkkitehtuurin laatimisen ja hallinnan kustannukset tulevat moninkertaisina takaisin kohonneen ylläpidettävyyden kautta.

Arkkitehtuuri on ohjelmistosovelluksissa samassa roolissa kuin rakentamisessa. Arkkitehtuurille on tarve, joka korostuu sovelluksissa. Sovellusarkkitehtuurit ovat hyvin funktionaalisia (vrt. funktionalismi), ne määrittelevät sovelluksen perusrakenteen, joka toteuttaa asiakkaan tarpeen, sovittaa sovelluksen käytettävään tekniikkaan ja antaa kehittäjille hyvin ymmärrettävän, ja ylläpitoa tukevan kehyksen. Kyse on siitä, että tehdään asioita hyvin, yhtenäisellä tavalla ja järjestelmällisesti.

Seuraavassa blogissa käsittelemme ylimmän tason arkkitehtuuriratkaisuja JavaFX-sovelluksissa.