SuperHub tähtää parempaan kaupunkimatkustamiseen

Julkinen liikenne on pääkaupunkiseudulla kohtalaisen toimivaa, vaikkakin poikittaisliikenne ja jäykät seuturajat tekevät siitä edelleen hidasta ja kallista. Jäykkiin seuturajoihin on tulossa muutos lähivuosina, kun HSL kehittää matkakorttia, ja matkustajat voivat tähdätä sujuvampiin reittivaihtoehtoihin erilaisten sovellusten kuten Reittioppaan avulla. Muitakin projekteja parempien reittivaihtoehtojen löytämiseen on, kuten SuperHub EU-projekti, joka keskittyy tutkimaan ekologista kaupunkimatkustamista. Osallistuin alkusyksystä projektin kehitteillä olevan SUPERHUB-mobiilisovelluksen testaamiseen arkisessa liikkumisessani.

SuperHub-projekti

SuperHub, eli SUstainable and PERsuasive Human Users moBility in future cities, on ekologiseen kaupunkimatkustamiseen keskittynyt EU-projekti, jossa on mukana 20 yhteistyökumppania kuudesta eri Euroopan maasta ja Suomesta Helsingin yliopisto ja Helsingin seudun liikenne. Projekti on kestävän kaupunkiliikenteen tutkimus, jossa tarkastellaan osallistujien liikennetottumuksia ja kerätään palautetta SUPERHUB-järjestelmän ja -sovellusten kehittämiseksi. Sen tarkoituksena on kerätä konkreettista tietoa ihmisten liikennetottumuksista ja katsoa, kuinka liikennetottumuksia on mahdollista kehittää ympäristöystävällisemmäksi pelin kaltaisen lähestymisen avulla. Lisäksi tutkimuksessa tarkastellaan myös kehitetyn sovellusprototyypin käytettävyyttä ja toiminnallisuuksia. Tutkimuksen tarkoituksena on, että tulokset auttavat paikallisia ja eurooppalaisia päättäjiä toimimaan kestävän liikennekehityksen eteen ja auttavat parantamaan liikenteen laatua kaikille kaupunkilaisille. Lisätietoa SuperHub-projektista voi lukea projektin informaatiolehtisestä.

Osallistuin tutkimukseen sattumalta huomattuani elokuun alussa SuperHub-tutkimusprojektin hakevan 200 pääkaupunkiseudulla asuvaa matkalaista koekäyttämään SUPERHUB-sovellusta. Osallistuminen ei vaatinut mitään erityistaitoja, vain Android-puhelimen ja hieman aikaa kolmen viikon ajan. Alkuun projektissa täytettiin viikon ajan vain matkapäiväkirjaa ja sen jälkeen parin viikon ajan lisäksi testattiin Android-matkapuhelimella SUPERHUB-projektissa kehitettyä sovellusta muun muassa reittien suunnitteluun ja matkustustavoitteiden asettamiseen. Sovelluksen testaamiseen osallistui yli 600 ihmistä Helsingistä, Milanosta ja Barcelonasta.

Testin tarkoituksena on seurata tavanomaisia reitti- ja matkatapavalintoja, jotta muun muassa vielä prototyyppi-asteella olevan sovelluksen keinoälyä voidaan parantaa, ja palautteen perusteella kehittää edelleen ja varmistaa, että jo olemassa olevat toiminnot todella vastaavat kaupunkimatkalaisten tarpeisiin. Sovelluksen päätoimintoja ovat muun muassa kaupunkialueilla tapahtuvien matkojen suunnittelu, parhaiden reittivaihtoehtojen ja sopivimpien kulkuvälineiden etsiminen, matkojen hiilijalanjäljen laskeminen ja liikenteen häiriötekijöistä tiedottaminen, eli paljon Reittioppaasta tuttuja ominaisuuksia hiukan uudella tavalla toteutettuna ja maustettuna.

SUPERHUB-sovellus

Testikokemukset

SUPERHUB-sovelluksen prototyyppi toimi kokonaisuutena ihan kelvollisesti kokeilun ajan, enkä siinä havainnut toiminnallisia ongelmia, mutta käytettävyyteen ja tarkoituksellisuuteen olisi voinut panostaa enemmän. Käytännössä sovellus tuotti samat reittipalvelut matkan suunnitteluun kuin Reittiopasta hyödyntävä Andropas, mutta ei aivan yhtä sulavasti. Sovellus oli selkeästi insinöörien suunnittelema, sillä en ymmärtänyt kaikkien toimintojen tarkoitusta (mm. ekotavoitteet ja pisteet) ja käyttöliittymä oli turhan ahdettu. Sovellus kuitenkin suoritti tehtävänsä, eli löysi oikeat eri reittivaihtoehdot ja näytti ne kartalla, vaikka toimikin hieman hitaasti.

Koejakson alussa suoritetun matkapäiväkirjan täyttäminen oli hieman työlästä, sillä sitä varten tehty Web-sovellus oli hieman kankea ja on suhteellisen vaikea muistaa, paljonko matkaan meni aikaa, ja mikä osoite oli lähtö- ja päätepisteenä, ellei niitä erikseen katso kartasta, jota Web-sovellus ei tarjonnut. Sovellus olisi kaivannut hieman parempaa käyttöliittymää etenkin alku- ja loppupisteiden valintaan ja toistuvien matkojen kirjaamiseen.

Matkapäiväkirjaa täyttäessä huomasi hyvin, miten staattisia omat matkani ovat, pääasiassa työpaikan ja kodin välillä suhaamista ja viikottaisiin harrastuksiin kulkemista. Joukkoliikenteen hyödyntäminen jäi vähäiselle, sillä sää suosi pyöräilyä ja harrastuksiin pääsi paljon kätevämmin omalla autolla. Espooseen muuton jälkeen joukkoliikenteen käyttöni on muutenkin vähentynyt, sillä seuturajat tekevät siitä turhan kallista verrattuna autoiluun ja liikenneyhteydet eivät ole yhtä toimivat kuin Helsingissä asuessani.

Kokonaisuutena projektin tarkoitus ja tulosten merkittävyys jäi hieman avonaiseksi, mutta tulipahan kannettua oma korteni kekoon. Tutkimuksesta ei ole vielä tuloksia, mutta ilmeisesti niiden valmistuttua projekti järjestää tilaisuuksia niistä keskustelemiseen ja jakaa yhteenvetoja. Tulokset esitetään myös akateemisissa konferensseissa, julkaistaan kirjana ja lisäksi projektin verkkosivujen kautta on mahdollista saada projektiin liittyviä raportteja.

Jäämme siis odottelemaan, miten pääsisimme parempaan kaupunkimatkustamiseen.

Tietojärjestelmäarkkitehdin valmennusohjelma, osa 2

Kesälomat ovat jo kaukana takana ja paluu arkeen on todellisuutta sekä töiden että osaamisen kehittämisen osalta. Hieman lomien jälkeen jatkui myös Tieturin ”Tietojärjestelmäarkkitehdin valmennusohjelma” -kurssi, jonka ensimmäinen osa pidettiin alkukesästä. Keinoja ja ratkaisuja erinomaiseen arkkitehtuuriratkaisuun pääsemiseksi esittelevän kurssin ensimmäinen osio käsitteli tietojärjestelmäarkkitehdin työssä tarvittavia monipuolisia taitoja, laatuatribuutteja, arkkitehtuurikehyksiä ja 4+1 -mallia. Toinen osio jatkoi aihepiirin käsittelyä muun muassa suunnittelumalleilla, integraatioilla, SOA:lla, tietoturvalla ja arkkitehtuurin arvioinnilla ja dokumentoinnilla. Kuuden päivän kokonaisuus oli aikamoinen annos aiheeseen liittyviä otsikoita ja ajateltavaa ja tarjosikin lähinnä paljon lähtökohtia lisäopiskelulle, eikä niinkään käsitellyt miten asioita pitäisi tehdä. Eli hyvä yleiskatsaus aihepiiriin ja ajattelemisen aihetta tarjoava.

4+1 -mallin kaavioita tilanvarausjärjestelmästä

Tietojärjestelmäarkkitehdin valmennusohjelma, osa 2

Tietojärjestelmäarkkitehdin valmennusohjelman ensimmäisen osion jälkeen tunnelmat kurssista olivat aika teoriapainotteiset, mutta laajan aihepiirin käsittely konkreettisemmin olisi vaatinut vähintään pari päivää per aihepiiri, joten sinällään kurssin yleiskatsauksen omainen lähestyminen aiheeseen oli toimiva. Mutta silti odotukset kurssin jälkimmäiseltä osiolta olivat hieman enemmän. Lupasihan kurssikuvaus, että ”valmennusohjelman suoritettuaan osallistuja osaa tietojärjestelmäarkkitehdin työn kannalta systemaattiset toimintatavat ja merkittävät välineet.”.

Erinomaisen arkkitehtuuriratkaisun saavuttamiseksi keinoja ja ratkaisuja esittelevän kurssin toinen osio jatkoi aihepiirin käsittelyä muun muassa suunnittelumalleilla, integraatioilla, SOA:lla, tietoturvalla ja arkkitehtuurin arvioinnilla, valvonnalla ja dokumentoinnilla. Suurilta osin aihepiirit olivat tuttuja, mutta uusia keinoja parhaiden käytäntöjen metodeihin, arkkitehtuurin arviointiin ja sen testaukseen kyllä ilmeni.

Osa 2, päivä 1:

  • Parhaita käytäntöjä arkkitehtuurisuunnitteluun
    • Attribute Driven Development method (ADD), ketterän arkkitehtuurin suunnittelu, ketterän tiimin suunnittelukäytännöt

Kurssin neljäs päivä alkoi ryhmien saamien kotitehtävien läpikäynnillä, jonka harmillisesti oli tehnyt vain kaksi viidestä ryhmästä. Tehtävänä oli hyödyntää 4+1 -mallia jonkin järjestelmän, keksityn tai olemassa olevan, kuvaamiseen. Ryhmäni suunnitteli kuvitteellisen ”neuvottelutilojen tilanvarauksen ja käytönseurannan integraatio” -sovelluksen, jonka idea oli tehostaa neuvotteluhuoneiden käyttöä. Olimme kuvanneet konteksti-, prosessi-, komponentti- ja sijoittelukaaviot, joista keskustelimme lyhyesti. Olisi ollut kiva nähdä useampienkin ryhmien ratkaisuja, mutta muuten harjoitus oli mielenkiintoinen ideointihetki.

Loppuaika neljännestä päivästä käytiin läpi arkkitehtuurisuunnittelun parhaita käytäntöjä muun muassa toiminnallisten vaatimusten hyödyntämisessä, arkkitehtuurin oikeellisuuden ja suorituskyvyn aikaisessa testauksessa ja käsiteltiin anti-patterneja. Monta maalaisjärjellä perusteltavaa asiaa, mutta todellisuudessa kuitenkin yllättävän hankalia käytännössä viedä läpi, kuten arkkitehtuurin muuttaminen sen osoittautuessa huonoksi, prototyyppien tekeminen tai aloittaminen liian isosti. Harjoituksena käytiin läpi ADD:tä elokuvateatterin lipunvarausjärjestelmän laatuattribuuttien osalta, joista esille nostettiin monikanavaisuus, skaalautuvuus, tietoturva, laajennettavuus, avoimuus, saatavuus, muunneltavuus ja jäljitettävyys. Nykytrendien mukaisesti keskusteltiin myös ketterästä kehityksestä ja sen suhteesta arkkitehtuurisuunnittelun. Vaikka Scrum-projektissa arkkitehtuuri tehdään ”just in time”, on sprint 0 ja ennakkosuunnittelu tärkeää ja projektin alkuvaiheessa painottuu arkkitehtuurin osuus väheten loppua kohden.

Osa 2, päivä 2:

  • Arkkitehtuurin testaaminen
    • Testaamisen ajoittaminen, testaamisessa huomioitavia seikkoja, suorituskyvyn testaaminen
  • Järjestelmien yhteensovittaminen
    • Tietojärjestelmäintegraation haasteet, löyhä kytkeytyvyys, tyypilliset integraatioratkaisut, integraatioarkkitehtuuri, palveluväylät (ESB)
  • Palveluarkkitehtuurin luominen (SOA)
    • Mitä SOA tarkoittaa?, avoin arkkitehtuuri, SOA arkkitehtuurin luominen, arkkitehtuurin toteuttaminen ja haasteet

Viidennen koulutuspäivän aluksi keskustelimme teknisestä velasta, jota tulee sekä tietoisesti että suunnittelun myötä. Jos velkaa on paljon, on sovellusta myöhemmin hankala tai mahdoton refaktoroida kuntoon. Päivän pääteemat olivat kuitenkin arkkitehtuurin testaaminen, järjestelmien integrointi ja palveluarkkitehtuuri.

Sovelluskehitysprojekteissa testauksen rooli usein aliarvioidaan. Testauksenkin osalta pätee 80/20 sääntö, eli 80 prosenttia ongelmista korjataan testaamalla avainvaatimuksia säännöllisesti ja 20 prosenttia ongelmista on haastavia ja hankalia löytää. Ongelmana usein on myös laadukas testiaineisto ja sen määrä. Testaukseen liittyy myös suorituskyvyn arviointi ja nyrkkisääntönä voidaan pitää, että kannattaa varata 3,14 kertaa enemmän kapasiteettia kuin vaadittu. Toiminnallisen testauksen lisäksi pitää huolehtia suorituskyvyn testauksesta, jota käsiteltiin komponenttien ja koodin osalta. Tarjolla on useita avoimen lähdekoodin testausvälineitä, joista mainittiin muun muassa jMechanic ja JProfiler . Lisäksi lyhyesti esiteltiin kaupallista Compuwaren Application Monitoring -tuotetta (entinen dynaTrace). Testauksessa on hyvä muistaa Heisenbergin epämääräisyysperiaate, joka soveltaen on: ”Et voi suorittaa mittausta vaikuttamatta mitattavaan kohteeseen”.

Päivän muut aiheet olivat palvelusuuntautuneisuutta tukeva arkkitehtuurityyli eli SOA ja sovellusten integraatio. Tässä palvelu on looginen esitystapa toistuville liiketoiminnan aktiviteeteille, joilla on määritelty lopputulos, eli se on itsenäinen (itseriittoinen), voi koostua muista palveluista ja on musta laatikko kuluttajilleen. SOA:n rakentaminen pitäisi lähteä liiketoiminnan prosessien tietojärjestelmien tarpeista ja tuottaa aina liiketoiminta-arvoa. Ei kannata myöskään unohtaa, että SOA on kuin koiranpentu, joka vaatii jatkuvaa valvontaa, hoitoa, selkeitä rajoja ja vastuuhenkilöä, eli johtamista. Lisäksi sivuttiin REST-palvelun versiointia ja kuvaamista, kun käytössä ei ole WSDL:ää kuten SOAP-palveluissa. Sovellusten integraatioista käsiteltiin muun muassa erilaisia suunnittelumalleja kuten julkaise-tilaa (Twitter, RSS), sanomaväylät (SETI), vastaavuustunniste (laskun viitenumero), prosessimanageri, sanomakeskus (SMS) ja sääntöjen mukainen tietomalli.

Osa 2, päivä 3:

  • Teknologia-arkkitehtuuri
    • Teknologia-arkkitehtuuri mahdollistajana, liiketoimintalähtöinen teknologia-arkkitehtuuri, teknologioiden hallinta sekä valinta, teknologia-arkkitehtuurin suunnittelu
  • Lisensointimallit
    • Arkkitehtuuri ja lisenssit, Open Source -tuotteet sekä sovelluskehykset, näkökulmia lakiasioihin
  • Tietoturva-arkkitehtuuri
    • Tietoturvan näkökulmat ja tasot, vyöhykkeinen tietoturva, tietoturvan perustekniikat, tietoturvasuunnittelun peruspilarit
  • Arkkitehtuurin käytön valvonta
    • arkkitehtuurin käytön ohjeistus, arkkitehtuurin käytön katselmointi
  • Arkkitehtuurin arvioiminen
    • Arkkitehtuurin laatukriteerit, arkkitehtuurin arvioiminen, Architecture Tradeoff Analysis Method (ATAM) -metodi, Cost Benefit Analysis Method (CBAM)
  • Arkkitehtuurin dokumentoiminen
    • Arkkitehdin rooli dokumentoijana, arkkitehtuurin dokumentoiminen UML-kielellä, muita dokumentoinnin välineitä
  • Arkkitehtuurin hallinnointi
    • Arkkitehtuurin toteutus, arkkitehtuurin muutoshallinta, arkkitehtuuriorganisaatio, vaaditut prosessit

Kurssin viimeinen eli kuudes päivä sisälsi paljon eri aihepiirejä ja alkoi harjoituksella, jossa käytiin läpi sovellus- ja teknologia-arkkitehtuurin yhteyttä ja miten teknologia-arkkitehtuuri täyttää järjestelmän laatuvaatimukset. Teknologia-arkkitehtuurin rooli on mennä syvemmälle ja tarkemmalle tasolle, sekä se voi olla jo olemassa ja sanella asioita sovellusarkkitehtuurille. Tarkoituksena on taata järjestelmän rakennuspalikoiden yhteensopivuus ja dokumentoida valitut teknologiastandardit. Teknologia-arkkitehtuurin suunnittelusta käsiteltiin siihen liittyvät eri vaiheet: lähtötason kuvaaminen, näkökulmien ja työvälineiden valinta, tavoitearkkitehtuurin luominen, liiketoiminnan tarpeiden täyttymisen varmistaminen ja nyky- ja tavoitetilan kuilun analyysi. Teknologiasta olikin hyvä siirtyä lisensseihin ja avoimen lähdekoodin sovelluksiin, joista lähinnä mainittiin, että niitä on moneen lähtöön. Parempi olla tarkkana.

Tietoturva-arkkitehtuuria käsiteltiin sentään hieman laajemmin ja siitä on hyvä muistaa seuraavat kirjaimet: C = Confidentiality, I = Integrity, A = Availability. Arkkitehti valitsee miten tietoturvateknologioita ja työvälineitä käytetään tietoturvan toteuttamiseksi ja tietoturva-arkkitehtuurin rakennuspalikoita ovat: henkilöstön tietoturva tietoisuus ja koulutus, käyttäjähallinta, autorisointi ja autentikointi, toimien vahvistaminen, kriittisten osien eristäminen, tunkeutumisen havaitseminen ja estäminen, salaustekniikoiden käyttäminen ja virustorjunta. Lisäksi kerrottiin OWASP Top 10 -ongelmakohtien listauksesta (pdf) ja ettei kannata jäädä kymmeneen, sillä maailma muuttuu jatkuvasti. Aiheeseen liittyen tehtiin harjoitus elokuvateatterin lippujärjestelmän potentiaalisista tietoturvariskeistä ja niiden hallinnasta.

Tietojärjestelmän arkkitehtuurin voi suunnitella monella eri tavalla, eikä yhtä oikeaa ratkaisua ole, joten arkkitehtuuriratkaisun arviointi on tärkeää. Parasta se olisi suorittaa jo etukäteen, eikä vasta jälkeenpäin, vaikka se tällöin onkin helpompaa. Arvioida voi muun muassa ylläpidettävyyttä ja uusien ominaisuuksien ja bugien korjaamisen helppoutta ja nopeutta. Yksi keino tähän on käyttää ATAM:ia (Architecture Tradeoff Analysis Method) ja CBAM:ia (Cost Benefit Analysis Method), joita voidaan soveltaa arkkitehtuuria luodessa, kun projekti on ongelmissa ja jo olemassa olevaan arkkitehtuuriin.

Yhteenveto

Tietojärjestelmän arkkitehtuurin suunnitteluun on kehitetty erilaisia malleja, kursseja ja sertifiointeja, joiden avulla voidaan tähdätä parempaan lopputulokseen. Tieturin tietojärjestelmäarkkitehdin valmennusohjelma antaa hyvän yleiskuvan laajasta aihealueesta ja on kokonaisuutena aikamoinen annos aiheeseen liittyviä otsikoita ja ajateltavaa. Kurssi tarjosikin lähinnä paljon lähtökohtia lisäopiskelulle, eikä tarkemmin käsitellyt miten asioita pitäisi tehdä, joka olisikin ollut kurssin aikataulun ja aihepiirin laajuuden osalta mahdotonta.

Olisin itse kuitenkin kaivannut ehkä enemmän konkreettisempaa lähestymistä, jota kurssin neljäntenä ja viidentenä päivänä olikin hieman enemmän. Jos kurssista pitäisi mainita yksi mieleen jäänyt asia, on se 4+1 -malli, jonka käyttämistä arkkitehtuurin suunnittelussa käytiin läpi enemmän ja muita aihealueita sipaistaan siihen verrattuna suhteellisen pintapuolisesti.

Kurssi antaa pohjatiedot myös Open Groupin Certified Architect (Open CA) (aikaisemmin ITAC) sertifikaatin ykköstason suorittamiseen (edulliseen 1250 dollarin hintaan), jota pitää harkita.

Syyskuun WordPress Café Helsinki

Syyskuun WordPress Caféssa esiteltiin parhaita käyttökohteita ja rajatapauksia

Arkisin teen päätyökseni yhdeksästä viiteen Java EE -sovelluskehitystä, mutta vapaa-ajallani aikani menee ajoittain toiminimellä tehtyihin pienimuotoisiin WordPress-projekteihin ja tietenkin blogieni kanssa askarteluun. WordPress on kehittynyt paljon vuosien aikana ja olikin mielenkiintoista osallistua ensimmäiseen WordPress Café -tapahtumaan Exoven järjestämänä, jossa pääagendana oli Perttu Tolvasen esitys ”Best-fit concepts and typical edge cases for WordPress”. WordPress Café on avoin tapaaminen kaikille WordPressin käyttämisestä tai kehittämisestä kiinnostuneille.

WordPress Cafén idea on yksinkertainen ja samanlainen kuin vuosittaisella Nordic Atlassian User Groupilla. Avoin tapahtuma, jossa käyttäjät ja kehittäjät tapaavat virvokkeiden äärellä, aiheeseen liittyen pidetään lyhyt esitelmä ja lopuksi verkostoidutaan ja vaihdetaan kokemuksia.

Perttu Tolvasen (North Patrol) esitys ”Best-fit concepts and typical edge cases for WordPress” käsitteli kolmea kysymystä WordPressin käyttöön liittyen: Web-konseptit, joihin WordPress sopii erittäin hyvin; Rajatapaukset, joissa WordPress näyttää olevan yllättävän suosittu; Millainen tulevaisuus WordPressillä on Suomessa ja onko takaa tulossa haastajia?. Soveliaimmat käyttökohteet olivat aika ennustettavissa, sillä sen blogitausta tekee siitä kätevän tietyn tyyppisiin tarkoituksiin ja historia näkyy taustalla. WordPress on kuitenkin muuttunut vuosien saatossa enemmän CMS-tyyliseksi kuin pelkäksi blogialustaksi ja se kehitys varmasti jatkuu. Haastajien osalta Concrete5 kuulosti näppärältä. Aihe kirvoitti hyvin keskustelua sivuten myös muita sisällönhallintajärjestelmiä ja niiden hyödyntämistä eri hintasegmenteissä.

Ensimmäinen WordPress Café oli mielenkiintoinen tapahtuma ja oli mukava kuulla muiden kokemuksia WordPressin käytöstä ja tavata henkilöitä blogien takana. Osallistujia olisi tosin voinut olla enemmänkin, sillä Exoven konsultteja taisi olla paikalla lähes yhtä paljon kuin yleisöä ja verkostoituminen jäi hieman nihkeäksi, mutta itse en sillä saralla ole muutenkaan kovin luonteva.

Exoven ajatuksena on järjestää tapahtuma kerran kahdessa kuukaudessa ja seuraava ajankohta on marraskuun 12. päivä. Tarkempaa tietoa tulevasta tapaamisesta tullee Exoven sivuille lähempänä ajankohtaa.

OUYA-pelikonsoli tuo Androidin televisioon

Erilaisia vekottimia ei voi koskaan olla liikaa, joten viime syksynä tuin OUYA-projektia Kickstarter -palvelussa ja kesän alkupuolella joukkorahoitettu Android-pelikonsoli saapui postitse viimein myös Suomeen. OUYA-pelikonsoli on käytännössä pelaamiseen tarkoitettu ison kahvimukin kokoinen Android-laite, jossa on päällä kustomoitu käyttöliittymä ja ohjaus toimii langattomalla peliohjaimella, josta löytyy pieni kosketusalue. Kuulostaa ihan näppärältä, mutta millainen laite on käytännössä?

Kickstarter-rahoitettu OUYA-pelikonsoli
Kickstarter-rahoitettu OUYA-pelikonsoli

OUYA-pelikonsoli

Ison kahvimukin kokoinen OUYA-pelikonsoli on yksinkertainen, mutta monipuolinen Tegra 3 -neliydinprosessorilla varustettu Android-laite 8 GB sisäisellä muistilla. Kickstarter-joukkorahoituspalvelun kautta hankkimani pakkaus sisälsi konsolin lisäksi yhden Bluetooth-ohjaimen, virtalähteen, pikaoppaan ja HDMI-kaapelin. Lisäksi tilasin yhden lisäohjaimen, ihan vain varmuuden vuoksi. Laitteen yläreunasta löytyvän virtapainikkeen lisäksi takapaneelista löytyvät HDMI- ja USB-liittimet, mikroUSB-liitäntä ja virtaliitin. Verkkoon laitteen voi liittää RJ-45 -verkkoliittimellä (10/100) tai langattomasti (802.11n). Tuuletuksesta pitää huolen pohjasta löytyvä ilmanottoritilä ja tuuletin, mutta käytössä laite on aika äänetön. Konsoli pystyy HDMI-liitännän kautta 1080p:n tarkkuuteen ja rautapurkamaan videota, ja käytännössä jälki on samaa kuin uusissa älypuhelimissa.

OUYAa ei toistaiseksi kaupata Suomessa, mutta laitteen voi tilata esimerkiksi Amazon.co.uk:sta 99 punnalla eli noin 117 eurolla ja mukaan kannattaa laittaa virta-adapteri. Aivan alkuperäiseen 99 dollarin hintaan ei vanhalla mantereella päästä.

Tekniset tiedot

OUYA ei ole mikään tehomylly, mutta sitä tuskin kukaan odottikaan pieneltä Android-konsolilta. Tekniset ominaisuudet ovat kuitenkin ihan pätevät pieneen pelailuun ja multimedialaitteena toimimiseen.

  • Piirisarja: Nvidia Tegra 3 T33-P-A3
  • Prosessori: Neliydin 1.7 GHz ARM Cortex-A9 (ARMv7-A)
  • Grafiikka: Nvidia GeForce ULP @ 520 MHz (12.48 GFLOPS)
  • Grafiikkaominaisuudet: 1080p MPEG-4 AVC/h.264 40 Mbit/s High-Profile, VC1-AP ja DivX 5/6 videopurku
  • Muisti: 1 GiB DDR3-1600 SDRAM, jaettu CPU:n ja GPU:n kesken
  • USB-portit: 1 USB 2.0, 1 microUSB
  • Video-liitännät: HDMI 1.4; 1080p tai 720p -resoluutio
  • Audio-liitäntä: HDMI (ARC), 5.1 tai 2.0 kanavaa
  • Sisäinen muisti: 8 GB eMMC flash
  • Verkko: 10/100 Ethernet, 802.11 b/g/n, Bluetooth LE 4.0
  • Virrankulutus: 4.5 W (peli), 1 W (standby)
  • Virtalähde: 12v DC
  • Koko: 75x75x82 mm
  • Paino: 300 g
  • Käyttöjärjestelmä: Android 4.1 (Jelly Bean) kustomoidulla ulkoasulla

OUYA-peliohjain

Hopeisen harmaata ja mustaa muovia yhdistelevä langaton Bluetooth-peliohjain istuu käteen näpsäkästi, vaikka voisi olla aivan hieman pienempi. Ohjain on tuntumaltaan sopivan tukeva ja painava ja analogiset tatit ovat sijoitettu Xbox 360 -ohjaimen tavoin epäkeskosti. Netin arvosteluiden mukaan analogi-tattien liikerata on rajoittuneempi kuin Playstationin Dualshock 3:ssa tai Xbox 360:n vastaavissa. Tattien ja ristiohjaimen lisäksi ohjaimesta löytyy OUYA-painike, joka vastaa Androidin kotipainiketta ja toimintonapit, jotka ovat koristeltu OUYA-kirjaimin. Peliohjaimen keskiosasta löytyy kosketuslevy, jonka avulla OUYA osittain takaa toimivuutensa Android-sovellusten kanssa, jotka eivät ole virallisesti OUYA-yhteensopivia. Ohjain toimii kahdella ohjaimen kahvoihin asetettavalla sormiparistolla. Ohjain osaa myös käynnistää pelikonsolin.

OUYA-peliohjaimen heikoin lenkki on sen häiriöalttius. Etenkin olohuoneessani, jossa on muutakin elektroniikkaa, on ohjaimen toiminta hieman pätkivää, epätarkkaa ja välillä ohjain sekoilee ja liikkeet jäävät päälle peleissä. Esimerkiksi Shadowgunin pelaaminen on mahdotonta, kun ukko liikkuu miten haluaa. Sama häiriö näkyy muun muassa langattomassa RAPOO-näppäimistössäni, mutta ei PS3 tai Xbox 360 -ohjainten kanssa. Toinen miinuskohta on kosketuslevy, jonka tuki jää vajavaiseksi usean kosketuksen tuen puuttuessa ja sen tarkkuus on heikohko. Lisäksi ohjaimesta löytyvät liipaisimet ovat jäykähköt ja huonommat kuin jopa DualShock 3:ssa, toimintonapit jumittavat helposti, eikä ohjaimessa ei ole Menu-, Back- ja Home-painikkeita, joita useat (ei suoraan tuetut) pelit kaipaavat.

OUYA tukee USB-portin kautta PS3-ohjainta, joten tarvittaessa voi siirtyä käyttämään langallista ohjainta. PS3-ohjaimet saa paritettua myös langattomiksi ohjaimiksi, kun liittää ne kerran kaapelilla, sammuttaa konsolin, irrottaa kaapelin ja käynnistää uudestaan. Myös Xbox 360 -ohjaimia voi käyttää, jos tietokoneelle tarkoitetun USB-vastaanottimen kytkee OUYAn takapaneeliin. Netin keskusteluiden perusteella erilaisten ohjaimien sekoittaminen on periaatteessa huono idea, sillä ohjainten ID:t tuntuvat menevän helposti yli neljän, ja tämän jälkeen monet pelit eivät tunnista kaikkia ohjaimia. Sen sijaan kolmen Xbox 360-ohjaimen käyttö tuntuu olevan täysin ongelmatonta.

OUYAn kanssa on mahdollista käyttää myös ulkoista näppäimistö-hiiri -yhdistelmää, mikä tekee ainakin nettiselailusta paljon miellyttävämpää. Lisäksi on mahdollista käyttää toista Android-laitetta kuten tablettia tai puhelinta OUYA:n näppäimistönä tai peliohjaimen korvikkeena Blue Board -ohjelman avulla (Play-kauppa). OUYAlle ohjelma löytyy Discover > App -kategoriasta. Oma HTC Sensation suostui pienen säätämisen jälkeen muodostamaan yhteyden OUYA:aan, mutta jos luurissa poistui Blue Board -ohjelmasta, yhteys katkesi ja uudelleen yrittämällä sai aina aikaan ”Unable to connect: socket closed” -virheen. Vasta kun käytti Bluetoothin alhaalla, alkoi yhteys konsoliin taas toimimaan.

Lisää analyysia OUYA-pelikonsolista voi lukea muun muassa Polygonin artikkelista.

Sovellukset

OUYA pyörii Androidin päällä ja kirjoitushetkellä versio oli 4.1.2 eli Jelly Bean. Käyttöliittymä on muokattu yksinkertaisemmaksi ja peliohjainta ajatellen. Päävalikko koostuu ”PLAY”, ”DISCOVER”, ”MAKE” ja ”MANAGE” -kohdista, joiden takaa löytyvät pelit, pelikauppa, sovellukset ja asetukset. ”PLAY”-valikon alle asentuvat OUYA:n Discover-pelikaupasta ladatut pelit tai sovellukset, ”MAKE”-valikon alta löytyy muun muassa OUYA:n internet-selain, OUYA-uutiset ja APK-tiedostoista asennetut ”normaalit” Android-sovellukset ja ”MANAGE”-valikon alta löytyvät konsolin asetukset ja ilmoitusalue.

OUYA:lle on saatavilla kirjoitushetkellä 394 peliä, joita voi selata ”DISCOVER”-valikossa kategorioittain tai hakusanoilla ja lisäksi valikon etusivulla on listattuna suosituimmat pelit ja kehittäjä/kumppanien tekemät poiminnat. Monet saatavilla olevat pelit ovat enemmän tai vähemmän retro-henkisiä. Pelit ja ohjelmat ovat joko ilmaisia tai testattavissa ilmaiseksi ja täysversion ostaminen tapahtuu yleensä pelin sisällä olevasta ”buy full version” -toiminnosta. Ovelasti Discover-kaupan tiedoissa ei näy, onko peli kuinka suurelta osalta maksullinen ja paljonko se kustantaa. Yleinen hintataso peleillä näytti olevan 4-7 dollarin tienoilla. Osa peleistä on käännöksiä Android-kosketusnäyttöpeleistä, jotka käännöksessä hävittävät osan magiastaan, mutta osa peleistä toimii vastaavasti paremmin tattiohjaimilla kuin kosketusruudulla.

Lisäksi jos haluaa askarrella konsolin kanssa enemmän, löytyy XDA-developers -foorumilta lista OUYA modeista, joilla saa muun muassa Google Play -kaupan asennettua. Tämä mahdollistaa esimerkiksi jo ostettujen pelien pelaamista myös OUYAlla, jos ne vain tukevat peliohjainta, eivätkä tarvitse Menu-, Back- ja Home-painikkeita. Miinuspuolena jokaisen OUYA:n päivityksen jälkeen on Play-kauppa asennettava uusiksi, ellei asia ole viime aikoina muuttunut. Ei kovin kätevää.

Discover-kaupan tarjonta

Harmillisesti pelejä ja sovelluksia ei voi asentaa suoraan OUYA:n nettisivujen kautta, mutta ainakin niitä voi selailla. En ole kovin aktiivisesti ehtinyt käymään läpi OUYA:n virallista Disover-kaupan ohjelmistotarjontaa, mutta tässä muutamia poimintoja:

Sovellukset:

  • XBMC on OUYA: Media-keskus sovitettuna OUYAlle.
  • Plex: Media-suoratoistosovellus
  • Kainy: Etäpelisovellus, joka mahdollistaa pelata OUYA:n kautta esimerkiksi toisessa huoneessa olevan PC:n Steam-pelejä.
  • Blue Board: Android-laitteen käyttö näppämistönä

Pelit:

  • Antichromatic: Vaikea kahta eri ulottuvuutta yhdistävä tasohyppely
  • Ninja Twins: Ohjaat kahta ninjaa läpi 30:n visaisen kentän
  • League of Evil: 54-kentän + maksullisten kenttien tasohyppely, jossa estetään tiedemiehiä tekemästä pommia
  • TowerFall: Neljälle pelaajalle jousipyssytaistelu tasohyppely, tukee X0 ja PS3 -ohjaimia
  • Puddle THD: Ohjaa nestettä 8 maailman ja useiden kenttien läpi (Independent Games Festival 2010 voittaja)

Voisin harkita ostaa:

  • Sine Mora: Tarinallinen sivulle skrollaava lentokoneräiskintä, 3$
  • Shadowgun: 3:n persoonan räiskintä, 5$
  • Choplifter HD: 30:n tehtävän helikopteripelastuspeli, muutama tehtävä koukuttamaan, loput 4$
  • Cube and Creature: Haastava tasohyppely tyyliin Super Meat Boy, 12 kenttää testiksi, loput 3$

Muita testattuja:

  • Globulous: hieman Tetris-mäinen 3-D palikkapähkinä, jossa etsitään kahta samaa väriä pallon sisällä, 14 pähkinää, loput 2$
  • Gravi: Ohjaa sinistä energiapalloa läpi vaikeuksien. 10 ilmaista kenttää.
  • The Ball: 3D-seikkailupeli tulivuoren luolarakennelmassa pyöritellen palloa eri ongelmien ratkaisemiseksi
  • Red: Ylhäältä kuvattu palikkaukkoräiskintä mutantteja vastaan, 1 kenttä kokeeksi, muuten 5$

Omien ohjelmien asentaminen
OUYA on käytännössä mikä tahansa Tegra 3 -piirisarjallinen Android-laite, joten siinä toimivat myös sovellukset, jotka eivät ole virallisesti tuettuja. Omien ohjelmien sivustalataaminen konsoliin vaatii hieman askartelua, mutta helpottuu kunhan asentaa esimerkiksi AirDroid-sovelluksen (Play-kauppa). AirDroid mahdollistaa OUYAn hallinnan suoraan selaimesta tietokoneelta ja muun muassa APK-tiedostojen asentamisen. Alkuun pääsemiseksi asensin ensin AirDroidin puhelimeeni, latasin sen APK:n tietokoneelle AirDroidin Web-hallinnan kautta, siirsin sen nettipalvelimelle ja latasin sen OUYAlle selaimen kautta. Todella kätevää!. Ladatut tiedostot menevät konsolissa Manage > System > Advanced > Storage > Downloads, josta niitä voi asennella. AirDroid mahdollistaa monta asiaa ja vielä enemmän kuten ruudun reaaliaikaisen kaappaamisen, jos OUYAn roottaa ja asentaa Superuserin.

Netflix
Harmillisesti Netflixiä ei ainakaan vielä löydy suoraan OUYAn sovelluskaupasta, mutta asennus onnistuu asentamalla APK erikseen. Helpointa on tuoda APK esimerkiksi luurista AirDroidin avulla ja asentaa samaa kautta OUYA:lle. Koska Netflix ei tue virallisesti vielä OUYA:aa, on sen toimivuus hieman rajoitettua etenkin kuvanlaadun osalta, joka on jotain 10″ -tabletin tasoa, mutta kuitenkin katsottavaa ainakin 40″ -televiossa, jos ei ole kovin hifisti. Toivottavasti Netflix tekee virallisesti tuetun version myös OUYAlle, sillä media-alustana pieni pelikonsoli on mitä mainioin ja tehojenkin uskoisi riittävän.

Emulaattorit
Yksi mielenkiintoinen sovellutus OUYA:lle ovat erilaiset emulaattorit, joita Discover-kaupasta löytyy käytännössä kaikille yleisimmille emuloiduille alustoille. Netin kirjoitusten mukaan Nintendo64-emulaatio on jopa pelattavalla tasolla ja myös SNES-seikkailut onnistuvat, vaikka ikävästi muotoiltu ristiohjain häiritsee. Jos vanhojen alustojen pelit kiinnostavat, niin OUYA lukee FAT32-muotoisia USB-tikkuja, mutta tikun tunnistamiseen pitää konsolin olla sammutettuna, kun se kytketään laitteeseen. Tämän jälkeen tiedostot löytyvät polusta /mnt/usbstick.

Yhteenveto

OUYA-pelikonsoli on tällä hetkellä vielä hieman ristiriitainen tuote, sillä vaikka se on helppo käyttää ja pelejä löytyy kohtalaisesti, vaatii sen täysimittainen hyödyntäminen vielä hieman virittämistä ja kokonaisuus on vielä karkea. Media-alustana se toimii kelvollisesti ja itse odotan etenkin sillä saralla laitteelle käyttötunteja, jos vain vielä Netflix toimisi paremmin. Konsoli herättää monella tasolla lupauksia, mutta ei aivan täytä niitä. Kokonaisuus on selkeästi vielä kehitteillä ja on kiinnostavaa nähdä miten se kehittyy, etenkin kun OUYA on kertonut päivittävänsä rautaa vuosittain.

Plussaa:

  • Avoimuus
  • Koko
  • Monipuolisuus: pelejä ja mediatoistoa
  • Yhteensopivuus perinteisten konsoliohjainten kanssa

Miinusta:

  • Google Play -tuen puute
  • Ohjaimen häiriöherkkyys, nappien jumitus ja nappien puute

Yip.fi-sivuston uudistaminen WordPressille

Teen ajoittain pienimuotoisia projekteja toiminimellä ja kesälomani aikana uudistin YIP Ympäristöinsinööripalvelut Oy:n -sivuston. Projektissa vanha kaksikielinen HTML-sivusto siirrettiin WordPress-alustalle ja muutamien lisäosien avulla rakennettiin dynaaminen kokonaisuus vastaamaan vanhaa toiminnallisuutta. Pieni projekti, jonka lopputulos helpottaa jatkossa huomattavasti sivuston ylläpitoa ja päivittämistä.

YIP Ym­pä­ris­töin­si­nöö­ri­pal­ve­lut Oy on vuon­na 2005 pe­rus­tet­tu ympäristösuunnittelu ja -konsultointiyritys, joka tekee muun muassa hulevesi-, prosessivesi- ja jätevesisuunnittelua ja ym­pä­ris­tö­lu­pa­- ja maa-aineslupaselvityksiä ja -hakemuksia. Yrityksen vanhat sivut olivat staattiset kaksikieliset HTML-sivut, jotka päätettiin uudistaa WordPress-alustalle isomman sisältöpäivityksen yhteydessä. Näin saataisiin sivujen päivitys jatkossa helpommaksi ja nopeammaksi sekä lisättyä mahdollisuus artikkeleiden kirjoittamiseen.

Yip.fi-sivuston uudistamisessa ei tehty juurikaan muutoksia aikaisempaan HTML-sivustoon, vaan ulkoasu siirrettiin lähes sellaisenaan WordPress-teemaksi. Vain sisältöosan taustaväri vaihdettiin valkoiseksi ja uusina osioina lisättiin tyylit blogi-kirjoituksille. Pieniä muutoksia tarvittiin myös Internet Explorerin vanhempien versioiden ja HTML5:n osalta.

WordPress-teeman rakentaminen

En alkanut rakentamaan uutta teemaa aivan tyhjästä, tai pohjautuen esimerkiksi WordPressin oletusteemoihin, vaan käytin hyväksi todettua Automatticin _s, eli underscores -teemaa, joka tarjoaa selkeän lähtötilanteen uuden teeman rakentamiseksi. Aloitusteema sisältää minimaalisen ja hyvin jäsennellyn CSS:n, HTML5-sivupohjat ja 5 eri taittoa ja muutamia yleisiä navigointiin ja teeman rakentamiseen liittyviä lisäyksiä. Eli juuri riittävästi perustusta, jonka päälle rakentaa oma kokonaisuus.

Underscores-aloitusteema tarjoaa myös pohjan teeman lokalisoinnille POT-käännöstiedoston kautta, mutta ei tarjoa valmista käännöstä eri kielille kuten WordPressin oletusteemat. Sanojen ja lauseiden kääntäminen onnistuu suhteellisen helposti esimerkiksi Poedit-ohjelmalla, kun vielä hyödyntää oletusteemojen suomennoksia apuna.

Vanhempien Internet Explorer -selainversioiden HTML5 -yhteensopivuuden takaamiseksi sivustolle asetettiin html5shiv-skripti, joka mahdollistaa HTML5 elementtien käytön.

Käytetyt lisäosat

WordPress tarjoaa suoraan paketista hyvän perustan sivuston rakentamiseksi ja erilaisten lisäosien avulla se taipuu monenlaisiin käyttötarkoituksiin. Yip.fi-sivusto on toiminnaltaan suhteellisen yksinkertainen ja käytetyt lisäosat liittyvät pääosin kaksikielisyyteen, yhteydenottolomakkeeseen ja hakukonenäkyvyyteen.

Monikielisyyden toteuttamiseen käytin WPML-lisäosaa, joka aikaisempien kokemuksien perusteella toimii paremmin kuin qTranslate, tai ratkaisut jotka hyödyntävät multisite-toimintoa kuten Multilingual Press. Jatkossa pitänee testata myös Polylangia.

Monikielisyyden takia tarvitsin myös lisäosan, jolla saa määriteltyä omat sivupalkit eri kielille. WooSidebars-lisäosa täytti vaatimuksen, vaikka nyt Ulkoasu > Vimpaimet -sivu on hieman sekava näyttäen kaikkien kielien sivupalkit samalla kertaa. Vaihtoehtoisesti olisin voinut käyttää Dynamic Widgets -lisäosaa, mutta aikaa ei ollut enää sen testaamiseksi. Lisäosa mahdollistaa myös sivupalkkien määrittämisen sivukohtaisesti.

Sivuston title-, description- ja keywords-kenttien päivittämistä varten Add Meta Tags -lisäosa vaikutti toimivalta ratkaisulta ja sen avulla jokaiselle sivulle ja kirjoitukselle voi määritellä omat tiedot suoraan muokkausnäkymästä.

Yhteydenottolomake toimii Contact Form 7 -lisäosan avulla ja Flamingo-lisäosa tallettaa lähetetyn sanoman. Huomasin lomaketta rakentaessa myös virheen lisäosien yhteistyössä, sillä jos lomakkeessa käyttää valintaruutua your-subject-kentässä, ei lomake anna kuittausviestiä, vaikka se lähetetään onnistuneesti.

Sivuston toimintoja varten piti myös toteuttaa oma lisäosa alisivujen näyttämiseksi, sillä en löytänyt lukuisista lisäosista sellaista, joka olisi toiminut kuten haluttiin. Tekemäni Sub Page Menu -lisäosa näyttää sivun alisivut myös lukijan ollessa alisivulla ja alisivujen alisivut vain ollessa alisivulla. Lisäksi viimeisimpien kirjoitusten näyttämiseen piti laajentaa hieman WordPressin vakiovimpainta, jotta vimpaimen otsikko toimii linkkiä artikkeleiden sivulle.

Muut käytetyt lisäosat ovat Google XML Sitemaps sivukarttojen muodostamiseen, jQuery Colorbox kuvien avaamiseksi modaali-ikkunaan ja sivuston kakutuksesta vastaa WP Super Cache.

Yhteenveto

YIP Ympäristöinsinööripalvelut Oy -sivuston uudistaminen WordPress-alustalle staattisen kaksikielisen HTML-sivuston pohjalta oli suhteellisen pieni projekti, mutta sisälsi muutamia enemmän säätöä vaativia vaiheita etenkin monikielisyyden ja sivupalkkien, sekä alisivujen näyttämisen osalta. Vanha ulkoasu muuntui muutamilla muutoksilla WordPress-teemaksi, sillä vanha rakenne muistutti _s-aloitusteeman tarjoamia HTML5-sivupohjia. Lopputuloksena saatiin aikaan ulkoasultaan tuttu sivusto päivitetyllä sisällöllä, jonka päivittäminen on jatkossa helpompaa sekä sisällön että ajankohtaisten artikkeleiden osalta.

yip.fi-sivusto WordPress-alustalla
yip.fi-sivusto WordPress-alustalla

Yksi sovellus, kolme Java EE -käyttöliittymäkehystä

Sovelluskehityksessä käyttöliittymän rakentaminen ja käyttäjille näkyvien toimintojen toteuttaminen on yksi tärkeimmistä osuuksista, sillä hyväkin sovellus voi kaatua heikkoon käyttöliittymään. Java EE -sovelluskehityksessä on tarjolla useita erilaisia käyttöliittymäkehyksiä, jotka tarjoavat työkalut toimivan käyttöliittymän rakentamiseen, mutta käyttötarkoitukseen sopivan välineen valinta ei ole aina yksiselitteistä. Oli siis aika päivittää hieman tietoja erilaisten Java EE -käyttöliittymäkehysten osalta ja tutustua Vaadin 7:aan, Java Server Faces (JSF) 2:een PrimeFacesin kanssa ja Apache Wicket 6:een toteuttamalla yksinkertainen imgur-kuvaselaussovellus. Aikaisemmin olen kehittänyt sovelluksia käyttäen muun muassa Strutsia, JSF 1.2:sta ja Wicket 1.5:sta.

Java EE 6 -sovelluksia voi toteutta monella eri tekniikoilla ja tällä kertaa toteutin käyttöliittymäkerroksen usealla eri tavalla (Vaadin 7, JSF2, Wicket 6) ja pitäen taustapalvelut vakiona. Imgurin REST-APIn käsittelyyn käytin jokaisessa sovelluksessa Apache CXF:ää rajapinnan lukemiseen ja GSONia JSON-sanoman muuntamiseen Java-olioiksi. Vaikka kaikki kolme kehystä tukevat Java EE 6:n JSR 299 CDI:tä, tein Java Beanien injektoinnin Spring 3:lla, joka toimi varmasti myös vanhemman WebLogic 11g -sovelluspalvelimen kanssa. Jettyllä tai TomEE:llä ajettaessa ei olisi ollut mitään ongelmaa.

Sovellusten koodit löytyvät GitHubista (https://github.com/walokra/fotorest.git), vaikkakaan ne eivät ole mitenkään viimeisteltyjä. Ehkä niistä kuitenkin on jollekin hyötyä.

Sovellus 1: Vaadin 7

Vaadin on avoimen lähdekoodin Java-sovelluskehys Web-sovellusten rakentamiseen ja muistuttaa enemmän työpöytäsovellusten tekemistä esimerkiksi Java Swing -kehyksellä kuin perinteistä Web-sovelluskehitystä HTML:n ja JavaScriptin kanssa. Vaadin rakentuu Google Web Toolkitin päälle ja käyttää GWT:tä sivujen renderöintiin. Vaadin on suomalaisen Turussa pääkonttoriaan pitävän Vaadin Oy:n kehittämä. Vaadin 7 julkaistiin pari kuukautta sitten.

Vaadin tarjoaa perinteiselle Java-kehittäjälle helpomman lähestymisen Web-sovellusten kehittämiseen, kun käyttöliittymän rakentaminen onnistuu ilman HTML:n ja JavaScriptin kanssa askartelua. Vastaavasti HTML:ää osaavalle kehittäjälle Swing-tyylinen käyttöliittymän rakentaminen voi olla tuskastuttavaa. Vaadin tarjoaa itsessään kattavan valikoiman erilaisia käyttöliittymäkomponentteja ja erilaiset demot antavat hyvän kuvan mitä Vaatimella saa aikaan.

Yksinkertaisen imgur-selaajan toteutus Vaadin 7:lla luonnistui nopeasti, kun olin ensin sisäistänyt Swing-tyylisen käyttöliittymän idean. Toimivan ulkoasun ja muutamat toiminnot sai rakennettua suhteellisen helposti ja lopputuloksesta tuli siisti. Koska Vaadin-sovellus on käytännössä kasa Javascriptiä, on sen debuggaaminen hieman hankalampaa, mutta kehys tarjoaa avuksi kohtalaiset työvälineet (?debug-parametri). Käytin Vaatimen oletusteemaa, koska muut teemat eivät vielä uusinta versiota tukeneet. Uuteen kehykseen tutustumisessa auttoi myös Vaatimen laadukas dokumentaatio ja keskustelufoorumi, vaikkakin moni keskustelu ja netistä löytyvä esimerkki käsitteli aikaisempaa 6 versiota.

Fotorest-sovellus toteutettuna Vaadin 7:lla:
Fotorest Vaadin 7

Sovellus 2: JavaServer Faces 2 + PrimeFaces

JSF 2 eli Java Server Faces on Javan spesifikaatio Web-sovellusten komponenttipohjaisten käyttöliittymien rakentamiseen ja osa Java Enterprise Editionia. Sovellus koostuu HTML:ää ja Facelet-tageja sisältävistä -XML-tiedostoista, jotka kehys prosessoi ja tarjoilee käyttäjälle. JSF:n 2 -versio julkaistiin 2009 ja tuorein 2.2. versio huhtikuussa 2013.

Sovelluksen ulkoasun rakentaminen ei juurikaan eroa normaalista Web-kehityksestä, joten HTML ja CSS -osaaminen ovat tarpeen siistin käyttöliittymän aikaansaamiseksi. JSF:n tarjoamia ominaisuuksia ja komponentteja voi laajentaa muun muassa PrimeFaces tai RichFaces -komponenttikirjastoilla, joilla käyttöliittymään saa enemmän kilkettä ja parempaa käytettävyyttä.

JSF 2:n oli sovelluskehitysalustana suhteellisen tuttu, sillä olin käyttänyt sitä pienen prototyypin tekemiseen pari vuotta sitten, eikä vuosien aikana mikään ollut juuri muuttunut. Täten uutena asiana oli enemmänkin PrimeFaces -käyttöliittymäkomponenttien käyttäminen. Yksinkertainen kuvaselaaja syntyi lähes yhtä helposti kuin Vaadinta käytettäessä, vaikka osa toiminnoista piti koodata sivupohjiin ja osa Javan puolelle ja käyttöliittymän dynaamisessa päivittämisessä oli alkuun pieniä ongelmia. PrimeFaces tarjosi kattavan listan erilaisia käyttöliittymäkomponentteja ja niiden ulkoasua oli helppo muokata jQuery UIn ThemeRollerin avulla.

Fotorest-sovellus toteutettuna JSF 2 + PrimeFacesilla:
Fotorest JSF 2 + PrimeFaces

Sovellus 3: Apache Wicket 6

Apache Wicket on avoimen lähdekoodin komponenttipohjainen Web-sovelluskehys Javalle. Lyhyesti kuvattuna Wicket on kuin yhdistelmä Vaadin ja JSF -kehyksiä, sillä käyttöliittymä rakentuu HTML-sivupohjista ja tapahtumiin reakoivista komponenteista. Sovelluksen ulkoasun voi täten rakentaa HTML:llä ja lisätä toiminnot Javan puolelta juurikaan koskematta sivupohjiin. Wicket 6 julkaistiin syksyllä 2009.

Wicket ei JSF:n tavoin tarjoa peruskomponentteja enempää, mutta käyttöliittymän toiminnallisuuksien laajentamiseen voi käyttää useita jQuery-pohjaisia komponenttikirjastoja kuten Wicket – jQuery UI, jqwicket ja wiquery. Vaikka komponenttikirjastoja on useita, ovat niiden heikkous ajantasaisuus (esim. jqwicket vain 1.5 versiolle), eivätkä ne eivät ole aivan yhtä kattavia kuin mitä Vaadin tai JSF:n kirjastot tarjoavat.

Ideana HTML-sivupohjat ja työpöytäsovellusmaisen tapahtumapohjaisuuden yhdistelmä on hyvä, mutta jotenkin kokonaisuus ei ole yhtä miellyttävä kuin JSF 2 tai Vaadin. Kehittäjän kannalta Wicketissä on monia hyviä puolia, kuten toimintojen liittäminen komponentteihin ja niiden uudelleenkäyttö on kätevämpää kuin JSF 2:ssa ja sovelluksen kehittäminen on kohtalaisen selkeää, kun toiminnot ovat yhdessä paikassa eikä sekä sivupohjassa että Java-luokassa kuten JSF 2:ssa. Itseäni eniten Wicketin osalta harmittaa kuitenkin kattavien komponenttikirjastojen puute, joka tekee käyttöliittymän toiminnallisuuksien rakentamisesta hieman työlästä, kun asiat joutuu toteuttamaan itse. Yksinkertaista kuvaselaajaakin varten piti tehdä muutamia lisäluokkia, eikä valmista loputtomasti skrollaavaa taulukkokomponenttia ollut saatavilla.

Fotorest-sovellus toteutettuna Wicket 6:lla:
Fotorest Wicket 6

Yhteenveto

Kolme Java EE -käyttöliittymäkehystä ja kolme erilaista tapaa lähestyä käyttöliittymän rakentamista. Vaadin 7 tarjosi nopeasti siistiä Swing-tyylisesti komponenttien kera, JSF 2 + PrimeFaces luotti perinteisempään komponenttipohjaiseen HTML:ään ja tageihin ja Wicket 6 oli joukosta hieman työläämpi komponenttipohjainen ratkaisu. Kokonaisuutena Vaadin on selkeästi yhtenäisin paketti ja sekä JSF:n että Wicketin kanssa on hieman enemmän askarreltavaa, joka toki myös tarjoaa vapauksia.

Jokaisella kehyksellä sai aikaan suhteellisen pienellä vaivalla yksinkertaisen imgur-kuvaselaajan haun kera. Jos pitäisi saada nopeasti valmista, niin kenties toteuttaisin sen Vaatimella, jolloin aikaa ei mene niin paljoa käyttöliittymän kanssa taisteluun. Valmiiden sivupohjien kanssa JSF 2:llakin syntyy koodia nopeasti. Kaikissa kolmessa on kyllä omat jekkunsa ja ”ongelmansa” muun muassa sessioiden koon ja selaimen kuormittavuuden osalta.

Seuraavaksi tutustumislistalla JVM:ssä toimivien kehysten osalta on ehkä Spring MVC, Play Framework, Grails ja puhdas GWT. Lisäksi Node.js:llä toteutettu kuvaselain on jo osittain tehty.

Tietojärjestelmäarkkitehdin valmennusohjelma, osa 1

Tietojärjestelmät eivät rakennu itsestään, vaan niiden kehitys vaatii monia askelia vaatimusmäärittelystä, suunnitteluun, toteutukseen, testaukseen ja toimittamiseen. Yksi tärkeä askel on järjestelmän arkkitehtuurin suunnittelu, joka luo perustan onnistuneelle ratkaisulle. Tietojärjestelmän arkkitehtuurin suunnitteluun on kehitetty erilaisia malleja, kursseja ja sertifiointeja, joiden avulla voidaan tähdätä parempaan lopputulokseen. Tieturi on useamman vuoden ajan järjestänyt 3+3 -päiväistä ”Tietojärjestelmäarkkitehdin valmennusohjelma” -kurssia, jossa käsitellään tietojärjestelmäarkkitehdin työssä tarvittavia monipuolisia taitoja ja keinoja erinomaiseen ratkaisuun pääsemiseksi. Osallistuin kurssin ensimmäiselle kolmipäiväiselle teoria- ja alustuspainotteiselle osiolle alkuviikosta ja tietämystä kertyi suurilta osin avainteemoista ja 4+1 -mallin hyödyntämisestä. Kurssin toinen osa on edessä syksyllä.

Jatka lukemista ”Tietojärjestelmäarkkitehdin valmennusohjelma, osa 1”