Med utgangspunkt i kritikk fra dansken Per Brinch Hansen setter kronikkforfatteren spørsmålstegn ved sikkerheten:
Øyvind Teig
01.09.99
Suns programmeringsspråk Java har en rekke fordeler som gjør at det raskt brer seg ut i dataverdenen. Forenklingene
ved Java, spesielt i forhold til C++, har tiltalt brukerne. Likevel hevdes det nå at språket ikke vil være sikkert
nok ved framtidig bruk i innebygde og sikkerhetskritiske system. I bladet ACM SIGPLAN Notices (april 1999) retter
dansken Per Brinch Hansen ved Syracuse universitet en flerrende kritikk av hvordan Sun Microsystems har
implementert Javas synchronized-uttrykk. Forfatteren konkluderer i sammendraget av artikkelen Java's
Insecure Parallelism at "Java ignorerer de siste 25 års forskning i parallelle programmeringsspråk".
Brinch Hansen bør vite hva han snakker om: Han oppfant begrepet monitor som Sun sier de har implementert.
"Påstanden om at Java støtter monitor, vises å være usant".
Tråder
Fra 1985 til 1987 (før Java!) kan det vises til seks pasienter som fikk røntgenoverdoser fra strålemaskinen
Therac-25 på grunn av feil i dataprogrammet. Noen pasienter døde. I de fleste programstyrte bokser utfører mange små
program hver sin avgrensede del av jobben. Hver av dem kalles tråder , og de må kjempe om kjøretiden til en
innebygd mikroprosessor. Det er som i en by med mange trolleybussruter og én luftledning pr. rute. På kraftstasjonen
er det nok strøm til å kjøre en buss om gangen – og der må man svitsje strømmen ut og inn til et utall av
kjøreledninger. Om bord i bussene arbeides det ivrig så lenge de beveger seg. Av og til må noen bytte buss for å
levere resultater eller hente råvarer eller nye oppskrifter.
Fatale følger
Bestemte designregler må følges når slike system konstrueres – de kalles ofte sanntidssystem og teknikken
parallell programmering. Programmererne har mer hjelp med Java enn med C/C++, men det viser seg at det er altfor lett å
lage uforutsette feil som ikke oppdages av programmeringsverktøyet. Etter flere års drift kan feilen dukke opp.
Styringer i fly, biler, bankterminaler, deler av PC-en din og i vaskemaskiner er bygd på denne måten. Noen av disse systemene vil i framtiden være programmert i Java. Ctrl-alt-del knappene kan være langt unna dersom disse systemene feiler. Virkningene kan bli fatale. En kokt ullgenser i vaskemaskinen trenger ikke være det mest alvorlige resultatet.
Usikkerheten
I artikkelen hevder Brinch Hansen at Java har arvet for mye fra C-versjonen siden graden av innkapsling og
beskyttelse mot konkurrerende tilgang kan velges av programmereren. Sun har ikke fått med seg at monitorbegrepet
innbefatter slik beskyttelse. Derfor er Java usikkert. Brinch Hansen skriver: "Det forbauser meg at Javas
usikre parallellitet blir tatt seriøst av programmerere – 25 år etter oppfinnelsen av monitor og Concurrent Pascal.
Det har ingen fortrinn." Det arbeides med sanntids Java, men Brinch Hansens kritikk vil nok også gjelde for
resultatet av dette arbeidet. Han hevder at utviklingen ikke stoppet i 1972 og at "i dag har vi i hovedsak tre
metodikker: monitor, fjernprosedyre kall og meldingshåndtering". Det finnes tilgjengelig flere verktøy der man
kan verifisere sanntidssystem ved å benytte såkalte prosessalgebraer,
se Magee & Kramer, Concurrency: State Models and Java Programs,
http://www-dse.doc.ic.ac.uk/concurrency/. Bibliotek basert
på en slik prosessalgebra er også under utvikling for Java. Brukeren slipper å benytte synchronized, se http://www.nist.gov/itl/div896/emaildir/rt-j/msg00385.html
.
Det er å håpe at Sun Microsystems studerer Brinch Hansens artikkel grundig. Den kommer neppe som noen stor
overraskelse.