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.
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ä?
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)
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.
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
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 Ympäristöinsinööripalvelut Oy on vuonna 2005 perustettu ympäristösuunnittelu ja -konsultointiyritys, joka tekee muun muassa hulevesi-, prosessivesi- ja jätevesisuunnittelua ja ympäristölupa- 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.
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.
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:
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.
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:
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ä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ä.
HTC on tunnetusti nihkeä päivittämään vanhoja puhelimiaan ja niinpä myös nyt vajaan parin vuoden ikäinen HTC Sensation jäi ilman Android 4.1 Jelly Beania, joka olisi varmasti tuonut vanhahkoon puhelimeen uutta puhtia. Olin jo kertaalleen asentanut vakiona tulleen Android 4.0 Ice Cream Sandwich -ROMin uudestaan, mutta lopulta puhelimen käyttö oli jälleen aivan tuskaisen hidasta. Täten ratkaisuna uuden elämän puhaltamiseen oli rootata puhelin ja asentaa siihen tuoreempi ohjelmisto: CyanogenMod 10. Operaatiossa oli muutamia lisävaiheita hboot 1.27.000 -version, HTCDevin ja ClockworkModin myötä, mutta kyllä se kohtalaisen helposti lopulta sujui.
Näppäimistöt ovat edelleen erittäin tärkeitä välineitä tietokoneen ja ihmisen vuorovaikutuksessa ja niiden toivoisi toimivan kitkattomasti. Mutta jos kaupasta tuo kotiin langattoman HTPC-käyttöön suunnitellun Rapoo E2700 -näppäimistön, jonka näppäimet ovat puolet pienempiä kuin sormet ja kosketuslevy luottokorttia pienempi, ei käyttömukavuudelta voi paljoa odottaa.
Rapoo e2700 -HTPC-näppäimistö
Rapoo e2700 on erittäin pienikokoinen HTPC-käyttöön suunniteltu langaton näppäimistö, josta löytyy näppäimistön lisäksi myös kapea kosketuslevy. Kooltaan metalliseen runkoon kasattu yhdistelmä on 82 x 254 x 5,8 mm, josta kosketuslevylle on varattu 79 x 47 mm, eli noin viidesosa. Aivan reunoille ulottuvat näppäimet ovat matalat ja ohuen näppäimistön muotoilu on yksinkertaista ja pelkistettyä. Metallirungon ansiosta tuntuma on kuitenkin jämäkkä. Näppäimistö toimii 2,4 GHz taajuudella ja 10 metrin etäisyydellä, mutta omassa olohuoneessani herkkyys kärsi jo lyhyemmilläkin etäisyyksillä, jos ”näköyhteys” ei ollut selkeä. Näppäimistö on yhteensopiva Windows XP-, Vista-, 7 ja 8 -versioiden kanssa, eikä erillisiä ajureita tarvita. Takuuta on kaksi vuotta.
HTPC-näppäimistön pieni fyysinen koko näkyy näppäinten koossa ja sijoittelussa. Näppäinasettelun ahtauden ja koon takia sormituntumaan ei voi luottaa ja näppäimistöön on vilkuiltava kirjoittaessa hiemankin enemmän. Lisäksi skandinaavisten näppäinten osalta on tehty suuria kompromisseja ja Ä- ja Å -kirjaimet ovat sijoitettu alariviin välilyönnin oikealle puolelle ja ne ovat Ö:n kanssa lähes puolta pienempiä, kuin muut kirjainnäppäimet. Myös muut alarivin näppäimet (Ctrl, Alt, Win) ovat pieniä, joka tekee niiden käyttämisestä jo valmiiksi pienessä näppäimistössä erittäin hankalaa. Lisäksi oikean käden pikkusormi harhailee helposti kosketuslevylle, joka aiheuttaa epätoivottuja asioita.
Näppäimet ovat erittäin matalia, muotoilultaan tasaisia ja niiden välit ovat käytännössä olemattomat. Näppäimissä käytetään saksimekanismia, joka e2700:n tapauksessa sallii hieman epätasaisen painumisen, näppäinhattujen heilumisen ja hienoisen helimisen. Näppäinten liikerata on lyhyt ja tuntuma kohtalaisen miellyttävä. Merkinnät on tehty näppäimiin printtaamalla.
HTPC-käyttöä ajatellen funktionäppäimet toimivat Fn-näppäimen kautta myös erilaisisa multimedia-, selain- ja pikavalintatoiminnoissa, ja nuolinäppäimistä löytyy PgUp/PgDn ja Home/End. Näppäimistön takapuolelta löytyy muovinen koroke, jossa keskellä on paristokotelo ja virtakytkin, ja toisessa päädyssä pieni aukko USB-lähettimen säilytykseen. Kumitassut ovat vain näppäimistön etukulmissa.
Kosketuslevy tukee muutamia kosketuseleitä, kuten kahden sormen vieritystä ja sen pinta on päällystetty karheapintaisella muovitarralla. Kosketuslevy on kooltaan pystysuunnassa riittävä, mutta leveyssuunnassa turhan kapea, joka tekee vedä & pudota -toiminnosta hankalan. Kosketuslevyn tuntuma on kohtalainen, mutta hieman epävarma, eikä näppäimistö lyhyen käyttämättömyyden jälkeen ”herää” eloon kuin näppäimistä.
Verkkokauppa myy E2700 -mallia 49,90 eurolla, mutta itse bongasin sen Stockmannin Hulluilta päiviltä 29,90 eurolla, joka näppäimistöä jonkin aikaa käytettyä on sille ihan sopiva hinta. Jos olisi pitänyt maksaa täysi hinta, olisin ennemmin päätynyt hieman kalliimpaan Rapoo E9080 -malliin (59,90e), joka on kooltaan myös suurempi ja täten kenties hieman mukavampi käyttää.
Tarkempaa analyysia ja vertailua pienestä HTPC-näppäimistöstä voi lukea Muropaketin testistä, jossa se oli kolmen muun edullisen HTPC-näppäimistön kanssa.
Yhteenveto
Rapoo e2700 HTPC-näppäimistön voi tiivistää olevan pieni, yksinkertaisen tyylikäs ja sopiva kevyeen käyttöön, mutta on hieman kaksijakoinen kokemus. Periaatteessa se ajaa asiansa, mutta ahdas ja sekava näppäinasettelu ja häiriöherkkyys takkuiluneen tekee hiemankin pidemmästä kirjoittamisesta epämiellyttävää, vaikka näppäintuntuma on ihan hyvä. Kokonaisuudesta olisi saatu paljon toimivampi, jos näppäimistö+kosketuslevy -yhdistelmästä olisi tehty hieman suurempi. Toisaalta voi todeta, että vaikka käyttömukavuus ei ole aivan parhain, on se käyttötarkoitukseensa nähden kelvollinen ratkaisu satunnaiseen HTPC-käyttöön.