Omegapoint

2010-09-10

JavaZone Oslo torsdag 9 september 2010


Man skulle tro att javakonferenser skulle vara bra på kaffe. Så är icke fallet. Strålande undantag från detta är konferenser i Sverige, och JavaZone. 

Not Only SQL

Förutom kaffe gick förmiddagen i NOSQLs tecken. Aslak Hellesøy gjorde ett svep över några typer av NOSQL-databaser såsom lättvikts key-value-store (Berkeley DB), dokumentdatabaser (MongoDB, CouchDB) och grafdatabaser (Neo4j). Under passet efteråt gjorde Knut Hellan en dykning i CouchDB - hur man sätter upp den, gör backup, replikerar etc. Med tanke på hur bra dessa passar vissa saker, t ex objektspersistens för key-value store eller social-network-applikationer för grafdatabaser, så borde tidens tand få folk att överge relationsdatabaser som mest används av gammal vana.

Väl värt att påpeka är att NOSQL står för Not Only SQL, det handlar inte om att överge relationsdatabaser helt och hållet - de är t ex helt överlägsna för rapportgenerering. Det handlar om att använda andra alternativ i situationer när dessa är bättre. Jag har dock inga förväntningar på att det ska gå snabbt.

Ingen DDD för DDDan

För en DDD-affectionado som mig var det givetvis en besvikelse att Greg Young fått förhinder och inte kunde komma i tid till sin presentation "I Tried Domain Driven Design and Failed" med erfarenheter hur man kan försöka använda DDD på fel sätt - och misslyckas. Visserligen ställdes den inte in utan bara senarelades, men det var tillräckligt för att jag skulle missa den.

Tester

Istället hamnade jag på blixtföreläsningarna som just då hade automatisk testning som tema. Från TDD har vi vant oss vid turnaround på sekundnivå, vilket oftast inte funkar när vi deployar webbfunktioner i en appserver. Morten Udnæs visade hur man kan få samma upplevelse i det fallet genom att kombinera WebDriver och Jetty med JRebel.

Höjdpunkten på detta pass var dock Thomas Bjørge som gjorde en recap av JUnit 4 och vad som hänt sedan 4.0 kom för fyra år sedan till 4.8 vi har idag. En del saker var nyttiga påminnelser som t ex Hamcrest-syntaxen  "assertThat(result, is(25))" istället för "assertEquals(25, result)", men han lyckades även pricka in en del saker jag missat såsom "assumeThat" och "@Theory/@Datapoint". Den senare är värd lite extra uppmärksamhet som ett sätt att täcka en flerdimensionell rymd av testdata, utan att explicit skriva varje kombination. Istället deklarerar man datapunkterna i respektive dimension som var sin array. Testet för en viss kombination av indata skriver man i en metod man markerar med @Theory, och sedan kommer ramverket att mata teori-metoden med alla kombinationer av datapunkter. 

Hardcore

Som ett litet avbräck mot all "systemnivå" var det ganska uppfriskande att höra Jevgeni Kabanov (som drog igång JRebel) ställa frågan "Do you really get Memory?" där från hårdvaru/instruktions-nivå och uppåt beskrev hur JVM:en och minnesmodellen är uppbyggd. Som pedagogiskt trick modellerade han de olika delarna som javakod med klasser som "Core", "Memory", "Cache" etc. Kronan på verket var analysen av varför garbage collect kan orsaka sådana pauser som det ibland gör och hur asynkron GC kan fungera. Som en sido-effekt kom lite konkreta råd som t ex att stänga av minnes-pagening alternativt använda stora page-block för att undvika att garbage collect triggar page-fault med tillhörande swappning.

Arkitektur och prestanda

Min avslutning på dagen var Randy Straffords "Architecture Determines Performance" med ett antal belysande historier hur mindre lämplig design kan orsaka allvarliga prestandaproblem. Ett riktigt skrämmande exempel var ett riktigt case där ett enstaka HTTP-anrop orsakade över 7000 SQL-anrop till databasen. Även han delade med sig av konkreta trick om vad man kan göra utan att installera specialverktyg. Hans första angrepp är att ta en dump av httpd-loggen. Om man lägger till "%t" eller "%d" i loggnings-defnitionen lägger dessutom httpd till lite rudimentär timinginfo. Sedan dumpar man det hela i en relationsdatabas för att kunna göra datamining genom att skriva adhoc-frågor i SQL: jämför responstid mot datastorlek, last, tidpunkt etc.

Vad jag missade

Eftersom det nu var dags för mig att dra mig till Gardemoen missade jag de sista föreläsningarna. Jag har redan nämnt Greg Youngs föreläsning om DDD, men den andra jag gärna skulle sett är Johannes Brodwalls kodkata där han under förläsningens gång med TDD bygger en hel webbapp, utan att använda något webbramverk utan genom att utgå från javas standardservlet. Om det är realistiskt eller inte har jag inte en aning eftersom jag inte har sett det och vet var han landar. Men, det är onekligen en uppfriskande vinkel i denna vår värld det anses svårt med tester i webbsammanhang och där det går tretton överkomplicerade webb-ramverk på dussinet. 

För sent insåg jag också att jag missade Knut Vidar Siems blixtpresentation "Security through Clarity" om hur tydlig kod är ett av de viktigaste metoderna för att undvika säkerhetsluckor - ett ämne som ligger väldigt i linje med Domain Driven Security. Även Jim Webbers dragning om HATEOAS skulle varit kul att se. Men, i båda dessa fall får jag väl hålla ögonen öppna för när videon dyker upp på nätet.

JavaZone - långsiktigt på allvar

Förutom att JavaZone är en bra konferens tycker jag det är fantastiskt att se den norska varianten av community-tänkande. De menar allvar, konferenser och allt annat är medel, målet är communityt. De bygger framtidens Norge - långsiktigt. Som en av javaBin:arna uttryckte det (i översättning): "Målgruppen är kanske inte så mycket dagens studenter, snarare studenternas barn. De är visserligen inte födda än, men när de vuxit upp ska javaBin och JavaZone finnas där för dem".

Sammanfattningsvis: JavaZone har varit en av mina favoritkonferenser sedan den startade 2002 och jag har hittills inte blivit besviken. Jag ska verkligen försöka ta mig till Oslo nästa år då den tionde JavaZone går av stapeln.


Inga kommentarer:

Skicka en kommentar

Om Omegapoint

Omegapoint AB är ledande rådgivare och experter inom Systemarkitektur, Säkerhet och IT-ledning.

Twitter uppdateringar

Omegapoints kvitterström:

    Andra Omegapointbloggar