Vi er nå på versjon 11 av Java, men mange bruker fortsatt gamle versjoner som 7. 📸: Unsplash
Vi er nå på versjon 11 av Java, men mange bruker fortsatt gamle versjoner som 7. 📸: UnsplashVis mer

Frykt for omstridt lisensendring stopper Java 11-bruk

Norske utviklere kjører fortsatt Java 7. Stabilitet, nye lisenser og Kotlin bremser oppdateringene.

For en snau måned siden, 25. september, slapp Oracle den ellevte versjonen av Java.

Utgivelsen kom bare fem måneder etter Java 10, og kun ett år etter Java 9.

Java 11 er nå utgitt som LTS – Long Term Support, som betyr at det er et produkt Oracle skal støtte lenge.

Det har altså ikke skortet på utgivelser av nye Java-versjoner de siste årene, men holder egentlig utviklerne tritt med de nye utgivelsene?

Og har de i det hele tatt et ønske om å gjøre det?

«Potensiell lisensfelle»

- Den største bekymringen ligger kanskje ikke selve oppgraderingen av kodebasen, men heller lisensendringen, forteller Sindre Nordbø i Bekk til kode24.

Vi har også pratet med koderne Aleksander Blomskøld i Fiken og Kjetil Torvund Minde i Gurusoft, og alle tre tar opp problematikken rundt lisensendringene i Java 11.

Fra og med versjon 11 er nemlig Oracles pakke for Java-utvikling, Oracle JDK, under kommersiell lisens for bruk i produksjon. For lokal utvikling er det fortsatt gratis.

Lisensendringen har ikke gått utviklere hus forbi. Den britiske utvikleren og bloggeren Stephen Colebourne har kritisert den nye lisensløsningen, og ment at Oracle setter ut en felle for utviklere. Noe han forøvrig har gått tilbake på i ettertid.

Over til OpenJDK

Alternativet til Oracle JDK er OpenJDK, som også vedlikeholdes av Oracle, og kan brukes fritt uten å betale lisens.

- Man må tenke på lisensforandringene. Man bør nå bruke OpenJDK, istedenfor Oracles JDK, forteller Blomskøld i Fiken.

Kjetil Torvund Hansen i Gurusoft forteller at han har fått høre det samme fra drift i selskapet hans: Nå er det OpenJDK som gjelder.

Sindre Nordbø i Bekk tror blant annet usikkerhet rundt lisensen bremser Java-oppdateringer. 📸: Bekk
Sindre Nordbø i Bekk tror blant annet usikkerhet rundt lisensen bremser Java-oppdateringer. 📸: Bekk Vis mer

Ofres for stabilitet

Når vi spør utviklerne om hvorfor de ikke oppgraderer til Java 11, får vi svar som tyder på at Java-miljøet er ganske forsiktig generelt med å oppdatere til nye versjoner.

- Enn så lenge kjører vi på Java 7 og 8. Drift ønsker så stabilt system som mulig, og endringer fører ofte til ustabilitet, forteller Kjetil i Gurusoft.

- Noen interessante nyheter er det vel, som var-syntaks i Lambda-parametre, for eksempel. Men nå driver jeg ikke med Java på prosjekt lenger, så jeg må ærlig innrømme at jeg ikke helt vet omfanget av utgivelsen, sier Nordbø i Bekk.

Kotlin tar over

Blomskøld i Fiken, som kode24 besøkte nylig, forteller at Java 11 ikke har slått gnister hos dem heller.

- For å være ærlig har det ikke vært så mye spennende for oss. Mer og mer av kodebasen vår skrives nå i Kotlin, så da er ikke de språklige forbedringene med «var» så spennende. De største nyhetene på JVM-en og i JDK-en kom til Java 9, sier Blomskøld.

- Forbedringene med Stringer, at de nå ofte får halv størrelse i minne ettersom de blir representert med byte-arrays istedenfor char-arrays, har gitt merkbart forbedret minneforbruk, samt noe bedre ytelse.

«Dropp Java 8»

Hva med nye applikasjoner? Bør de skrives i Java 11?

- Java 11 er en LTS, så den bør i hvert fall velges foran Java 9 og 10. Jeg ser heller ingen spesiell grunn til å holde fast ved Java 8, så i mine øyne er det ganske opplagt at nye applikasjoner bør skrives i Java 11, forteller Nordbø i Bekk.

- Nye applikasjoner bør skrives i Kotlin, og de bør kjøres på versjon 11 av JVM/JDK-en, forteller Blomskøl med et flir.

Oracle svarer

kode24 kontaktet Oracle for å høre hva de mener om de påståtte lisensproblemene. Vi fikk svar fra Inge Os, Solution Engineer i Oracle.

- JDK11 releases fra to kanaler, OracleJDK og OpenJDK. OpenJDK og Oracle JDK har felles kildekode, som vedlikeholdes av Oracle, slik at for alle praktiske formål er OpenJDK er fullgodt alternativ.

- OpenJDK er lisensiert med GNU GPL. Kommersiell bruk av Oracle JDK11 krever lisens, og supportavtale, som må kjøpes av oss. Utvikling, test, demo og prototyping regnes ikke for kommersiell bruk, mens all produksjon er kommersiell bruk. Det som anbefales er å bruke OpenJDK, og ved definert behov kun bruke OracleJDK i produksjon, spesielt når det er behov for stabil versjon over tid, med tilgang til sikkerhets-patcher.

- OpenJDK vil ha en 1/2 årlig «release-cycle», i mindre inkrementer, slik at for å få patcher raskt, uten supportavtale, kjør på 1/2-releaser av OpenJDK.