Java 11 er netop udgivet, og i den forbindelse har Oracle ændret licensvilkårene for firmaets distribution.
Det fik ligefrem den britiske udvikler Stephen Colebourne, der tidligere har deltaget i udviklingen af bl.a. api’et java.time, til at kalde de nye betingelser for en ‘fælde.’
»Java 11 er blevet udgivet. Det er en stor udgivelse, fordi den har langsigtet support (LTS). Men Oracle har også sat det op til at være en fælde, enten bevidst eller ved et uheld,« skrev han i et blogindlæg i sidste måned.
»I 23 år har udviklere hentet JDK (Java-distributionen) fra Oracle og brugt det gratis. Skriv 'JDK' i en søgemaskine, og det øverste link vil pege på en Oracle Java SE download-side. Men den søgning og det link er nu en fælde.«
Det skyldes at Oracles JDK, som websøgningen fører til, nu ikke er gratis at anvende.
Slut med gratis Oracle-Java
I de nye betingelser skriver Oracle:
»Du må ikke bruge programmerne (JDK’et, red.) til databehandling, forretningsmæssige, produktionsmæssige eller interne forretningsformål bortset fra udvikling, test, prototyper og demonstration af din applikation.«
Fælden, som Stephen Colebourne så det, bestod i følgende:
»Download Oracles JDK, fordi det er det, du altid har gjort, og det er, hvad websøgningen fortæller dig. Brug det i produktion, fordi du ikke var klar over, at licensen blev ændret. Få et ubehageligt telefonopkald fra Oracles licensafdeling, der kræver en masse penge.«
Men siden Stephen Colebournes blogindlæg blev publiceret, har Oracle nu indsat en advarsel med denne tekst, ved download af Oracle JDK:

»Vigtige ændringer i Oracle JDK 11-Licensen.«
»Med JDK 11 har Oracle opdateret licensvilkårene, som vi tilbyder Oracle JDK på. Den nye Oracle Technology Network Licensaftale for Oracle Java SE er væsentligt anderledes end de licenser, hvorefter tidligere versioner af JDK blev tilbudt. Læs de nye betingelser omhyggeligt, før du downloader og bruger dette produkt.«
»Oracle tilbyder også denne software under GPL-licensen på jdk.java.net/11.«
De nye licensregler har ingen betydning for de tidligere Oracle JDK’er, dvs. Java 10 og tidligere.
Ud med Oracles Java
I modsætning til Oracles JDK, udgives OpenJDK, der også fremstilles af Oracle, under open source-licensen GPL med Classpath-undtagelse. Det sidste betyder, at programmer der afvikles oven på JDK’et ikke ‘nedarver’ GPL-betingelserne. Man kan altså køre lukket kode og alle slags licenser oven på platformen.
Herunder prøver vi at se hvordan det går, når vi fjerner Oracles JDK’er til fordel for OpenJDK.
De programmer, vi vil prøve med, er vores eget-udviklede machine learning-system, der foreslår emneord til Version2’s artikler, samt det populære udviklingsværktøj Eclipse.
Vi var ikke i stand til at få eksisterende Eclipse-installationer opgraderet til Java 11 og OpenJDK. Men det er hurtigt og nemt at installere en ny udgave af programmet.
Vi fjerner Oracles JDK’er med Windows’ ‘Tilføj eller fjern programmer’-app.
På for eksempel Ubuntu-Linux, kan JDK’erne fjernes med kommandoen sudo apt-get remove (navn)
- hvis de vel at mærke er installeret som pakker. Ellers må man fjerne dem manuelt.
Næste skridt er at downloade OpenJDK. På Ubuntu er det så nemt som at skrive sudo apt install openjdk-11-jdk
i terminalen.
På Windows 10 downloades Open JDK til 64-bit systemer som en zip-fil. Den pakkes ud og placeres et passende sted. Jeg har lagt min i mappen C:\Program Files\Java
.
Nu skal vi tilføje stien til Java i systemets Path-miljøvariabel, der specificerer, hvor exe-filer befinder sig.
Det gøres ved at navigere til Kontrolpanel > System og sikkerhed > System og klikke på ‘Avancerede systemindstillinger.’ Nu åbnes en dialog med overskriften ‘Egenskaber for system’.
Klik på knappen ‘Miljøvariabler…’ Find linjen med ‘Path’ i den øverste del af den nye dialog, der dukker frem. Klik på knappen ‘Rediger…’

I den nye dialog, klik på knappen ‘Ny´’ og skriv stien til JDK’ets bin-mappe. På min pc ser det sådan ud: ‘C:\Program Files\Java\openjdk-11_windows-x64_bin\jdk-11\bin‘.
Klik ‘OK’ i alle dialogerne og genstart Windows.
Download nu Eclipses installer-program. Det skulle nu gerne starte op uden problemer, og vi kan installere den Eclipse-smag, som vi foretrækker.
Desværre er den ikke helt i vinkel, da en irriterende dialog i Eclipse fortæller os, at ‘Polling news feeds has encountered a problem.’
Dialogen uddyber således: ‘An internal error occurred during: Polling news feeds. javax/xml/bind/JAXBContext’
Fejlen opstår også med Oracles JDK, så det er ikke OpenJDK, der er synderen. Fejlen skyldes, at JAXB-api’et er fjernet fra Java 11 tillige med andre Java-enterprise-moduler. Eclipse har åbenbart ikke testet med Java 11 endnu. De RSS-feeds, Eclipse henter, læses formentlig med JAXB-api’et.
Heldigvis er jeg ret ligeglad med nyheder inde i Eclipse, og funktionen kan slås fra med menuen Window > Preferences > General > News. Derefter fjernes fluebenet i krydsboksen ‘Enable automatic news polling.' Derefter virker Eclipse helt fint.
I terminalen
Efter at have opdateret Windows-Path’en, kan vi nu også bruge Java i alle mapper i terminalen. Vi åbner et terminalvindue og skriver:
C:\Users\tan>java -version
Her kvitterer Java med:
openjdk version "11" 2018-09-25 OpenJDK Runtime Environment 18.9 (build 11+28) OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)
Vi tester også vores egenudviklede machine learning-algoritme, og det fungerer upåklageligt.
OpenJDK er ikke længere den eneste tilgængelige open source-Java på markedet. En anden udgave er AdoptOpenJDK, der har bl.a. IBM og Microsoft i ryggen, og som kan benyttes sammen med en alternativ VM, Eclipse OpenJ9.