Threadlocal storage November 18, 2008 07:19 about 1 month ago
Jeg er midt i en debugsession i en Java applikation som nægter at virke. Maskinen er en 64bit server med 16 fysiske CPU’er. Efter et par timer går det op for mig at Java’s threadlocal er årsagen. Applikationen køre fint på en dual core maskine hvor CPU’er har fælles hukommelse men kan ikke køre på en maskine hvor alle read more
Jeg skal hastighedsoptimere en Java applikation. Den skal performe max på kortest mulige tid. Den kan ikke skalere udad som man normalt ville ønske men kun opad. Det vil sige en enkelt supermaskine med 16 CPU’er og 16G ram i 64bit software.
I de senere år er kravet om hurtigere CPU hastigheder er faldet mens kravet om antal ... read more
En Java proces har et lineart stigende hukommelsens forbrug. En uheldig arkitektur beslutning afstedkommer en konstant øgning af hukommelses forbrug ved eksekvering af processen. Beslutningen resulterer i en begrænset køretid afhængigt af den valgte mængde af hukommelse hvori processen eksekveres.
En proces med ca. 4000 enheder optager ca. femhundrede megabytes. Et anslået estimat... read more
Jeg har lige modtaget en java kildefil fra en kollega med ca. 300 linjer. Jeg vil ikke vise den fordi den er alt for verbose eller lowlevel. Der er en main metode og et par metoder med noget dato fis. I teorien skulle klassen kunne beregne børneydelse og er en del af en større skattepakke der er baseret på Magnus og kan beregne både skat og budget.
Det var faktisk noget jeg skulle ... read more
Jeg sider på et projekt og abstrahere nogle skatteberegninger som skal eksekveres i Java. Alt det kryptiske gøjl omkring opsætning og små ligegyldige spidsfindigheder er på plads. Det som holder mig vågen er hvordan jeg skal synliggøre eller promote grænsefladen til disse beregninger for en stribe udviklere.
Jeg kan jo bare lade dem konstruere en stribe objekter og invokere set met... read more
Java LOCK objects January 22, 2008 09:05 11 months ago
String konstanter i Java er gemt i en intern tabel, også selvom konstanten kan findes i flere klasser. Når vi har flere samtidige tråde kørende er det vores opgave at beskytte de fælles ressource imod korruption.
Når man kigger på systemernes performance starter man typisk med at se på CPU, disk, IO og memory forbrug. Hvis alt er i orden går man typisk vi... read more
Java succes! January 16, 2008 08:18 11 months ago
Jeg ser frem til at afprøve alle de nye features i Java 7 som snart kommer i de første prebuilds. Men inden da vil jeg her give min sidste uforbeholdne mening om Java op til version 6 som jeg ser det.
Stabiliser Java
Java som sprog trænger til at blive stabiliseret. En bred skare af personer arbejder på nye sprogkonstruktioner til Java men efter min mening bør de overfø... read more
Strike an Attiude January 12, 2008 19:06 12 months ago
Java er legacy! Måske en kontroversiel kommentar når den opfattes uden af kontekst. I dette tilfælde var konteksten et møde hvor vi diskuterede økonomisk kompensation for arbejde med ældre eller udgående teknologier som ikke yder ens kompetencer værdighed.
I mere end 10+ år har jeg brugt næste al min tid på arbejde med Java og tilhørende teknologer. Jeg har med stor interesse fuldt... read more
I Javahouse havde vi besøg af Lars Bak fra Århus Universitet, manden som opfandt og byggede Hotspot compileren hos Sun Microsystems i Silicon Valley.
På det tidspunkt arrangerede vi et en dags seminar kaldt JavaTech hvor vi inviterede alle som havde noget fornuftigt at sige om Java og tilhørende teknologier. Naturligvis ville vi også vide noget specifikt omkring alle de mekanismer ... read more
Java Generics November 08, 2007 12:22 about 1 year ago
Indenfor objektorienterede sprog kan man opnå polymorf adfærd gennem generalisering. Praktisk betyder det en konstruktion som består af en super klasse som implementer fælles adfærd med en eller flere sub klasser. Man siger at sub klassen arver super klassen. Almindelige klasser og metoder arbejder med specifikke typer. Hvis koden skal kunne benyttes mellem flere typer kan du med fordel brug... read more
Javs 5+ for-each syntaksen giver ikke direkte adgang til iterator objekter der ligger til grund for lykkestrukturen i et loop. Selve listen kan modificeres direkte ved kald af metoder på listen. Dog kan man opnå et uhensigtsmæssigt programforløb. Det compiler-indsatte kald til iterator() returnere en fail-fast iterator og hvis man at ændre i listen under et loop får man en ConcurrentModific... read more
Sådan skriver Javalobby i en artikel Det nye styresystem fra Mac har ikke den nyeste Java 6 installation med fra start. Det har skabt en del røre hos prominente Java folk som pr. definition er eller har været tilhængere af MAC. I feature listen på Apples hjemmeside blev alle reference til Java fjernet f... read more