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

Java-kehitys ja OS X: JAR-paketin leipominen

JAR-paketin voi luoda Mac OS X:ssä joko perinteisesti tai helposti. Helpolla tavalla edettäessä saadaan määriteltyä muutamia OS X -spesifisiä ominaisuuksia, kun JAR-paketista luodaan niin sanottu app-sovellus. App:n rakentaminen onnistuu Xcode Developer Toolsin mukana tulevalla Jar Bundlerilla (/Developer/Applications/Utilities/), josta vain klikataan sopivat vaihtoehdot.

Sovelluksen otsikon saaminen OS X:n menupalkkiin onnistuu antamalla Properties-välilehdeltä Bundle Nameksi haluttu teksti. Komentoriviltä ajettaessa otsikon asettaminen onnistuu java -Xdock:name="Foo Bar" -jar foobar.jar -komennolla.

Kuvakkeen luominen Applen icns-formaattiin onnistuu Xcoden Icon Composer -työkalulla (/Developer/Applications/Utilities/), joka voidaan sitten liittää Jar Bundlerissa sovelluksen kuvakkeeksi.

Perinteinen JAR-paketointi
Perinteinen Jar-paketointi menee luomalla Manifest.txt, jossa määritellään sovelluksen Main-luokka. Manifestissa pitää olla lisäksi yksi tyhjä rivi tiedoston lopussa.

Main-Class: foo.bar.logic.Lorem

Manifest.txt lisätään JAR-pakettiin komennolla jar cfm foobar.jar Manifest.txt foo/bar/, jolloin Jar luo pakettiin oikeanlaisen Manifest-tiedoston.

Levykuvan kasaaminen
Jos tehdyn App:n lisäksi haluaa jakaa (Mac OS X) käyttäjille muitakin tiedostoja kuten Readme-tiedoston, voi Disk Utilityn avulla kietaista kokonaisuuden levykuvaksi eli Disk Imageksi (.dmg). Kerää haluamasi tiedostot omaan kansioon ja valitse Disk Utilitystä File -> New -> Disk Image From Folder ja valitse kansio, johon sovelluksen tiedostot keräsit. Nyt käyttäjän täytyy ennen sovelluksen käyttämistä avata tehty paketti Finderiin.