Sådan fjerner du Oracles Java og installerer OpenJDK

Illustration: Bigstock/vbacarin
Nye licensbetingelser for Oracles Java 11 kræver penge, hvis du skal bruge det til produktion. Vi fjerner miljøet og erstatter med open source-udgaven OpenJDK.

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.

Læs også: Udvikler advarer: Gå ikke i Oracles Java 11-fælde

»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:

Ved download af Oracle JDK 11 mødes brugerne nu af denne dialog. Illustration: Version2

»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…’

Her tilføjes stien til OpenJDK's bin-mappe til Windows 'Path'-variabel. Illustration: Version2

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.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Følg forløbet
Kommentarer (12)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Troels Arvin

Så vidt jeg kan se, er der ikke længere nogen sondring mellem JDK or JRE fra og med generation 11.

Men erfaring er, at OpenJDK fungerer fint, så der er ikke noget teknisk problem. Problemet er, at mange softwareprodukter tradtionelt har krævet Oracle's Java og/eller kun har været testet med Oracle's Java; dét vil nok ændre sig nu, hvilket er fint.

Troels Arvin

Stig skrev:
"synes bare det virker mærkeligt at installere et Development Kit på en produktionsserver"

Det synes jeg nu ikke er så mærkeligt. Der er jo ikke tale om et stort IDE; det er blot en lille kommandolinje-compiler og lidt ekstra, der ikke fylder alverden. JDK indeholder ikke noget, der forbruger RAM, lytter på porte eller lign.

For mig at se er det en udmærket simplificering.

Stig Christensen

Og jeg synes faktisk det er en rigtig dårlig ide. :) Én som ikke kender Java, men kender begrebet Development Kit bliver hurtigt forvirret. Hvis der ikke rigtig er noget inkluderet til en udvikler så skal de kalde det runtime eller finde et andet begreb. Hvad hvis Oracle en dag tilføjer nogle gode tunge udviklingsværktøjer, så er de nød til at oprette en ny pakke kaldet JDK-extended. Præcis navngivning er vigtig, især inden for IT. :)

Jeg forstår faktisk heller ikke helt Java Download som altid har ligget her (her er det en ren runtime så vidt jeg ved)

https://www.java.com/en/download/

Her står der version 8, kører den også Java 11 kode?

Søren Lund

Azul Systems har et produkt, der hedder Zulu, der er beskrevet som "...a certified build of OpenJDK that is fully compliant with the Java SE standard. Zulu is 100% open source and freely downloadable."

Der kan desuden tilkøbes kommerciel support til Zulu.

Er der nogen her, der har erfaringer med Zulu?

Se https://www.azul.com/downloads/zulu/ (og bemærk at de tæller ned til hvornår sidste gratis Java 8-opdatering kommer).

Troels Arvin

Nej, ingen erfaringer med Zulu, men jeg har svært ved at forestille mig, at den ikke fungerer. Zulu planlægger at tilbyde supporteret JDK/JRE 8 helt frem til udgangen af 2024, hvilket må siges at være et stykke tid.

Hvis man benytter RHEL/CentOS kan man man også vælge blot at benytte deres indbyggede OpenJDK 8, som vil blive hold i live frem til juni 2023.

Kim Brouer

...at Oracles builds af OpenJDK ikke får sikkerhedsopdateringer efter få måneder, da man forventes at opgradere til JDK12,13,... efterhånden som de udgives?

Produktionsmiljøer er jo netop ikke altid interesserede i at skifte version hyppigt.

I OpenJDK er ikke længere den eneste tilgængelige open source-Java på markedet. En anden udgave er AdoptOpenJDK

Jeg havde forstået det som at OpenJDK er sourcen, og AdoptOpenJDK er en enhed, der bygger en release af OpenJDK, på samme måde som Oracle selv gør det.
Bare at AdoptOpenJDKs licens er den gammel-kendte GPL med classpath-undtagelse, og at de vedligeholder deres releases med sikkerhedsopdateringer noget længere (med hjælp fra bl.a. RedHat).

Michael Bisbjerg

Bemærk dog at du ved at have de ekstra værktøjer på din server, også åbner for yderligere hacks. Hvis en fejl f.eks. tillader at en udfrakommende kan køre kommandoer (RCE) på din server, så vil det faktum at "javac" er til stede gøre at hackeren har flere muligheder.

JDK'et kommer også med en række ekstra værktøjer til f.eks. at manipulere med certifikatstores, så man kunne f.eks. forestille sig at hackeren (nemmere) kunne indsætte sit eget certifikat i en store -- hvor man normalt kun har værktøjer til at liste certifikater med.

Det går igen for alle værktøjer. Der er f.eks. ikke brug for ping på en produktionsserver, men ping er et værktøj en hacker kan bruge til at teste om andre servere eksisterer, eller til blot at vente i et script i nogle sekunder (Windows cmd har ikke nogen sleep, men en ping kan substituere for sleep).

Nicolai Buch-Andersen

Jeg er enig med Michael i, at JDK'en som udgangspunkt ikke bør distribueres med en applikation, og det uanset om den skal køre på en server eller en desktop.

Jeg tror at det er meningen, at udviklere fremover skal bruge jlink (https://docs.oracle.com/javase/9/tools/jlink.htm#JSWOR-GUID-CECAC52B-CFE...) til at bygge deres egen skræddersyede JRE, fremfor at bruge en standard one-size-fits-all JRE fra Oracle.

Log ind eller Opret konto for at kommentere
Pressemeddelelser

Welcome to the Cloud Integration Enablement Day (Bring your own laptop)

On this track, we will give you the chance to become a "Cloud First" data integration specialist.
15. nov 2017

Silicom i Søborg har fået stærk vind i sejlene…

Silicom Denmark arbejder med cutting-edge teknologier og er helt fremme hvad angår FPGA teknologien, som har eksisteret i over 20 år.
22. sep 2017

Conference: How AI and Machine Learning can accelerate your business growth

Can Artificial Intelligence (AI) and Machine Learning bring actual value to your business? Will it supercharge growth? How do other businesses leverage AI and Machine Learning?
13. sep 2017
Jobfinder Logo
Job fra Jobfinder