James Gosling, faderen til Java, et af verdens mest udbredte programmeringssprog, har talt med forskeren Lex Fridman om Javas oprindelse og hans motiver for at skabe et sprog, der skulle bruges på titusindvis af milliarder af enheder og blive centralt for udviklingen af Android hos Google.
Gosling designede Java for 25 år siden, mens han arbejdede for Sun Microsystems. I 2009 skulle Java blive en af de vigtigste årsager til, at Oracle overtog Sun. Ifølge Oracle er der i dag 51 milliarder aktive Java Virtual Machines (JVM’er) i drift på verdensplan.
Men længe før Oracles overtagelse af Sun sagde Gosling, at han og et team hos Sun “var lidt bekymrede for, at der foregik ting i computeruniverset, som computerindustrien gik glip af” – det, der i dag ville blive til Internet of Things.
SEE: Hiring Kit: Det handlede om alt det, der skete inden for computerhardware, processorer og netværk, som lå uden for computerindustrien,” sagde han.
“Det var alt fra de tidlige glimt af mobiltelefoner, der skete dengang, til – du ser på elevatorer og lokomotiver og processtyringssystemer i fabrikker og alle former for audio- og videoudstyr.
“De havde alle processorer i dem, de lavede alle sammen noget med dem, og det føltes, som om der foregik noget, som vi var nødt til at forstå.”
På det tidspunkt “ejede C og C++ absolut universet”, og alt blev skrevet i disse sprog.
Gosling fortæller, at hans team tog på flere “episke køreture” omkring 1990 for at besøge Toshiba, Sharp, Mitsubishi og Sony i Japan, Samsung og flere andre sydkoreanske virksomheder, og han tog “over hele Europa” for at besøge Philips, Siemens og Thomson.
“En af de ting, der sprang i øjnene, var, at de lavede alle de sædvanlige computerting, som folk havde gjort 20 år tidligere,” husker han.
“De genopfandt computernetværk, og de begik alle de fejl, som folk i computerindustrien havde begået.
“Da jeg har arbejdet meget med netværksområdet, besøgte vi firma X, som beskrev den her netværkssag, de var i gang med, og jeg kunne uden noget som helst fortælle dem omkring 25 ting, som ville blive en total katastrofe.”
Den opdagelse, at industrien uden for den traditionelle computerverden nu gentog tidligere fejltagelser, var en af de vigtigste grunde til, at Gosling og hans kolleger mente, at de kunne tilbyde noget nyttigt i Java.
Det gik imidlertid også op for ham, at forbrugerelektronikindustrien og computerindustrien havde et meget forskelligt syn på kunderne, hvilket var med til at informere ham om, hvordan han ville designe Java.
“Højt på listen stod, at de betragtede deres forhold til kunden som helligt. De var aldrig nogensinde villige til at foretage kompromiser af hensyn til sikkerheden. En af de ting, der altid gjorde mig nervøs i computerbranchen, var, at folk var villige til at foretage kompromiser med hensyn til pålidelighed for at få ydeevne,” sagde Gosling.
“Bare det at finde ud af … hvordan man sikrer, at hvis man lægger et stykke ristet brød i brødristeren, vil det ikke slå kunden ihjel. Det vil ikke bryde i brand og brænde huset ned”, tilføjede han.
Efter disse køreture byggede Gosling og virksomheden en prototype af et styresystem i C- og C++-kode til hjemmeelektronikvarer som f.eks. et tv og en videobåndoptager. Sikkerhed var en vigtig faktor i hans målsætninger for det, der skulle blive til Java.
“Tilbage i begyndelsen af 1990’erne forstod man godt, at den største kilde til sikkerhedssårbarheder bare var pointere, var bare fejl, omkring 50-60-70 % var fejl, og langt de fleste af dem var bufferoverløb. Vi er nødt til at sikre, at dette ikke kan ske. Og det var det, der var det oprindelige for mig: ‘Dette kan ikke fortsætte’.”
Men tidligere i år læste Gosling en nyhedsrapport om, at Chromium-teamet havde fundet ud af, at 70 % af sikkerhedsfejlene i Chrome-kodebasen var hukommelseshåndtering og sikkerhedsfejl.
“Chrome er som et gigantisk stykke C++-kode. Og 60-70 % af alle sikkerhedssårbarhederne var dumme pointertricks. Og jeg tænkte, at det er 30 år senere, og vi er stadig der,” sagde Gosling.
Ud over sikkerhedshensyn til Java ønskede han at sikre “udviklerhastighed”.
“Jeg blev virkelig religiøs omkring det, fordi jeg havde brugt ufattelig meget tid af mit liv på at jage mystiske pointerfejl. De mystiske pointerfejl har tendens til at være de sværeste at finde, fordi … dem, der gør ondt, er en chance på en ud af en million,” bemærker han.
“Når du udfører en milliard operationer i sekundet, betyder det, at det kommer til at ske. Jeg er blevet religiøs omkring, at hvis noget fejler, sker det straks og synligt. En af de ting, der var en reel tiltrækning ved Java for mange udviklingshuse, var, at vi ved, at vi får vores kode op og køre dobbelt så hurtigt.”
Se: Stephen Hawking tog fejl om, at AI dræber mennesker (siger robot)
Objektorienteret programmering var også et vigtigt koncept for Java, ifølge Gosling.
“En af de ting, man får ud af objektorienteret programmering, er en streng metodologi om, hvad der er grænsefladerne mellem tingene, og at man virkelig er klar over, hvordan dele relaterer sig til hinanden.”
Det hjælper med at løse situationer, hvor en udvikler forsøger at “snige sig rundt på siden” og ødelægger kode for en anden bruger.
Han indrømmer, at han har gjort nogle mennesker vrede ved at forhindre udviklere i at bruge bagdøre. Det var en “social engineering”-ting, men siger, at folk opdagede, at begrænsningen gjorde en forskel, når man byggede store, komplekse stykker software med mange bidragydere på tværs af flere organisationer. Det gav disse teams klarhed over, hvordan disse ting bliver struktureret og “redder dit liv”.
Han kom med en kort kritik af den tidligere Android-chef Andy Rubins håndtering af Java i forbindelse med udviklingen af Android. Gosling havde i 2011 et kort ophold hos Google efter Oracles overtagelse af Sun af Oracle. Oracles retssag mod Google om selskabets brug af Java API’er er stadig ikke helt afgjort efter et årti af retsmøder.
“Jeg er glad for, at det lykkedes”, sagde Gosling med henvisning til selskabets brug af Java i Android. “Java havde kørt på mobiltelefoner i en del år, og det fungerede rigtig, rigtig godt. Der var ting ved den måde, de gjorde det på, især forskellige måder, hvorpå de ligesom overtrådte alle mulige kontrakter.”
“Den fyr, der stod i spidsen for det, Andy Rubin, han overskred en masse grænser. Der blev overskredet grænser, som siden er svampet ud i gigantiske retssager. behøvede ikke at gøre det, og faktisk ville det have været så meget billigere for dem ikke at overskride grænserne,” tilføjede han.
“Jeg kom til at tro, at det var ligegyldigt, hvad Android gjorde, det ville eksplodere. Jeg begyndte at tænke på mig selv som en slags producent af bomber.”