The Serverside Symposium Barcelona, ensimmäinen päivä

Olin viime viikolla kolme päivää Barcelonassa osallistumassa pienehköön Java-konferenssiin.En ehtinyt bloggaamaan tapahtuman aikana, mutta tässä yhteenveto kokemuksistani ensimmäiseltä päivältä.

Osa tapahtuman esityksistä oli ladattavissa jo etukäteen, joten osaltaan katsomieni esityksien valintaan vaikutti se miltä esityksen sisältö vaikutti ja tuntuuko siltä että itse esityksen katsomalla voisi saada jotain enemmän irti.

Koko tapahtuman ohjelma löytyy osoitteesta: http://javasymposium.techtarget.com/europe/eventataglance.html

Keskiviikon tapahtumista katsoin seuraavat esitykset:

Morning keynote: Language-oriented Programming and Language Workbenches: Shifting Paradigms with Martin Fowler and Neal Ford, Thoughtworks.

Aamun keynote oli ajatuksiltaan erinomainen ja viihdyttävä, tarjoten oikeasti myös jotain konkreettista. Fowler ja Ford konkretisoivat mukavasti miten Javallakin on mahdollista kirjoittaa koodia joka täyttää luettavuuden määreet ja toimii kuin domankieli. Esimerkkeinä käytettiin mm. jMockia, jossa proxyobjektien expectationit kirjoitetaan hyvin DSL-mäisesti sen sijaan että asiat asetettaisiin settereillä.


final Subscriber subscriber = context.mock(Subscriber.class);

Publisher publisher = new Publisher();
publisher.add(subscriber);

final String message = "message";

// expectations
context.checking(new Expectations() {{
one (subscriber).receive(message);
}});

Näkökulmasta riippuen luettavuus joko paranee tai heikkenee.

”Odotamme että subcsriberin metodia receive kutsutaan parametrilla message kerran”

Jos ylläoleva ei aukea, lue ylläolevaa seuraavasti:

  • luodaan Expectations objekti
  • kutsutaan one-metodia mock-objektilla, metodi palauttaa mock-objektin
  • kutsutaan mock-objektin metodia receive, jonka jälkeen Expectation tietää että ko. metodia tullaan kutsumaan

Joko siis luettavampaa, tai sitten ei.

Fowlerin ja Fordin pointit oli kuitenkin hyviä.

  • Objektipohjainen suunnittelu sai meidät puhumaan asioista ja antaa meille sanaston ( vocabulary )
  • DSL:t tähtäävät siihen että meillä olisi myös kielioppi ( grammar ), jolla sanasto kytketään yhteen kuvaamaan mitä asioilla tehdään
  • hyvä DSL tekee koodin tarkoituksen selväksi ja poistaa turhan koodin
  • hyvän objektisuunnittelun ja API:n päälle on mahdollista rakentaa DSL-builderi, joka auttaa meitä kirjoittamaan luettavampaa koodia ja silti säilyttämään hyvin suunnitellut objektit
  • hyvä DSL auttaa meitä keskustelemaan koodin tarkoituksesta paremmin bisnes-ihmisten kanssa

Case Study: The New Guardian.co.uk with Erik Doernenburg and Matt Wall

Mielenkiintoisinta antia päivän aikana oli kuunnella kuin The Guardian Unlimitedin uusi verkkopalvelu ja sisällönhallintajärjestelmä oli suunniteltu. Miljoonia maksavassa projektissa käytettiin samaa teknologiastackia ja aivan samoja yksinkertaisia ajatuksia arkkitehtuurista kuin meidän portaalihankkeessamme.

Sinällään esityksen tärkein asia voidaan tiivistää sanaan yksinkertaisuus. Paras tapa tehdä tehokkaita palveluita on rakentaa arkkitehtuurista yksinkertainen ( simplicity is not simple! ) ja testata raivokkaasti.

Tärkeä huomio esityksestä liittyi domainmallin omistamiseen. Heidän mielestään oli tärkeää, että he itse määräävät oman domaininsa datamallit, eikä antaa jonkun ulkopuolisen vendorin määrittää heille mitä sisältö heidän maailmassaan tarkottaa. Samaan asiaan liittyi tärkeä huomio siitä, että domainmallin omistaa bisnesihmiset – ei siis ohjelmoijat. Tämä oli hienovarainen, mutta tärkeä pointti heidän maailmassaan, sillä domainmalli ja kieli kulkee läpi kaiken koodin ja suunnittelun. Se että bisnesihmiset omistavat domainmallin tarkoittaa, että asioita suunniteltaessa ja kommunikoitaessa puhutaan samaa kieltä.

Periaatteessa Mikael Gueck olisi voinut pitää melkein saman presiksen, mutta luvut eivät olisi olleet yhtä komeita. Meillä ei ole ollut useita kymmeniä eri developereita, emmekä ole käyttäneet miljoonia puntia – saati että hittimäärämme tai content-määrä olisi yhtä iso.

Samaan aikaan olisi ollut myös seuraava esitys:

PDL: Simplified Workflow for Java with Tom Baeyens – mutta esityksen slaidit eivät sinällään luvanneet mitään uutta verrattuna siihen mitä olin jo aiemmin lukenut jBPM:n dokumentaatiosta. Ja koska jBPM:n testaaminen käytännössä on ollut jo pidempään jo muutenkin odottamassa työlistalla, en tarvitse lisää vakuuttelua siihen että jBPM:ää pitäisi kokeilla.

Siinä missä workflow-asioissa on SOA:n takia puhuttu monissa artikkeleissa enemmän BPEL:stä, ei kannata unohtaa että on monia muita tilanteita joissa tarvitaan workflow-engineä ja prosessien osien tekeminen väkisin webserviceiksi aiheuttaisi vain turhaa overheadia.

jBPM + Spring WebFlow vaikuttaa hyvältä yhdistelmältä useimpiin web-workflow-tarpeisiin hoitaen sekä pageflown ( Webflow ) ja varsinaisten prosessien hallinnan www-sessioden ulkopuolella ( jBPM ). Tai sitten saman voisi hoitaa käyttäen Seamia ja Seamin integraatiota jBPM:n kanssa.

Taking Test Driven
Development to the next Level with Erik Doernenburg

Thoughtworksin konsultin esitys oli sinällään ihan hyvä, mutta ei loppupeleissä tarjonnut mitään uutta – eikä ollut esityksenäkään kovin innostava. Reaktorin Lasse Koskela pystyisi vetämään minä päivänä tahansa paremman shown samasta aiheesta.

Lasselta on tullut/tulossa ulos erinomainen kirja, testdriven, joka on jo tällä hetkellä saatavilla Manninging early access editionina: http://www.manning.com/koskela/

Ennenkuin esitys oli ohi, siirryin seuraamaan loppua Oisin Hurleyn esitystä.

Real Life Mashup with Oisin Hurley

Oisin Hurleyn esitys raapaisi pintaa siitä miten lähestyä palveluarkkitehtuurin toteuttamista avoimilla ratkaisuilla. Esitys jäi tosiaan pinnan raapaisuksi, mutta Oisin Hurley lupasi jatkaa asiaa online blogissaan varsinaisilla demoilla.

Muutamia hyviä huomioita esityksestä:

  • erotetaan platform- ja corporate -developerit. Platform-developerit tuottavat legacy-järjestelmistä palveluita, joita corporate developerit käyttävät ja tuottavat palveluita organisaatioon.
  • laskutuksen huomiointi organisaation sisällä on tärkeää heti alusta alkaen tai muuten yhteisten palveluiden tuottaminen ja käyttäminen takeltelee
  • on tärkeää huomioida kuinka palveluita tarjotaan ja päivitetään. Moduulijärjestelmät kuten OSGi voivat olla hyvä ratkaisu

Afternoon keynote: Going to the Extreme with Doug Clarke, Principal Product Manager, Oracle Application Server and Brian Oliver, Data Grid Solutions Architect, Oracle/Tangosol.

JSF, Oracle, Gridit… blah, blah, blah. Keynote oli harvinaisen content free, sisältäen lähinnä ajatuksia siitä miten Oracle on hyvä ja kuinka he tekevät hienoja asioita. Oracle joutuu panostamaan jatkossakin myös JDeveloperiin sekä Eclipseen, sillä heidän asiakkaat eivät käytä pelkästään JDeveloperia.

Demossa esiteltiin kuinka Oraclen opensourcettamat JSF-widgetit toimivat JDeveloperissa ja pystyvät bindaamaan tehokkaasti tietolähteisiin, helpottaen web-tietokantasovelluksien rakentamista. Esityksestä puuttui kuitenkin sisäinen palo ja innostus, johtuen varmaankin siitä että kamppailu siitä miten kehitetään visuaalisesti JSF-sovelluksia on vielä kesken.

JDeveloper, Netbeans ja Eclipse ovat kaikki sovelluskehittimiä, joissa on jonkinlaisia toimintoja JSF-sovelluksien tekemiseksi. Ainoastaan JDeveloper ja Netbeans sisältävät todellisia ominaisuuksia WYSIWYG-toiminnallisuuksia. Ongelmana on että ratkaisut eivät ole suoraan yhteensopivia toistensa kanssa, ainakaan siis wysiwyg-toiminnallisuuksien osalta – eivätkä eri komponenttiframeworkit välttämättä toimi täysin toistensa kanssa myöskään serveripäässä, ainakaan jos haluaisit sekottaa komponentteja eri projekteista samanaikaisesti. En ole itse kokeillut asiaa, mutta näin olen ymmärtänyt lukemisen perusteella.

Eclipseen on kehitteillä tai kehitettynä useita eri ratkaisuja, mielenkiintoisimpana kai tällä hetkellä Redhatin ja Exadelin yhdessä open sourcettama Exadel Studio, josta tulee Redhat Developer Studion osa.

Netbeansissa on visuaaliset JSF-työkalut, ja tuke Sunin Woodstock-projektin komponenteille – sekä ilmeisesti myös Icefacesin komponenteille. Vaikka en olekaan vielä edes halunnut ajatella vaihtamista Eclipsestä Netbeansiin, haluan kyllä kokeilla Netbeansin visuaalisia toimintoja ennen pitkää – jotta parhaassa tapauksessa en jää haikailemaan turhaan, ja toisaalta osaan vaatia työkaluilta kunnollisia toimintoja.

http://www.exadel.com/web/portal/products/onlineDemoESGeneral

http://www.oracle.com/technology/products/adf/adffaces/index.html

http://www.netbeans.org/products/visualweb/

http://www.icefaces.org/main/home/home.iface

https://woodstock.dev.java.net/index.html

Toinen sovelluskehittimiin liittyvä kehityksen kohta on toiminnallisuudet tietokantaratkaisujen kehittämisen helpottamiseksi. Eclipsen uudessa versiossa 3.3, Europa, tulee mukana uusi versio Dali-projektista, jonka työkalut auttavat JPA-sovelluksien tekemistä tehden persistence-konfiguraatioiden ja luokkien synkronisaatiosta helppoa, sekä antaa työkalut entiteettien mudostamiseksi suoraan tietokantataulujen perusteella.

Kiinnostava projekti tulevaisuutta varten on vastikään ehdotettu EclipseLink-projekti, jonka tavoitteena olisi luoda yhteinen persistence-runtime joka yhdistää eri tarpeet ja ratkaisut yhdeksi platformiksi. Projektin driving force on luonnollisestikin Oracle.

EclipseLinkin eri ratkaisut

  • Object-Relational (JPA)
  • Object-XML (OXM)
  • Service Data Objects (SDO)
  • Database Web Services (DBWS)

Mielenkiintoista nähdä mitä projektista tulee.

http://eclipselink.blogspot.com/

SOA: Industry Leaders Technology Panel with
Ted Neward, Martin Fowler, Oisin Hurley, Gregor Hohpe

Odotin todella paljon tältä paneelilta, mutta lopputulos oli aikalailla pannukakku. Suurin ongelma paneelissa oli, että sen sisällöksi jäi suurimmilta osin antaa mahdollisuuden Fowlerin olla nokkela, Newardille mahdollisuuden kysellä yksinkertaisia kysymyksiä ja Hurleyn ja Hohpen osaksi jäi ottaa common sense rooli palveluarkkitehtuurista puhuttaessa.

Suurin ongelmani Fowlerin kannanotoissa oli se, että hän tuntui olevan kaikkea governancea ja kontrollia vastaan. Tai mikäli ei oikeasti ollut, se unohtui hänen puheenvuoroissaan hänen yrittäessään olla hauska. Tämä oli sinällään täysin ristiriidassa sen hengen kanssa mitä hänen keynotessa aamulla oli puhuttaessa domainkielten merkityksestä ja tärkeydestä.

Ymmärrän että koodareille puhuttaessa Fowler halusi tietyllä tavalla olla viihdyttävä, mutta tässä paneelissa hänellä olisi ollut mahdollisuus vaikuttaa satoihin nuoriin tekniikan ammattilaisiin positiivisesti ja auttaa monia huomaamaan hallinnan ja sopimusten merkitys sille, että me tietotekniikan ammattilaisina ja toisaalta bisneksen omistajat voivat toimia paremmin yhdessä löytämällä riittävän tasapainon vapauksissa ja kontrollissa.

Sen sijaan että Fowler olisi huomioinut, että internetissä RFC:t ja monet epäformaalimmat sopimukset ovat aikaansaaneet sen että asiat toimivat yhdessä niin loistavasti kuin ne toimivat, oli hänen kantansa ettei asioita pitäisi manageroida ja kontrolloida.

Onneksi Hohpe ja Hurley olivat vastapainoina. Hohpehan on loistavan Enterprise integration patterns -kirjan takana, ja realistiset ja käytännönläheiset ajatukset kuuluivat läpi.

http://www.enterpriseintegrationpatterns.com/

Software Visualization and Model Generation with Gregor Hohpe and Erik Doernenburg

Kuulemani mukaan tämä esitys oli täsmälleen sama esitys kuin viimevuonna, mutta koska näin sen ensi kertaa se ei häirinnyt lainkaan. Perusidea on esityksessä oli, että järjestelmiin liittyvän informaation määrä on helposti enemmän kuin me pystymme ihmisinä käsittämään.

Visualisoimalla oleellista dataa järjestelmästä – esimerkiksi koodin määrästä, luokkien koosta jne. tai vaikkapa viestijärjestelmien viesteistä – voimme saada todella hyvää analyysia, joka lyö meitä päähän kuin vasara ja tekee asiat selkeästi näkyviksi tarjoamalla kuvan järjestelmästämme 10 000 metrin korkeudesta.

Visualisointi oikeasta datasta – oli se kerättyä instrumentointidataa tai tietoa esimerkiksi koodipohjasta – toimii myös paremmin kuin etukäteen piirrettyjen graafien katsominen, sillä arkkitehtien graafit kommunikoivat ja taltioivat vain aikomuksen mitä tehdään. Visualisoinneilla kuvataan miten asiat oikeasti ovat.

Esityksessä käytettiin esimerkkinä GraphViz:in käyttöä graafien tuottamiseen ja mainittiin esimerkkinä mm. SpringViz-niminen stylesheet, jolla on mahdollista visualisoida Springin bean-konfiguraatioit GraphVitzin ymmärtämään muotoon. SpringIDE tarjoaa saman tyyppisiä ominaisuuksia visualisoinnissa, mutta vain yhdelle bean-konfiguraatiolle kerrallaan. Monimutkaisessa sovelluksessa konfiguraatioita on kuitenkin useita – ja ison kuvan aikaansaamiseksi SpringVizin tyyppinen stylesheet voisi hyvin tulla tarpeeseen.

Toinen nerokas ajatus liittyi olemassaolevien prosessien debuggaamiseen – ja mallien muodostamiseen siitä tiedosta, jotta voisimme ymmärtää paremmin miten järjestelmä toimii. Tämä tieto – joka voidaan muodostaa esimerkiksi pelkkien logitietojen perusteella – saattaa pelastaa henkemme ja tarjota tietoa järjestelmästä, jonka lähdekoodia meillä ei ole kädessämme.

En edes yritä käydä läpi esityksen pointteja tässä, vaan toivon että ajatukset konkretisoituisivat helppokäyttöisiksi ominaisuuksi esimerkiksi Netbeansissa ja Eclipsessä.

http://ga1717.tm.tue.nl/wiki/

http://www.iam.unibe.ch/~scg/Research/CodeCrawler/

http://infoviz.pnl.gov/

Pragmatic XML Services with Celtix/CXF/XFire with Ted Neward

Esitys oli viihdyttävä, mutta siitä ei jäänyt juuri mitään mieleen. Mukana oli puhetta .NET:stä ja XFiren käyttämisestä, puhetta siitä miten käytännönläheisesti kiertää WSDL:ien käyttäminen ja kuinka suunnitella palveluita, joiden sisältö menee yhteen ainoaan metodiin.

Toisinsanoen esitys oli turhauttavaa seurattavaa, enkä koskaan saa sitä aikaa takaisin.

This entry was posted in java, spring, technology. Bookmark the permalink.

Yksi vastaus artikkeliin: The Serverside Symposium Barcelona, ensimmäinen päivä

  1. Paluuviite: Arkkitehtuuriblogi » Blog Archive » Serverside Java Symposium

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