utvikling

Oracle har kåret Java-programmet til Rafael i Oslo til ett av verdens aller beste

Tas i bruk mange millioner ganger i måneden.

Java-biblioteket Byte Buddy er ekstremt mye brukt, selv om mange trolig ikke er klar over at de bruker det.
Java-biblioteket Byte Buddy er ekstremt mye brukt, selv om mange trolig ikke er klar over at de bruker det.

I forbindelse med at Java er 25 år i år, har Oracle kåret de 25 mest geniale og innflytelsesrike Java-applikasjonene som noen gang er skrevet. Listen omfatter programvaren til Mars-kjøretøyet Spirit, søket til Wikipedia og mye kjent programvare, slik som Hadoop, Jenkins og IntelliJ IDEA.

Men også Byte Buddy, et åpen kildekode-baserte Java-bibliotek utviklet av Rafael Winterhalter, er blant de 25. Han er opprinnelig fra Tyskland, men har bodd i Norge de siste sju årene.

Byte Buddy for metaprogrammering

Byte Buddy er et bibliotek for generering og manipulering av kode. Det kan opprette og endre Java-klasser under kjøringen av Java-programmer, uten hjelp fra en kompilator.

Overfor Digi.no utdyper Winterhalter.

– Byte Buddy er et kodegenererings og -manipulasjonsbibliotek for JVM-en (Java Virtual Machine, journ. anm.). Du benytter Byte Buddy for metaprogrammering, altså programmering hvor du ikke forteller programmet at du vil gjøre X, men hvor du forteller til programmet at du vil lage et program som gjør X, innleder han i en e-post til Digi.no.

Rafael Winterhalter har fått betydelig oppmerksomhet for sitt Byte Buddy-bibliotek. Foto: Privat
Rafael Winterhalter har fått betydelig oppmerksomhet for sitt Byte Buddy-bibliotek.

– Programmering ved å programmere, altså, og dette kan du abstrahere på så mange nivåer som du vil (lage et program som lager et program som lager et program ... som gjør X). Dette høres veldig akademisk ut, men er i praksis essensielt for moderne programmeringsplattformer. Java byte code (kompilert Java-kildekode) er jo i seg selv bare en abstraksjon som etterpå transformeres til maskinkode av JVM-en og hvor maskinkoden også blir omorganisert av prosessoren, forklarer Winterhalter.

Pålitelige abstraksjoner

– Men når JVM-en (og prosessoren) er mest opptatt av at ting går fort, er Byte Buddy ment for å skape konsistens i programmet. Når du for eksempel vil skrive kode som noterer ytelsen hver gang du gjør en spørring mot databasen din, er det lett å glemme en spørring et sted, spesielt i en større kodebase med mange utviklere. Da er det mer effektivt å skrive et program som omskriver ditt program til å finne alle slike tilganger, og hvor Byte Buddy legger inn tidsmålingen uten at du må programmere ut dette overalt. Dette sparer deg mye tid og gjør ting mer pålitelig. Og på samme måte som mange bruker JVM-en for å kunne skrive kode på kort tid uten å tape mye på ytelse (JVM-en gjør jo mye her for deg), bruker mange Byte Buddy for å skape pålitelige abstraksjoner gjennom sin kodebase og bruker den besparte tiden på noe annet.

Sju år til nå

Winterhalter forteller at han opprinnelige lagde Byte Buddy for å dekke egne behov.

– Jeg har alltid vært rimelig aktivt i åpen kilde-miljøet, og kodegenerering er noe man ofte behøver. Jeg har blant annet vært litt med på Apache Wicket i denne tiden, og vi sleit med proxy-genereringen. Jeg skulle først fikse noe i biblioteket vi brukte, men det var håpløst utdatert, og jeg bestemte meg at jeg skal lage noe som oppfyller våre behov. Etter hvert som interessen for denne løsningen økte, har jeg utvidet biblioteket mer og mer, og nå, syv år senere, holder jeg fortsatt med å følge opp «use cases», forteller han.

Millioner av månedlige nedlastinger

Ifølge Oracles liste opplyser Winterhalter at Byte Buddy lastes ned rundt 20 millioner ganger i måneden. Men det dreier seg ikke utelukkende om direkte bruk.

Mange bruker altså koden min uten å egentlig vite det.

– Byte Buddy ligger lavt i stacken og brukes som derfor av mange biblioteker som brukes av mange. Jeg medutvikler for eksempel et «mocking»-bibliotek som heter Mockito, som benytter seg mye av Byte Buddy, og hver nedlasting av Mockito medfører en nedlasting av Byte Buddy, forklarer Winterhalter.

Det samme gjøres av en rekke andre biblioteker, slik som Hibernate, AssertJ, Selenium og Spock.

– Mange bruker altså koden min uten å egentlig vite det, sier han.

Vanskelig å leve av

Til daglig er Winterhalter programvarekonsulent, for tiden i Skatteetaten som ansatt og som partner i Scienta.

– Åpen kilde er dessverre ikke noe man virkelig kan leve av. Mange skryter av åpen kilde, men få vil virkelig investere i det. Jeg befinner meg samtidig i en heldig situasjon hvor mitt firma støtter meg, ikke med varme ord, men med tid og penger og hvor også noen kommersielle aktører investerer i videreutviklingen, skriver Winterhalter.

– For fire år siden, for eksempel, betalte den tysk-amerikanske startupen Instana meg i ett år for å videreutvikle Byte Buddy i fulltid, siden de selv benytter biblioteket mye. Men en god del av biblioteket er drevet av entusiasme. Jeg er glad i å kode, og Byte Buddy er fortsatt en stor nok utfordring til å holde meg gående, selv om det ikke er direkte kommersielt lønnsomt, forteller han.

– Subjektiv liste

Om kåringen framstår Winterhalter som glad, men fattet. Han syns det er veldig gøy å bli valgt ut, men anser ikke listen som så absolutt som den kan leses, da det finnes mye bra også utenfor listen.

Jeg er helt klart glad at jeg blir nevnt, men utvalget er nok mer subjektivt enn absolutt.

– Jeg er heldig å lage noe som mange anser som «komplisert», og får derfor mye oppmerksomhet for mitt arbeid. Jeg er helt klart glad at jeg blir nevnt, men utvalget er nok mer subjektivt enn absolutt. Men ærlig talt, oppmerksomhet er et slags valuta i åpen kilde. Derfor er jeg også alltid glad hver eneste gang når Byte Buddy nevnes. Om folk gjenkjenner mitt navn, slik at vi da lettere vinner en rammeavtale for jeg fremstår som mer kompetent, så er dette åpenbart et argument for oss i Scienta til å bruke mer av min tid på åpen kilde. Derfor er det alltid en del lettelse i det også ;), skriver Winterhalter, som mener at The Oatmeal har beskrevet dette best.

Dugnadssjarm

– Hva tror du er årsaken til at Oracle har valgt ut akkurat din programvare?

– Jeg er en individuell utvikler som lager et ikke-kommersielt åpen kildeprosjekt – «FOSS» – som mot alle klisjeer har blitt et unntak. Vi har gått bort langt fra Richard Stallmans opprinnelig idé om åpen kilde, som mange i Oracle føler en viss sentimentalitet for, og som jeg fortsatt prøver å representere, skriver Winterhalter.

Han forteller at dette føles litt godt når åpen kilde har tapt en del av sin «dugnadssjarm» og i dag i stor grad er drevet av store organisasjoner

– Jeg tror derfor at det er en kombinasjon av mitt veldig faglig orienterte arbeid, min særstilling i åpen kildekode-miljøet og min store rekkevidde, som hjelper meg til å få denne oppmerksomheten, som jeg selvfølgelig er takknemlig for, avslutter Winterhalter.

Powered by Labrador CMS