JavaZone 2011 schedule

Wednesday 7th September 2011

  • The Java Memory Model

    by Angelika Langer

    With the increasing availability and use of multicore processors Java developers need to acquire some understanding of the Java memory model. This is because multithread applications that work nicely on a single-core processor might exhibit "inexplicable" deficiencies when running on a multicore processor platform. The reason may be differences in the caching strategies applied by different processors. In order to illustrate the issues this tutorial explains the Java features for multithread programming. Key topics include: memory model, visibility and reordering issues, volatile and atomic variables, initialisation safety and final fields, lock-free programming.

    At 9:00am to 10:00am, Wednesday 7th September

    Coverage video

  • Erfaringer med Scala i en Java-stack

    by Nina Heitmann Jodal

    Vi i Basefarm startet i 2010 å utvikle vårt nye fagsystem. Etter å ha vurdert flere programmeringsspråk falt valget på Scala. Vi valgte Scala blant annet fordi Scala er typesikkert og vi må skrive mye mindre boilerplate-kode enn i Java, samtidig som man kan dra nytte av de tallrike og velutprøvde Java-bibliotekene som allerede finnes.

    Av rammeverk endte vi opp med Hibernate, Spring og Spring MVC, som alle Java-programmerere er kjent med. I tillegg bruker vi Akka, som er et Scala-bibliotek som hjelper oss å håndtere concurrency, bl.a. ved hjelp av actors. Vi fant raskt ut at selv om det fungerer bra å bruke Java-rammeverkene fra Scala, så kan det oppleves som en skikkelig kulturkrasj fordi Scala gjerne lener seg mer mot funksjonell programmering enn Java.

    I dette foredraget får du et innblikk i hvordan det fungerer å bruke Scala og Java sammen, hvilke fordeler det gir oss å bruke Scala, hvilke hindre vi har møtt på og hva vi ville gjort annerledes dersom vi skulle gjort dette om igjen.

    At 10:20am to 11:20am, Wednesday 7th September

    Coverage video

  • Complexity Theory and Software Development

    by Tim Berglund

    Some systems are too large to be understood entirely by any one human mind. They are composed of a diverse array of individual components capable of interacting with each other and adapting to a changing environment. As systems, they produce behavior that differs in kind from the behavior of their components. Complexity Theory is an emerging discipline that seeks to describe such phenomena previously encountered in biology, sociology, economics, and other disciplines.
    Beyond new ways of looking at ant colonies, fashion trends, and national economies, complexity theory promises powerful insights to software development. The Internet—perhaps the most valuable piece of computing infrastructure of the present day—may fit the description of a complex system. Large corporate organizations in which developers are employed have complex characteristics. In this session, we'll explore what makes a complex system, what advantages complexity has to offer us, and how to harness these in the systems we build.

    At 11:40am to 12:40pm, Wednesday 7th September

  • Deklarativ konfigurasjonsstyring med Puppet

    by Ole Chr. Rynning and Eivind Uggedal

    Det er mye buzz rundt konfigurasjonsstyring i DevOps-sfæren. Puppet er fri programvare for å deklarativt styre konfigurasjon av servere, miljøer og infrastruktur. Vi går gjennom sentrale konsepter, Puppets arkitektur, infrastruktur som kode, automatisere oppsett og reproduserbar konfigurasjon av servere og applikasjoner, forbedret feilsøking og reduksjon av feilkilder; og ikke minst hvordan reproduserbar konfigurasjon av infrastruktur kan føre til mer effektiv styring. Etter foredraget vil du forhåpentligvis ha grunnlag nok til å starte prosessen for implementasjon konfigurasjonsstyring på ditt prosjekt. Foredraget er generelt og baserer seg på konkrete erfaringer fra bruk i store bedrifter og åpne nettløsninger.

    At 11:40am to 12:40pm, Wednesday 7th September

  • Code Reviews - One Thing Every Programmer Should Know

    by Mattias Karlsson

    You should do code reviews. Why? Because they increase code quality and reduce defect rate. But not necessarily for the reasons you might think.

    At 1:15pm to 1:30pm, Wednesday 7th September

  • Fra 1 uke til 16 timer: Ytelsesforbedringer med Spring Batch

    by Morten Andersen-Gott

    I forbindelse med pensjonsreformen har Statens pensjonskasse (SPK) skrevet om batchen som reberegner alle ytelser i forbindelse med regulering av folketrygdens grunnbeløp. Den tidligere batchen var skrevet i C og brukte en uke på kjøringen. I denne presentasjonen vil jeg vise hvordan den nye versjonen skrevet med java og med Spring Batch gjør beregningen på godt under et døgn. I tillegg til Spring Batch står Hibernate og Jdbc sentralt i batchen, noe som fører til en del utfordringer. I jakten på bedre ytelse stod vi stadig fast i problemer knyttet til for eksempel deadlocks og retries, hibernate og misforstått feilhåndtering. Presentasjonen fokuserer først og fremst på endringene som ble gjort på javasiden, men vil også nevne endringer gjort på databasesiden for å bedre ytelsen.

    At 2:20pm to 3:20pm, Wednesday 7th September

    Coverage video

  • The Art of Garbage Collector Tuning (for the SUN/Oracle JVM)

    by Angelika Langer

    The JVM developed by Sun Microsystems (now owned by Oracle) has been refined and revised with every release of the JDK since the advent of Java in the mid 90ies. Today, Java developers face an abundance of GC algorithms - from plain and simple serial stop-the-world collectors with a single reaper thread to highly parallelized collectors that run several GC threads concurrently with application threads. Each of these collectors can be configured and tuned in various ways in order to control pause times or increase throughput. The number of choices a Java developer has for configuring the JVM’s garbage collection for his application is overwhelming. Hence, garbage collector tuning for the SUN/Oracle JVM is a daunting task. The tutorial aims to shed light onto the garbage collection strategies in the Sun/Oracle JVM by explaining all algorithms (including Java 7’s “G1” collector) and discussing strategies for tuning and configuration of the various collectors.

    At 6:20pm to 7:20pm, Wednesday 7th September

    Coverage video

Thursday 8th September 2011

  • Radical NoSQL Scalability with Cassandra

    by Tim Berglund

    Want to go deep on a popular NoSQL database? Cassandra is a scalable, highly available, column-oriented data store in use at Facebook, Twitter, Reddit, Rackspace, and other web-scale operations. It offers a compelling combination of a rich data model, a robust deployment track record, and a sound architecture. Get to know NoSQL better by studying this leading solution.

    In this session, we'll talk about Cassandra's data model, work through its API in Java and Groovy, talk about how to deploy it, and look at use cases in which it is an appropriate data storage solution. We'll study its origins in the Amazon Dynamo project and Google's BigTable, and learn how its architecture helps us achieve the gold standard of scalability: horizontal scalability on commodity hardware. You'll leave prepared to begin experimenting with Cassandra immediately and planning its adoption in your next project.

    At 9:00am to 10:00am, Thursday 8th September

  • Bytecode for discriminating developers

    by Anton Arhipov

    If you never goofed around with assembler or machine code Java bytecode can seem an obscure piece of low-level magic. But sometimes things go really wrong and understanding that bit may be what stands between you and solving the problem at hand. Looking to deepen you Java programming skills? Understanding bytecodes is necessary to solve performance issues, some classloading issues and to generate code at runtime. And some things you can do are just plain freakin' cool. This talk will introduce you the JVM and bytecode basics using live coding examples. It's my hope that you'll walk out armed for the next battle with low-level issues. From the basics, to more advanced gotchas: * How to obtain the bytecode listings * How to read the bytecode * How the language constructs are mirrored by the compiler: local variables, method calls, optimizations, autoboxing, exception handling, etc * insight to some bytecode manipulation libraries (ASM, Javassist)

    At 10:20am to 10:20am, Thursday 8th September

  • Hva alle utviklere må vite om tegnsettenkoding

    by Stein Magnus Jodal

    Tegnsettenkoding er noe du finner i alle lag av enhver applikasjon. Har du strenger, så har du enkoding. Hvis du ikke har kontroll på enkoding vil du ofte ende opp med rare tegn på websiden, databasen vil ikke sortere norske tegn rett, og du ender av og til opp med filer med en god blanding av enkodinger som føles umulig å nøste opp i uten å fikse alle de rare tegnene manuelt.

    Etter denne lyntalen skal du ha en god forståelse av tegnsettenkoding, slik at du ikke må strø "charset=utf-8" tilsynelatende tilfeldig utover kodebasen din i håp om å få rett sluttresultat.

    At 12:00pm to 12:15pm, Thursday 8th September

  • CoffeeScript: JavaScript without the Fail

    by Bodil Stokke

    JavaScript. Love it or hate it, in the web development world it's impossible to avoid it. It was designed in one week by one man at Netscape, just to keep the browser from standardising on something even worse -- and it shows. Oh, it's not all bad, but the Good Parts -- which actually make up a pretty neat language -- are well hidden in among all the Bad Parts, which are there to make you, the JavaScript developer, suffer.

    CoffeeScript is a language designed to take the Good Parts out of JavaScript and make a new, concise and beautiful language out of them. It runs anywhere JavaScript does -- in fact, it compiles to fairly readable JavaScript -- so you can already use it in your web applications and wherever else you've been stuck with JavaScript. In this talk, you'll learn what CoffeeScript looks like, how it relates to the JavaScript you know, and what new features it has to offer. In fact, if you already know JavaScript well, you'll probably be perfectly fluent in CoffeeScript after this -- it's that easy. And trust me, your life will be so much better for it.

    At 1:00pm to 2:00pm, Thursday 8th September

  • Hvis du ikke leverer kontinuerlig, så er du ikke smidig!

    by Stein Inge Morisbak

    Manifestet for smidig programvareutvikling sitt første prinsipp sier at; det å levere programvare av verdi kontinuerlig, er vår høyeste prioritet. Dette er ofte lettere sagt enn gjort, fordi det forutsetter masse hard jobbing med å komme frem til en infrastruktur og en prosess som støtter en rask flyt fra idé til produksjon.

    Jeg vil gi et innblikk i hvordan teamet som utvikler Digipost gradvis har utviklet evnen til å kontinuerlig levere programvare av høy kvalitet til produksjon når vi vil, og ekstremt raskt. Du vil også få vite hvilke fordeler dette gir, utover rask ledetid fra idé til produksjon, og hvorfor det er smidigere. Det er ganske sikkert flere grunner enn du tror.

    At 1:40pm to 1:55pm, Thursday 8th September

  • Testable Enterprise Development with Arquillian

    by Aslak Knutsen and Andrew Lee Rubinger

    In this session, we'll address the missing link in Enterprise Java development: simple, easy integration testing.

    Unit tests and mock objects will only take you so far; the only answer which truly ensures that all components are playing nicely is a comprehensive integration suite. Unfortunately, writing integration tests has historically involved manual setup of a heavy, cumbersome test harness. That's time lost, but it doesn't have to be anymore.

    Here we'll introduce Arquillian, a powerful container-oriented testing framework layered atop TestNG and JUnit. Arquillian manages your runtime, abstracting out deployment and allowing you to focus on real test logic. We'll cover:

    • Transparent container lifecycle management
    • Declarative deployments
    • Test Enrichment (Dependency injection intotests)
    • In-container test execution

    Attend this talk to learn how the simplified component model of Java EE can be applied to testable development

    At 2:20pm to 3:20pm, Thursday 8th September

    Coverage video

Unscheduled

  • Git Workshop

    by Matthew J McCullough

  • Strukturert refaktorering

    by Karianne Berg

    "I really hope that refactoring becomes popular again. Many people nowadays seem to think that refactoring is a set of menu items in the IDE, but it's really much more than that." -- Michael Feathers, Roots 2011

    Hvem har ikke rotet seg inn i en refaktorering som i utgangspunktet skulle være enkel, men som tok flere timer før man til slutt måtte kaste inn håndkledet, forkaste alle endringer og begynne på nytt? Eller sett at designet til applikasjonen din ikke passer til den neste delen med funksjonalitet du skal implementere, men hacket til en løsning fordi alternativet ville vært timesvis, kanskje til og med dagesvis med kode som ikke kompilerer og tester som ikke kjører? Det må ikke være sånn.
    Ved hjelp av strukturerte refaktoreringsteknikker kan du gradvis forbedre designet på kodebasen din. Gode evner i refaktorering er en forutsetning for å kunne ha et design som utvikler seg i takt med at vi lærer mer om domenet til applikasjonen vår og miljøet den skal fungere i. Denne presentasjonen vil vise deg teknikker som fjerner noe av smerten ved refaktorering, samtidig som du vil kunne holde tester grønne og koden kompilerbar mesteparten av tiden.

    Coverage video