Installation af Java på Ubuntu

1. Oversigt

I denne vejledning introducerer vi forskellige metoder til installation af en JDK på Ubuntu. Derefter sammenligner vi kort metoderne. Endelig viser vi, hvordan du styrer flere Java-installationer på et Ubuntu-system.

Som en forudsætning for hver metode har vi brug for

  • et Ubuntu-system
  • at være logget ind som en ikke-root-bruger med sudo privilegier

Instruktionerne beskrevet nedenfor er testet på Ubuntu 18.10, 18.04 LTS, 16.04 LTS og 14.04 LTS. For Ubuntu 14.04 LTS er der nogle forskelle, som er nævnt i teksten.

Bemærk, at både de pakker, du kan downloade fra OpenJDK og Oracle, og de tilgængelige pakker i arkiver opdateres regelmæssigt. De nøjagtige pakkenavne vil sandsynligvis ændre sig inden for nogle måneder, men de grundlæggende installationsmetoder forbliver de samme.

2. Installation af JDK 11

Hvis vi vil bruge den nyeste og bedste version af JDK, er manuel installation ofte vejen at gå. Dette betyder at downloade en pakke fra OpenJDK eller Oracle-siden og indstille den, så den overholder konventionerne om, hvordan apt opretter JDK-pakkerne.

2.1. Installation af OpenJDK 11 manuelt

Lad os først downloade tjære arkiv med den nyligt udgivne OpenJDK 11:

$ wget //download.java.net/java/ga/jdk11/openjdk-11_linux-x64_bin.tar.gz

Og vi sammenligner sha256 summen af ​​den downloadede pakke med den, der findes på OpenJDK-webstedet:

$ sha256sum openjdk-11_linux-x64_bin.tar.gz

Lad os udtrække tjære arkiv:

$ tjære xzvf openjdk-11_linux-x64_bin.tar.gz

Lad os derefter flytte jdk-11 katalog, vi netop har hentet i en underkatalog af / usr / lib / jvm. Det apt pakker beskrevet i næste afsnit anbringer også deres JDK'er i denne mappe:

$ sudo mkdir / usr / lib / jvm $ sudo mv jdk-11 / usr / lib / jvm / openjdk-11-manuel installation / 

Nu vil vi lav java og javac tilgængelige kommandoer. En mulighed ville være at oprette symbolske links til dem, f.eks. I / usr / bin vejviser. Men i stedet installerer vi et alternativ til dem begge. På denne måde, hvis vi nogensinde vil installere yderligere versioner af JDK, vil de spille pænt sammen:

$ sudo opdateringsalternativer - installation / usr / bin / java java / usr / lib / jvm / openjdk-11-manuel installation / bin / java 1 $ sudo opdateringsalternativer - installation / usr / bin / javac javac / usr / lib / jvm / openjdk-11-manuel installation / bin / javac 1

Lad os kontrollere installationen:

$ java -version

Som vi kan se fra output, har vi faktisk installeret den nyeste version af OpenJDK JRE og JVM:

openjdk version "11" 2018-09-25 OpenJDK Runtime Environment 18.9 (build 11 + 28) OpenJDK 64-bit Server VM 18.9 (build 11 + 28, blandet tilstand) 

Lad os også se på compilerversionen:

$ javac -version
javac 11

2.2. Installation af Oracle JDK 11 manuelt

Hvis vi vil sørge for at bruge den nyeste version af Oracle JDK, kan vi følge en lignende manuel installationsproces, som for OpenJDK. For at downloade tjære arkiv til JDK 11 fra Oracle-webstedet, vi skal acceptere en licensaftale først. Af denne grund downloades via wget er lidt mere kompliceret end for OpenJDK:

$ wget -c - header "Cookie: oraclelicense = accept-securebackup-cookie" \ //download.oracle.com/otn-pub/java/jdk/11.0.1+13/90cf5d8f270a4347a95050320eef3fb7/jdk-11.0.1_linux-x64_bin .tar.gz

Eksemplet ovenfor downloader pakken til 11.0.1 Det nøjagtige downloadlink ændres for hver mindre version.

Følgende trin er de samme som for OpenJDK:

$ sha256sum jdk-11.0.1_linux-x64_bin.tar.gz $ tar xzvf jdk-11.0.1_linux-x64_bin.tar.gz $ sudo mkdir / usr / lib / jvm $ sudo mv jdk-11.0.1 / usr / lib / jvm / oracle-jdk-11-manuel installation / $ sudo opdateringsalternativer - installation / usr / bin / java java / usr / lib / jvm / oracle-jdk-11-manuel installation / bin / java 1 $ sudo-opdatering -alternativer - installer / usr / bin / javac javac / usr / lib / jvm / oracle-jdk-11-manuel installation / bin / javac 1

Verifikationen er også den samme. Men output viser, at vi denne gang ikke har installeret OpenJDK men Java (TM):

$ java -version
java version "11.0.1" 2018-10-16 LTS Java (TM) SE Runtime Environment 18.9 (build 11.0.1 + 13-LTS) Java HotSpot (TM) 64-bit Server VM 18.9 (build 11.0.1 + 13- LTS, blandet tilstand)

Og for compileren:

$ javac -version
javac 11.0.1

2.3. Installation af Oracle JDK 11 fra en PPA

I øjeblikket er Oracle JDK 11 også tilgængelig i en PPA (arkiv til personlig pakke). Denne installation involverer 2 trin: tilføjelse af lageret til vores system og installation af pakken fra lageret via apt:

$ sudo add-apt-repository ppa: linuxuprising / java $ sudo apt update $ sudo apt install oracle-java11-installer

Bekræftelsestrinene skal vise det samme resultat som efter den manuelle installation i afsnit 2.2.1 .:

$ java -version
java version "11.0.1" 2018-10-16 LTS Java (TM) SE Runtime Environment 18.9 (build 11.0.1 + 13-LTS) Java HotSpot (TM) 64-bit Server VM 18.9 (build 11.0.1 + 13- LTS, blandet tilstand)

Og for compileren:

$ javac -version
javac 11.0.1

På Ubuntu 14.04 LTS add-apt-repository kommandoen er ikke tilgængelig som standard. For at tilføje et lager skal vi først installere software-egenskaber-fælles pakke.

$ sudo apt opdatering $ sudo apt installer software-egenskaber-fælles

Bagefter kan vi fortsætte med add-apt-repository, apt opdatering og apt installation som vist ovenfor.

3. Installation af JDK 8

3.1. Installation af OpenJDK 8 på Ubuntu 16.04 LTS og nyere

JDK 8 er en LTS-version, der har eksisteret i et stykke tid. Af denne grund kan vi finde en opdateret version af OpenJDK 8 i "Main" -lageret på de fleste af de understøttede Ubuntu-versioner. Selvfølgelig kan vi også gå til OpenJDK-webstedet, få fat i en pakke der og installere den på samme måde som vi har set i det foregående afsnit.

Men ved hjælp af apt værktøj og "Main" repository giver nogle fordele. "Hoved" -lageret er som standard tilgængeligt på alle Ubuntu-systemer. Det understøttes af Canonical - det samme firma, der vedligeholder Ubuntu selv.

Lad os installere OpenJDK 8 fra "Main" -lageret med apt:

$ sudo apt opdatering $ sudo apt installer openjdk-8-jdk

Lad os nu kontrollere installationen:

$ java -version

Resultatet skal angive et Runtime-miljø og en JVM:

openjdk version "1.8.0_181" OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-0ubuntu0.18.04.1-b13) OpenJDK 64-bit Server VM (build 25.181-b13, blandet tilstand)

Lad os kontrollere, at javac eksekverbar er også tilgængelig:

$ javac -version

Nu skal vi se det samme versionsnummer som vist ovenfor:

javac 1.8.0_181

3.2. Installation af OpenJDK 8 på Ubuntu 14.04 LTS

På Ubuntu 14.04 LTS er OpenJDK-pakkerne ikke tilgængelige i "Main" -lageret, så vi installerer dem fra openjdk-r PPA. Som vi har set i afsnit 2.3 ovenfor, er add-apt-repository kommandoen er ikke tilgængelig som standard. Vi har brug for software-egenskaber-fælles pakke til det:

$ sudo apt opdatering $ sudo apt install software-egenskaber-fælles $ sudo add-apt-repository ppa: openjdk-r / ppa $ sudo apt opdatering $ sudo apt install openjdk-8-jdk

3.3. Installation af Oracle JDK 8 fra en PPA

"Hoved" -lageret indeholder ikke nogen proprietær software. Hvis vi vil installere Oracle Java med apt, bliver vi nødt til at bruge en pakke fra en PPA. Vi har allerede set, hvordan du installerer Oracle JDK 11 fra linuxuprising PPA. For Java 8 kan vi finde pakkerne i webupd8team PPA.

Først skal vi tilføje PPA apt lager til vores system:

$ sudo add-apt-repository ppa: webupd8team / java

Derefter kan vi installere pakken på den sædvanlige måde:

$ sudo apt opdatering $ sudo apt installer oracle-java8-installer

Under installationen skal vi acceptere Oracles licensaftale. Lad os kontrollere installationen:

$ java -version

Outputtet viser en Java (TM) JRE og JVM:

Java-version "1.8.0_181" Java (TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot (TM) 64-bit Server VM (build 25.181-b13, blandet tilstand)

Vi kan også kontrollere, at compileren er installeret:

$ javac -version
javac 1.8.0_181

4. Installation af JDK 10

Versionerne Java 10 og Java 9 understøttes ikke længere. Du kan installere dem manuelt ved at følge lignende trin som i afsnit 2. Du kan hente pakkerne fra:

  • //jdk.java.net/archive/
  • //www.oracle.com/technetwork/java/javase/archive-139210.html

Begge sider indeholder den samme advarsel:

Disse ældre versioner af JDK leveres til at hjælpe udviklere med at fejle problemer i ældre systemer. De opdateres ikke med de nyeste sikkerhedsrettelser og anbefales ikke til brug i produktionen.

4.1. Installation af OpenJDK 10 manuelt

Lad os se, hvordan du installerer OpenJDK 10.0.1:

$ wget //download.java.net/java/GA/jdk10/10.0.1/fb4372174a714e6b8c52526dc134031e/10/openjdk-10.0.1_linux-x64_bin.tar.gz $ sha256sum openjdk-10.0.1_linux-x64_bin.tar.gz $ tar xzvf openjdk-10.0.1_linux-x64_bin.tar.gz $ sudo mkdir / usr / lib / jvm $ sudo mv jdk-10.0.1 / usr / lib / jvm / openjdk-10-manuel installation / $ sudo opdateringsalternativer - -install / usr / bin / java java / usr / lib / jvm / openjdk-10-manuel installation / bin / java 1 $ sudo opdateringsalternativer - install / usr / bin / javac javac / usr / lib / jvm / openjdk-10-manuel installation / bin / javac 1 $ java -version $ javac -version

4.2. Installation af Oracle JDK 10 manuelt

Som vi har set i afsnit 2.2. For at downloade en pakke fra Oracle-webstedet, vi skal acceptere en licensaftale først. I modsætning til de understøttede versioner kan vi ikke downloade de ældre Oracle JDK'er via wget og en cookie. Vi er nødt til at gå til //www.oracle.com/technetwork/java/javase/downloads/java-archive-javase10-4425482.html og downloade tar.gz fil. Derefter følger vi de velkendte trin:

$ sha256sum jdk-10.0.2_linux-x64_bin.tar.gz $ tar xzvf jdk-10.0.2_linux-x64_bin.tar.gz $ sudo mkdir / usr / lib / jvm $ sudo mv jdk-10.0.2 / usr / lib / jvm / oracle-jdk-10-manuel installation / $ sudo opdateringsalternativer - installation / usr / bin / java java / usr / lib / jvm / oracle-jdk-10-manuel installation / bin / java 1 $ sudo-opdatering -alternativer --install / usr / bin / javac javac / usr / lib / jvm / oracle-jdk-10-manual-installation / bin / javac 1 $ java -version $ javac -version

5. Installation af JDK 9

5.1. Installation af OpenJDK 9 manuelt

Ligesom vi så ovenfor med OpenJDK 10.0.1, downloader vi OpenJDK 9-pakken via wget og sæt det op i overensstemmelse med konventionerne:

$ wget //download.java.net/java/GA/jdk9/9.0.4/binaries/openjdk-9.0.4_linux-x64_bin.tar.gz $ sha256sum openjdk-9.0.4_linux-x64_bin.tar.gz $ tar xzvf openjdk -9.0.4_linux-x64_bin.tar.gz $ sudo mkdir / usr / lib / jvm $ sudo mv jdk-9.0.4 / usr / lib / jvm / openjdk-9-manuel installation / $ sudo opdateringsalternativer - installation / usr / bin / java java / usr / lib / jvm / openjdk-9-manuel installation / bin / java 1 $ sudo opdateringsalternativer - install / usr / bin / javac javac / usr / lib / jvm / openjdk- 9-manuel installation / bin / javac 1 $ java -version $ javac -version

5.2. Installation af Oracle JDK 9 manuelt

Endnu en gang bruger vi den samme metode som for JDK 10. Vi skal gå til //www.oracle.com/technetwork/java/javase/downloads/java-archive-javase9-3934878.html og downloade tar.gz fil. Derefter følger vi de velkendte trin:

$ sha256sum jdk-9.0.4_linux-x64_bin.tar.gz $ tar xzvf jdk-9.0.4_linux-x64_bin.tar.gz $ sudo mkdir / usr / lib / jvm $ sudo mv jdk-9.0.4 / usr / lib / jvm / oracle-jdk-9-manuel installation / $ sudo opdateringsalternativer - installation / usr / bin / java java / usr / lib / jvm / oracle-jdk-9-manuel installation / bin / java 1 $ sudo-opdatering -alternativer - installation / usr / bin / javac javac / usr / lib / jvm / oracle-jdk-9-manual-installation / bin / javac 1 $ java -version $ javac -version

6. Sammenligning

Vi har set tre forskellige måder at installere en JDK på Ubuntu på. Lad os få et hurtigt overblik over hver af dem og påpege fordele og ulemper.

6.1. "Hoved" lager

Dette er "Ubuntu native" måde at installere på. En stor fordel er, at vi opdaterer pakkerne via det “sædvanlige apt workflow ”med apt opdatering og apt opgradering.

Desuden vedligeholdes "Main" -registret af Canonical, som giver nogenlunde hurtige (hvis ikke øjeblikkelige) opdateringer. For eksempel blev OpenJDK version 10.0.1 og 10.0.2 begge synkroniseret inden for en måned efter udgivelsen.

6.2. PPA

PPA'er er små arkiver vedligeholdes af en individuel udvikler eller en gruppe. Dette betyder også, at opdateringsfrekvensen afhænger af vedligeholderen.

Pakker fra PPA'er overvejes mere risikabelt end pakkerne i "Main" -lageret. Først skal vi tilføje PPA eksplicit til systemets lagerliste, hvilket indikerer, at vi stoler på det. Derefter kan vi administrere pakkerne via det sædvanlige apt værktøj (apt opdatering og apt opgradering).

6.3. Manuel installation

Vi downloader pakken direkte fra OpenJDK eller Oracle-siden. Selvom denne metode giver stor fleksibilitet, er opdateringer vores ansvar. Hvis vi vil have den nyeste og bedste JDK, er dette vejen at gå.

7. Udforskning af andre versioner af JDK'er

Eksemplerne i afsnit 2 og 3 afspejler den aktuelle status på Ubuntu 18.04 LTS. Husk, at JDK'erne og de tilsvarende pakker opdateres regelmæssigt. Således er det nyttigt at vide, hvordan man gør det udforske vores nuværende muligheder.

I dette afsnit vil vi fokusere på kortlægning af OpenJDK-pakkerne i "Main" -lageret. Hvis vi allerede har tilføjet en PPA med add-apt-repository, kan vi udforske det på en lignende måde med apt liste og apt show.

For at finde ud af, hvilke PPA'er der er tilgængelige, kan vi gå til //launchpad.net/. Hvis vi ikke finder det, vi leder efter i "Main" -lagret og i PPA'erne, bliver vi nødt til at falde tilbage til manuel installation.

Hvis vi gerne vil bruge en ikke-understøttet version, kan det også være svært. I skrivende stund fandt vi ingen pakker til Java 9 eller Java 10 på OpenJDK- og Oracle-webstederne.

Lad os se, hvilke andre JDK-pakker der findes i "Main" -lageret:

$ apt liste openjdk * jdk

På Ubuntu 18.04 LTS kan vi vælge mellem de to aktuelle LTS Java-versioner:

Notering ... Udført openjdk-11-jdk / bionic-opdateringer, bionic-sikkerhed, nu 10.0.2 + 13-1ubuntu0.18.04.2 amd64 [installeret, automatisk] openjdk-8-jdk / bionic-opdateringer, bionic-sikkerhed 8u181-b13-0ubuntu0.18.04.1 amd64

Det er også værd at bemærke, at selvom pakken kaldes openjdk-11-jdk, med denne skrivning, installerer den faktisk version 10.0.2. Dette vil sandsynligvis ændre sig snart. Vi kan se, at hvis vi inspicerer pakken:

$ apt viser openjdk-11-jdk

Lad os se på afsnittet "Afhænger" af output. Bemærk, at disse pakker (f.eks. En JRE) også installeres ved siden af openjdk-11-jdk:

Afhænger af: openjdk-11-jre (= 10.0.2 + 13-1ubuntu0.18.04.2), openjdk-11-jdk-headless (= 10.0.2 + 13-1ubuntu0.18.04.2), libc6 (> = 2.2. 5)

Lad os undersøge, hvilke andre pakker vi har til rådighed udover standard jdk-pakken:

$ apt liste openjdk-11 *
Notering ... Udført openjdk-11-dbg / bionic-opdateringer, bionic-sikkerhed 10.0.2 + 13-1ubuntu0.18.04.2 amd64 openjdk-11-demo / bionic-opdateringer, bionic-sikkerhed 10.0.2 + 13-1ubuntu0 .18.04.2 amd64 openjdk-11-doc / bionic-updates, bionic-updates, bionic-security, bionic-security 10.0.2 + 13-1ubuntu0.18.04.2 alle openjdk-11-jdk / bionic-updates, bionic- sikkerhed 10.0.2 + 13-1ubuntu0.18.04.2 amd64 openjdk-11-jdk-headless / bionic-opdateringer, bionic-sikkerhed 10.0.2 + 13-1ubuntu0.18.04.2 amd64 openjdk-11-jre / bionic-opdateringer, bionisk sikkerhed, nu 10.0.2 + 13-1ubuntu0.18.04.2 amd64 [installeret, automatisk] openjdk-11-jre-headless / bionic-opdateringer, bionisk sikkerhed, nu 10.0.2 + 13-1ubuntu0.18.04.2 amd64 [installeret, automatisk] openjdk-11-jre-zero / bionic-opdateringer, bionic-sikkerhed 10.0.2 + 13-1ubuntu0.18.04.2 amd64 openjdk-11-source / bionic-opdateringer, bionic-opdateringer, bionic-sikkerhed , bionisk sikkerhed 10.0.2 + 13-1ubuntu0.18.04.2 alle

Vi kan finde nogle af disse pakker nyttige. For eksempel, openjdk-11-kilde indeholder kildefiler til klasser i Java core API, mens openjdk-11-dbg indeholder fejlretningssymboler.

udover det openjdk- * familie, der er den standard-jdk pakke, der er værd at udforske:

$ apt viser standard-jdk

I slutningen af ​​output siger beskrivelsen:

"Denne afhængighedspakke peger på Java-runtime eller Java-kompatibelt udviklingssæt, der anbefales til denne arkitektur ..."

I tilfælde af Ubuntu 18.04 LTS er det pakken openjdk-11-jdk i øjeblikket.

8. Oversigt: Java-versioner og -pakker

Lad os nu se på, hvordan forskellige versioner af Java kunne installeres på Ubuntu 18.04 LTS i skrivende stund:

VersionOpenJDKOracle Java
11manuel installationmanuel installation

oracle-java11-installationsprogram i linuxuprising PPA

10manuel installation - understøttes ikkemanuel installation - understøttes ikke
9manuel installation - understøttes ikkemanuel installation - understøttes ikke
8openjdk-8-jdk i "Main" -lageretoracle-java8-installationsprogram i webupd8team PPA

9. Flere Java-versioner på et Ubuntu-system

Standardmetoden til styring af flere versioner af den samme software på Ubuntu er via Debian Alternatives System. Det meste af tiden opretter, vedligeholder og viser vi alternativer via opdateringsalternativer program.

Hvornår apt installerer en JDK-pakke, tilføjer den automatisk posterne til alternativerne. I tilfælde af manuel installation har vi set hvordan man tilføjer alternativer til java og javac henholdsvis.

Lad os se på vores alternativer:

$ opdateringsalternativer - vis java

På vores testsystem, hvor vi har installeret to forskellige versioner af OpenJDK, viser output begge alternativer med deres respektive prioriteter:

java - auto mode link bedste version er / usr / lib / jvm / java-11-openjdk-amd64 / bin / java link peger i øjeblikket på / usr / lib / jvm / java-11-openjdk-amd64 / bin / java link java er / usr / bin / java slave java.1.gz er /usr/share/man/man1/java.1.gz / usr / lib / jvm / java-11-openjdk-amd64 / bin / java - prioritet 1101 slave java.1.gz: /usr/lib/jvm/java-11-openjdk-amd64/man/man1/java.1.gz / usr / lib / jvm / java-8-openjdk-amd64 / jre / bin / java - prioritet 1081 slave java.1.gz: /usr/lib/jvm/java-8-openjdk-amd64/jre/man/man1/java.1.gz

Nu hvor vi har set vores alternativer, vi kan også skifte mellem dem:

$ sudo opdateringsalternativer - config java

Derudover får vi et interaktivt output, hvor vi kan skifte mellem alternativerne via tastaturet:

Der er 2 valgmuligheder for den alternative java (leverer / usr / bin / java). Valgsti Prioritetsstatus ---------------------------------------------- -------------- * 0 / usr / lib / jvm / java-11-openjdk-amd64 / bin / java 1101 auto mode 1 / usr / lib / jvm / java-11-openjdk -amd64 / bin / java 1101 manuel tilstand 2 / usr / lib / jvm / java-8-openjdk-amd64 / jre / bin / java 1081 manuel tilstand Tryk for at beholde det aktuelle valg [*] eller skriv valgnummer:

Hvis vi arbejder på flere applikationer skrevet i forskellige versioner af Java, er chancerne for, at vi også har brug for forskellige versioner af anden software (f.eks. Maven, en applikationsserver). I så fald vil vi måske overveje at bruge større abstraktioner som Docker-containere.

10. Konklusion

For at opsummere har vi i denne artikel set eksempler på installation af en JDK fra "Main" -lageret, fra en PPA og manuelt. Vi har kort sammenlignet disse tre installationsmetoder.

Og endelig har vi set, hvordan man styrer flere Java-installationer på Ubuntu-systemet med opdateringsalternativer.

Som et næste trin kan det være nyttigt at indstille JAVA_HOME miljøvariabel.