Vaadin tarjoaa Swingiä Web-sovellusten kehitykseen

Web-sovellusten kehitys Javalla on täynnä erilaisten frameworkkien kuten Strutsin, Springin ja JSF:n hyödyntämistä, joista jokaisessa on hyvät ja huonot puolensa ja varsinainen toteutus on usein sekoitus HTML-merkkausta ja koodia. Java EE -sovelluskehitystä voi kuitenkin katsella myös hieman erilaisesta näkökulmasta: Suomalainen IT Mill on rakentanut kokonaisuuden nimeltä Vaadin, joka tuo Javan Swing -maailman Web-sovelluksiin. Lopputuloksena on sovelluskehys, jossa HTML:n koodaaminen unohdetaan lähes täysin ja sovellusta toteutetaan samalla periaatteilla kuin työpöytäsovelluksia, joka on kätevää, jos tykkää Java Swing -tyylisestä sovelluskehityksestä.

Vaadinta voi lyhyesti kuvata sanomalla sen olevan Swing-koodausta sekä hyvässä että pahassa. Web-sovelluksen toteutus Vaatimella on suhteellisen helppoa, mutta toisaalta se myös Swingin tapaan rajoittaa käyttöliittymäsuunnittelua. Toteutuksessa HTML:n ja komponenttien säätäminen jää pois, jolloin toteuttajat voivat keskittyä varsinaiseen toimintaan kuuntelijoiden ja tapahtumien parissa. Kokonaisuutena kehitys on tavallaan selkeämpää kuin esimerkiksi JSF:llä, jossa toiminnot hajoavat sekä sivuille että Java-luokkiin ja erilaisia säädettäviä XML:iä on useita. Totuus ei tietenkään ole aivan näin yksinkertaista, mutta melkein.

Sovelluskehityksen osalta Eclipselle on saatavilla WYSIWYG-editori ja sovelluksen debuggaus onnistuu normaalisti debug-moodissa ja käyttöliittymän osalta Firefoxin Firebug-lisäosalla, eli sen osalta ei ole mitään ihmeellistä. Käytettävissä on useita erilaisia komponentteja ja hyvä dokumentointi, joilla toimintoja rakentaa. Tutoriaalien avulla pääsee helposti alkuun ja näkee mistä asiassa on kyse. Vaadin on lisensoitu avoimen lähdekoodin Apache License versio 2.0 -lisenssillä, joten tarvittaessa sen laajentaminen ja bugien korjaaminen on mahdollista. Saatavilla on myös maksullista tukea ja palveluita.

Vaadin perustuu Google Web Toolkitin päälle, jota käytetään selaimelle piirtämiseen ja GWT:hen verrattuna Vaadin-sovellukset pyörivät palvelinpuolella, kun GWT on selainpuolen sovellus. Vaadin-sovellus on paljolti sidottu JavaScriptiin ja siinä on mielestäni myös sen heikoin lenkki, sillä suorituskyvyllisesti käytetty lähestymistapa ei ole kovin tehokas. Etenkin monimutkaisilla käyttöliittymäkomponenteilla ja ulkoasuilla selaimen JavaScript-suorituskyky tulee äkkiä vastaan, vaikkakin tällä saralla on etenkin Googlen Chrome ja Safari kunnostautuneet. Muuten komponentit toimivat hyvin riippumatta käytettävästä selaimesta.

Vaikka Vaadin tavallaan yksinkertaistaa rikkaiden Internet sovellusten (RIA) tekemistä, pidän itse enemmän perinteisestä Java Server Facesiin (JSF) pohjautuvasta Web-kehityksestä. JSF:n kanssa käyttöliittymän koodi on erikseen HTML:ssä, johon on lisätty tarvittavat sidokset ja dynaamisuutta. Tietenkin tässäkin tavassa on omat ongelmansa, etenkin kun JSF 1.2 ja käyttöliittymäkomponentit ovat mitä ovat. Ehkä taustani Web-koodaajana vaikuttaa siihen, että pidän enemmän siitä, että pääsen helpommin näkemään ja säätämään käyttöliittymää HTML-tasolta, eli tekemään juuri sitä, mistä ”perinteiset” Java-koodarit eivät tykkää. Ainakin saan tarkalleen mitä haluan, jos osaan sen HTML:llä, CSS:llä ja käytössä olevilla komponenteilla toteuttaa.

Vaadin on kuitenkin kätevä tapa toteuttaa Web-sovelluksia ja sillä saa kohtalaisen nopeasti aikaan hyvän näköistä jälkeä helposti. Toisaalta kuten kaikissa sovelluskehyksissä, on myös Vaatimessa asioita, jotka aiheuttavat kehittäjälle harmaita hiuksia. Nimi Vaadin tarkoittaa myös naaraspuolista poroa ja sanaa voidaan käyttää esimerkiksi lauseessa ”Vaadin parempia käyttöliittymiä!”.

Näköjään seuraava Vaadin Developer Meetup pidetään 3.12.2009 Pitäjänmäellä Helsingissä Logican tiloissa (ilmoittautuminen 26.11.2009 mennessä).

Esimerkkinä silloin vielä IT Mill Toolkit -nimellä tunnetulla Vaadin-kehyksellä hahmoteltu sähköpostisovellus:

iMail iMail

JSPWiki tarjoaa selkeän monipuolista Wiki-moottoria

Nykyaikana yhteisöllisyys ja tiedon jakaminen ovat kovasti esillä ja Wikit ovat Wikipedian myötä levinneet myös työyhteisöihin. Talven aikana työskennellessäni useiden erilaisten projektien parissa, totesin että levylle alkoi kertymään lukuisia muistiinpanoja sisältäviä tekstitiedostoja projektidokumentaation lisäksi, joiden luettavuus ja etenkin haettavuus oli heikko. Päätinkin siirtää henkilökohtaiset muistiinpanoni nettiin ja Wiki-muotoon, jolloin ne olisivat hyvin organisoitu ja tarvittaessa muidenkin työyhteisön jäsenten luettavissa. Enää oli vain kysymys siitä, minkä lukuisista erilaisista Wikeistä valitsisin.

Erilaisia Wiki-sovelluksia löytyy useille alustoille ja vaikka kaikki Wikit tarjoavat periaatteessa samoja perustoimintoja, on käytännössä Wikeissä suuriakin eroja. Itselle sopivan Wikin valinta vaatiikin usein muutaman lupaavalta vaikuttavan testausta, mutta onneksi vaihtoehtoja on helppo supistaa asettamalla muutamia reunaehtoja ja karsimalla Wikejä WikiMatrixin tai Wikipedian vertailun avulla.

Pienen alkututkimuksen jälkeen ja olosuhteiden pakosta, päädyin valitsemaan Java-pohjaiset Wikit ja sovelluspalvelimeksi Apache Tomcatin. Testailin kyllä myös Caucho Resiniä ja Oracle Application Serveriä, mutta Tomcat sekä toimi että soveltui paremmin haluamaani tarkoitukseen. Wikeistä tein pienen testikierroksen JSPWikin, JAMWikin ja XWikin välillä, joihin syötin muutamia testisivuja. Lopulta päädyin valitsemaan JSPWikin, joka osoittautui riittävän selkeäksi, yksinkertaiseksi ja ominaisuuksiltaan monipuoliseksi. Myös JAMWiki vaikutti ihan lupaavalta Wikipediassa käytetyn MediaWikin kopiolta, mutta jäi hieman uupumaan ominaisuuksiltaan.

JSPWiki on Janne Jalkasen vuonna 2001 aloittama luomus ja wikillä on aktiivinen kehittäjäyhteisö. JSPWiki on Wikipedian mukaan sisällytetty Sun Java System Portal -tuotteeseen, on käytössä useiden yritysten intraneteissä ja helpon asennettavuuden ansiosta useat ihmiset käyttävät sitä henkilökohtaisen informaation organisointiin. JSPWikiä voi käyttää lisäksi myös blogina ja esimerkiksi Jannen blogi ”ButtUgly” toimii sillä ja todella on ulkoasultaan nimensä veroinen. JSPWikistä julkaistiin tämän viikon maanantaina 2.8.0-versio, joka on lisäksi ensimmäinen Apache-lisenssillä varustettu versio. Aikaisemmin JSPWikissä oli leimattu LGPL-lisenssillä.

Ennen 2.8.0-versiota käytin JSPWikistä SVN:stä haettua 2.7.0-sarjaa, joka tarjoili tulevaisuuden (eli 2.8.0:n) ominaisuuksia ihan toimivassa paketissa. JSPWikin vakioteemalla varustetun Wikini etusivu ei paljon sisältöä tarjoile ja näyttää seuraavalta:

JSPWiki

Ominaisuuksiltaan JSPWiki tarjoaa kaiken tarpeellisen, mitä Wikiltä voi olettaa ja kuorruttaa toiminnot JavaScriptillä, jota ei ole turhaan säästelty. Wikin ominaisuuslista kattaa kaikki perusominaisuudet kuten sivujen versioinnin, kuvien ja liitetiedostojen liittämisen, käyttäjähallinnan ja laajennettavuuden lisäosilla. Myös lokalisointi on mahdollista ja toimivan suomennoksen lisäksi on JSPWikin suomennoksessa käytetty ripaus huumoria.

JavaScriptin avulla Wikiin on toteutettu lukuisia käytettävyyteen vaikuttavia pieniä, mutta merkittävyydeltään suuria ominaisuuksia kuten esimerkiksi haluttaessa lisätä sivulle kategoria, saadaan lista jo olemassa olevista kategorioista, joista voi sitten valita haluamansa. Myös sivujen pikahaku tapahtuu kirjoittamalla hakukenttään muutama kirjain ja valitsemalla ehdotuksista.

JSPWiki

Tekstin muotoilussa käytettävä syntaksi on mielestäni selkeämpää kuin mitä esimerkiksi Wikipediassa käytetään, mutta tavallaan rajoittavaa. Tekstin syöttämisessä on mahdollista käyttää perinteistä naputtelutilaa, tai klikkailla halutut muotoilut työkalupalkista. Koodia sisältävä tekstiosat on mahdollista merkitä koodimuotoilulla, joka näkyy sitten värikoodattuna.

JSPWiki

Ei JSPWiki aivan täydellinen tietenkään ole, ja vaikka sivut on mahdollista tallettaa tietokantaan tekstitiedostojen asemesta, on sen toteutus hieman hankala ja vaatii erillisen tietokannan. Lähitulevaisuudessa on kuitenkin ilmeisesti mahdollisuus käyttää Javalla toteutettua HSQLDB-tietokantaa, joka vastaa SQLite-tyylistä tiedostopohjaista tietokantaa. HSQLDB on käytössä muun muassa OpenOffice.orgissa.

Kokonaisuutena JSPWiki tarjoaa kaikki tarvittavat ominaisuudet ja on näppärä työkalu informaation organisointiin ja sen jakamiseen muiden kanssa. Se on lisäksi helppo asentaa, helppo käyttää ja sitä voi testata hiekkalaatikossa.

Wikeillä on tehokkaasti käytettyinä paljon potentiaalia ja työyhteisöjä ajatellen, Web-pohjaiset -työvälineet tarjoavat paljon mahdollisuuksia. Esimerkiksi Wiki on teoriassa riittävän epäformaali media kaikkien käytettäväksi ja esitystavaltaan selkeä tiedon myöhempää jakamista varten. Wikistä usein löytyy sitä tietoa, jota ei välttämättä löydy mistään muista dokumenteista, mutta joka kuitenkin tärkeää ja muistamisen arvoista.

Voitaisiin jopa sanoa, että vaikka niin sanotun hiljaisen tiedon kerääminen on vaikeaa, tarttuu Wiki-sivua kirjoittaessa osa kokemuksen kautta kerätystä tiedosta myös tekstiin ja on täten myös muiden hyödynnettävissä. Etenkin tietotyössä Wikien käyttö olisi erittäin suotavaa, sillä mitä enemmän tiedät, sen vähemmän tiedät tietäväsi. Tietenkin, Wikit eivät ole mitään ihmeiden tekijöitä, eivät täydenny tai päivity itsestään ja vaativat sitoutumista, aikaa ja panostusta tiedon jalostamiseen.

Alkuperäisenä ajatuksenani olikin, että omaan käyttööni pystyttämä Wiki olisi myös muiden saavutettavissa ja mahdollisesti jopa käytössä, mutta idea ei ole vielä oikein ottanut tulta. Ei tosin ole koko yrityksen laajuinenkaan Wiki suurta suosiota saavuttanut. Sain kuitenkin ainakin itselleni kätevän ja suhteellisen hyvin organisoidun tietovaraston.