Vuosi lähestyy loppuaan – Scalaa ja App Engineä ;)

Jep, joululomailut ovat vähentäneet blogikirjailua mutta vielä ehtii yhden artikkelin luikkaamaan sisään ennen kuin vuosi ja kujeet vaihtuvat. Olkoonkin sisällöltään vähän kevyempää tällä kertaa – ei esim. koodi tai konfiguraatiopätkiä tarjolla 😉 Vuoden vaihtumisen kunniaksi uusi ulkoasu kehiin.

Jouduin valitettavasti luopumaan suunnitelmastani toteuttaa google app engine sovellukseen käyttöliittymä Vaadin frameworkillä. Tähän päätökseen vaikutti useampikin asia, mutta se mitä en pystynyt kiertämään oli se että joka vaiheessa oli vastaan tapeltavaa ja säädettävää, ja työaika meni virittelyyn sensijaan että se olisi mennyt ratkaisun tekemiseen. Tämä on aina omassa mielessäni se killswitch jolloin on aika vaihtaa tekniikkaa. Vaadin on itsessään loistava framework, mutta se abstraktoi liiankin korkealle tasolle, jolloin gae:n asettamien vasteaika ja kirjastorajoitusten kanssa tulee vastaan paljon haasteita. Lisäksi tietysti mehukkaimmat komponentit ovat AGPL lisenssin takana josta en järin itse pidä – se kun pakottaa julkaisemaan KOKO oma sovellus lähdekoodina, ei pelkästään muutoksia komponentin koodiin. Tästä pääsee tietysti eroon lisensoimalla komponentin mutta se vaatii tiettyä sitoutumista ratkaisuun. Lopulta ongelmana on myös debuggaus; Testaus pilvessä ei anna aina kovin hyviä virhetietoja ja statistiikkaa – testaus omassa koneessa ei taas toimi samoin kuin pilvessä. Tämä on tietysti vastassa joka frameworkillä mutta kun puolet asioista tapahtuu javascriptin puolella on asiassa vielä lisähaasteita.

Sinnikkäämmät sielut ovat saaneet homman toimimaan, eli tässä pari viitettä gae + vaadin asioihin:

http://vaadin.com/wiki/-/wiki/Main/Google%20AppEngine%20HOWTO

http://www.streamhead.com/maven-spring-vaadin-appengine/

http://devrimyasar.com/blog/2009/11/22/finally-there-vaadin-godsend-on-gwt-google-app-engine/

Eli vielä kerran, Vaadin on hieno ellei peräti loistava framework, ja paljon käytetty, mutta pilvi + vaadin on toistaiseksi early adopter aikaa, jossa joutuu maksamaan aika kovan hinnan etenemisestään. Se on huimasti parempi vaihtoehto kuin paljas Google Web Toolkit, koska suurin osa prosessoinnista ja tilanhallinnasta tapahtuu palvelinpäässä (tästä on myös tietoturvahyötyä GWT:hen verrattuna). Kokonaisuus tulee varmasti tulevaisuudessa paranemaan vielä ennestään, mutta itselleni valikoitui käyttöliittymään RichFaces toistaiseksi, se kun on pilvivalmis uusimmassa 4.0 releasessaan. Näin pääsen hyödyntämään rikkaita JSF kontrolleja ja voin hallita miten paljon AJAX:ia haluan upotella mukaan. So far so good..

Ja sitten, sain valmiiksi koulutusmateriaalin Scala ohjelmoinnista, ja tutustuessa tähän kieleen täytyy sanoa että se on kuin kevättuulen virkistävä hengähdys. Javan vanhuus ja muuttumattomuus näkyy ja useat parannukset ovat kuin laastarilappuja alustan päällä. Se on edelleen kova alusta jolla voi tehdä melkein mitä vain, mutta aika ajoin koodaajalle tekee hyvää tuulettaa vähän ajatuksiaan ja oppia jotain uutta, ja Scala on kyllä miellyttävää. Monet asiat jotka vaativat paljon työtä Javassa ovat salamannopeita Scalassa, ja jokainen koodaaja voi itse päättää haluaako kirjoittaa Scalaa oliomaisesti, vai funktionaalisesti, ja missä suhteissa.

On toki vielä useita alueita joissa Scalassa on keskeneräisiä ratkaisuja ja turhankin monta vaihtoehtoa, mutta suuri rikkaus on myös hypätä saumattomasti Java kirjastoihin aina kun sille on tarve – ja enemmän ja enemmän asioita voi jo nykyisin tehdä scalamaisesti, kuten esim. tiedostojen ja url resurssien käsittelyn, tietokannankäsittelyn, ja web kerrokset. Ja mikä mukavinta, scalaa voi ajaa missä vain java alustalla – esim. pilvessä 😉

Joka tapauksessa, kurssi on näkyvillä http://www.tieturi.fi/avoimet-kurssit/kurssi.html?cat_id=117445444&course_id=83926464 – ja palautetta kuulen mieluusti. Jos homma kiinnostaa niin jatko-osia tulee perässä!

Joka tapauksessa, tämä on viimeinen blogi tälle vuodelle. Parhaimmat uudenvuoden toivotukset kaikille tälle sivuille osuville!

Advertisements

2 thoughts on “Vuosi lähestyy loppuaan – Scalaa ja App Engineä ;)

  1. Kiitos hyvistä blog-posteistasi.

    GAE on aikamoisen haastava pilvi debuggausmielessä. Periaatteessa siinä on hieno kehitysympäristö jossa debuggaus onnistuu lokaalisti – käytännössä lokaali ympäristö toimii aika lailla eriävästi kuin Googlen hostaama palvelu. Veikkaisin että tästä juontuu suurin osa kohtaamistasi haasteista. Vaadiniin (ja muihin tilallisiin frameworkkeihin) vielä extra-haasteen tarjoaa se että GAE vaatiin että session tätyy olla serialisoitavissa – koska sovellus elää sessiossa, joten joudut huolehtimaan että se serialisoituu kunnolla.

    Jos vain mahdollista, niin suosittelen useimmiten pilvialustakseni Amazonin EC2:sta. Käytännössä se toimii paljon yksinkertaisimmen kuin GAE – siellä kun käytännössä voit ajaa samaa ohjelmapinoa kuin lokaalisti ja siten debuggaushaasteita ja muita GAE:n rajoitteita ei ole. Kolikon kääntöpuolena on että joudut hallinnoimaan palvelinta itse ja toisaalta hajautetun konfiguraation pystytys ei olekkaan enää ihan ilmaista.

    Scala kokeiluiden jatkoksi suosittelen kokeilemaan Vaadinta ja Scalaa yhdessä. Vaadin on lähestulkoon ainoita RIA ympäristöjä jossa käyttöliittymäkerroksen ohjelmointi onnistuu kokonaan Scalalla.

    • Kiitoksia vain palautteesta. Mikään mitä kohtasin tuossa kokeilussa ei yksinään ollut show-stopper, eli kaikki esteet pystyy korjaamaan; tosiaan useampi onnistunut Vaadin sovellus pyörii jo GAE:ssakin. Tuo etädebuggaus on aina vähän ikävämpää sillä suunnalla; vilkaisenpa tuota Amazoninkin pilveä, siitä ei ole itsellä vielä mitään kokemuksia.

      Scala ja Vaadin kuulostaa myös kiinnostavalta, pistetään sekin uuden vuoden projekteihin. 😉

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out / Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out / Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out / Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out / Muuta )

Muodostetaan yhteyttä palveluun %s