JavaZone 2009 - En meldingsorientert arkitektur for brukerinteraksjon

Interaksjon mellom en bruker og en datamaskin utføres i applikasjoner som kjører på ulike mange ulike platformer, som for eksempel en PC eller en mobiltelefon. Men brukerinteraksjon finner også sted i tjenester som svarer på SMS-meldinger, der meldingene kan sees på som kommandoer. Applikasjoner med brukerinteraksjon endrer oppførsel når brukeren utfører handlinger i applikasjonen. Hvis en bruker for eksempel navigerer eller utfører en annen handling endres tilstanden applikasjonen er i, og den nye tilstanden kan tilby annen funksjonalitet enn den opprinnelige.
Tilstand er ofte vanskelig å håndtere på en god og helhetlig måte i applikasjoner. Det er dessuten vanskelig å at sikre at kun den lovlige funksjonaliteten er tilgjengelig i hver tilstand. Det er også en utfordring å håndtere handlinger som er tidkrevende og kan låse applikasjonen. Handlinger som utføres i Event Dispatch Thread, som brukes til å tegne GUI, gjør at applikasjonen ikke kan håndtere brukerforespørsler før handlingen er avsluttet.
Tilstand i deler av en applikasjon kan enkelt uttrykkes ved hjelp av tilstandsmaskiner. De er lar seg lett illustrere visuelt, og kan enkelt realiseres i kode. I presentasjonen beskrives det hvordan brukerinteraksjon kan ses på som hierarkiske strukturer av tilstandsmaskiner som utveksler meldinger. I en Proof of Concept demonstreres hvordan en slik arkitektur kan implementeres der tilstandsmaskiner styrer oppførselen, og asynkrone meldinger brukes til kommunikasjon. Actor-modellen brukes både til å håndtere den asynkrone meldingsutvekslingen, og for kommunikasjonen mellom tilstandsmaskinene som styrer oppførselen i applikasjonen. Dette løser problemet med låsing av applikasjonen som kan oppstå når for mye skal utføres av Event Dispatch Thread. Modellen gir også en klar separasjon mellom brukergrensesnittet og implementasjon av hendelsene som trigges fra brukergrensesnittet.
Eksempel på implementasjon og bruk vises i Java og Scala. Det vises hvordan Scalas Actor-modell forenkler trådhåndtering, og hvordan den gir en god abstraksjon over trådhåndtering i Java, som ofte er kompleks å jobbe med.
Jonas Lindholm

Jonas Lindholm

Jonas Lindholm har jobbet i Accenture siden 1998 og har jobbet med forskjellige teknologier på både backend og frontend. De siste 6 årene har han i stort sett jobbet med utvikling og arkitektur på Java plattformen. Jonas har hovedfag i informatikk fra Universitetet i Oslo.