En av de kraftfullaste delarna av objektorienterade språk är deras väl utbyggda stöd för inkapsling (encapsulation). Inkapsling i sin tur är en av de allra viktigaste sakerna att tänka på när man designar och skriver programkod. En applikation som består av komponenter som publicerar rena gränssnitt och gömmer implementationsdetaljer har oerhörda fördelar framför sådana som inte gör det: Man kan utveckla, förstå, testa, debugga, optimera och underhålla komponenterna separat, vilket gör alla dessa saker mycket lättare.
De flesta javautvecklare känner väl till Javas system med modifierarna public, protected och private samt det implicita ”package private” som man får om man inte skriver någon modifierare alls. Modifierarna fungerar olika beroende på var man använder dem någonstans: Läs mer >>
Snart är det sommar och vad passar bättre än lite javalektyr i hängmattan?
Effective Java av Joshua Bloch
Det här är en allmän bok som berör mycket som en javautvecklare stöter på i vardagen. Boken är uppdelad i 10 kapitel med ett antal tips i varje, totalt 57st. Tipsen är av allmän karaktär och är därför relativt tidlösa och obundna till ev ramverk som används. Ibland kan tipsen kännas basala men läs vidare, motiveringarna är mycket bra och där finns mycket att hämta. Många gånger är tipsen kopplade till missar eller framgångsrecept i javas API.
Det är inte en förstabok i java utan kräver att man kan språket. I och med dess ganska breda och grundläggande upplägg rekommenderar jag den inte för experter. Tex om man har jobbat mycket med parallell programmering i java bör man inte köpa boken för dess kapitel om trådning.
Joshua har arbetat mycket med API-design vilket märks i boken, mycket av vad han skriver är riktat till utvecklare av återanvändbara komponenter. Även om man inte jobbar med API-design finns det stora fördelar med att arbeta med återanvändbarhet i åtanke.
Överlag tror jag att få har glädje av allt innehåll i boken men alla har glädje av något.
Självtestfråga:
Arv, delegering samt dekorering är tre sätt att realisera återanvändbarhet av kod. Vad finns det för fördelar/nackdelar mellan arv/dekorering? Vad är det för skillnad mellan dekorering och delegering?
Känns frågan relevant? Vill du veta svaret? Läs boken
Mer info om boken
Java theory and practise
Om du är sugen på mer av samma sort kan jag rekommendera Brian Goetz artiklar i ”Java theory and practise”, han är en av utvecklarna bakom mjukvaran findbugs. Nivån och upplägget är likt det i Effective Java.
Ex på fråga man får besvarad i artikeln Safe construction techniques: Vad kan det finnas för fallgropar med att starta en ny tråd i en konstruktor?
Samtliga artiklar
I denna avslutande del i min artikelserie beskriver jag det slutliga elddopet för mitt försök att implementera en design där persistensmekanismen kan bytas ut utan att klientkoden behöver skrivas om.
Ambitionen var att flytta persistenshantering till en J2EE-server och ge webappen tillgång till denna via en fasad i form av en sessionsböna. Servern jag valde var JBoss 4.0, en open-source server, flitigt använd av Javautvecklare och med en ökande marknadsandel.
Läs mer >>
Inledning
Java Server Faces (JSF) är ett nytt ramverk för att bygga webbapplikationer. Genom att beskriva konverteringen av en enkel Strutsapplikation till JSF försöker denna artikel visa hur JSF kan användas för att implementera en MVC-baserad webbapplikation. Artikeln förutsätter generella kunskaper i design av webbapplikationer och Struts i synnerhet. Läs mer >>