Java installeren op Ubuntu

1. Overzicht

In deze tutorial introduceren we verschillende methoden voor het installeren van een JDK op Ubuntu. Vervolgens zullen we de methoden kort vergelijken. Ten slotte laten we zien hoe u meerdere Java-installaties op een Ubuntu-systeem kunt beheren.

Als voorwaarde voor elke methode hebben we nodig

  • een Ubuntu-systeem
  • om ingelogd te zijn als een niet-rootgebruiker met sudo privileges

De onderstaande instructies zijn getest op Ubuntu 18.10, 18.04 LTS, 16.04 LTS en 14.04 LTS. Voor Ubuntu 14.04 LTS zijn er enkele verschillen, die in de tekst worden vermeld.

Houd er rekening mee dat zowel de pakketten die u kunt downloaden van OpenJDK en Oracle als de pakketten die beschikbaar zijn in repositories regelmatig worden bijgewerkt. De exacte pakketnamen zullen waarschijnlijk binnen enkele maanden veranderen, maar de basismethoden van installatie blijven hetzelfde.

2. JDK 11 installeren

Als we de nieuwste en beste versie van JDK willen gebruiken, is handmatige installatie vaak de juiste keuze. Dit betekent het downloaden van een pakket van de OpenJDK of de Oracle-site en het zo instellen dat het voldoet aan de conventies van hoe apt stelt de JDK-pakketten op.

2.1. OpenJDK 11 handmatig installeren

Laten we eerst het teer archief van de onlangs uitgebrachte OpenJDK 11:

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

En we vergelijken de sha256 som van het gedownloade pakket met het pakket op de OpenJDK-site:

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

Laten we het teer archief:

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

Laten we vervolgens het jdk-11 map die we zojuist hebben uitgepakt in een submap van / usr / lib / jvm. De apt pakketten die in de volgende sectie worden beschreven, plaatsen ook hun JDK's in deze map:

$ sudo mkdir / usr / lib / jvm $ sudo mv jdk-11 / usr / lib / jvm / openjdk-11-manual-installatie / 

Nu willen we Maak de Java en Javac commando's beschikbaar. Een mogelijkheid zou zijn om symbolische koppelingen voor hen te maken, bijvoorbeeld in de / usr / bin directory. Maar in plaats daarvan zullen we voor beide een alternatief installeren. Op deze manier, als we ooit extra versies van JDK willen installeren, zullen ze goed samen spelen:

$ sudo update-alternatieven --install / usr / bin / java java / usr / lib / jvm / openjdk-11-manual-installatie / bin / java 1 $ sudo update-alternatieven --install / usr / bin / javac javac / usr / lib / jvm / openjdk-11-handmatige-installatie / bin / javac 1

Laten we de installatie verifiëren:

$ java -versie

Zoals we aan de output kunnen zien, hebben we inderdaad de nieuwste versie van de OpenJDK JRE en JVM geïnstalleerd:

openjdk versie "11" 2018-09-25 OpenJDK Runtime Environment 18.9 (build 11 + 28) OpenJDK 64-bits server VM 18.9 (build 11 + 28, gemengde modus) 

Laten we ook eens kijken naar de compilerversie:

$ javac -versie
javac 11

2.2. Oracle JDK 11 handmatig installeren

Als we zeker willen zijn dat we de nieuwste versie van Oracle JDK gebruiken, kunnen we een vergelijkbare handmatige installatieworkflow volgen als voor OpenJDK. Om het teer archief voor JDK 11 van de Oracle-website, we moeten eerst een licentieovereenkomst accepteren. Om deze reden downloaden via wget is een beetje ingewikkelder dan voor 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

In het bovenstaande voorbeeld wordt het pakket voor 11.0.1 gedownload. De exacte downloadlink verandert voor elke kleinere versie.

De volgende stappen zijn hetzelfde als voor 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-handmatige-installatie / $ sudo update-alternatieven --install / usr / bin / java java / usr / lib / jvm / oracle-jdk-11-manual-installatie / bin / java 1 $ sudo update -alternatieven --install / usr / bin / javac javac / usr / lib / jvm / oracle-jdk-11-manual-installatie / bin / javac 1

De verificatie is ook hetzelfde. Maar de output laat zien dat we deze keer niet OpenJDK maar Java (TM) hebben geïnstalleerd:

$ java -versie
java-versie "11.0.1" 2018-10-16 LTS Java (TM) SE Runtime Environment 18.9 (build 11.0.1 + 13-LTS) Java HotSpot (TM) 64-bits server VM 18.9 (build 11.0.1 + 13- LTS, gemengde modus)

En voor de samensteller:

$ javac -versie
javac 11.0.1

2.3. Oracle JDK 11 installeren vanaf een PPA

Momenteel is Oracle JDK 11 ook beschikbaar in een PPA (persoonlijk pakketarchief). Deze installatie omvat 2 stappen: de repository aan ons systeem toevoegen en het pakket vanuit de repository installeren via geschikt:

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

De controlestappen moeten hetzelfde resultaat opleveren als na de handmatige installatie in paragraaf 2.2.1 .:

$ java -versie
java-versie "11.0.1" 2018-10-16 LTS Java (TM) SE Runtime Environment 18.9 (build 11.0.1 + 13-LTS) Java HotSpot (TM) 64-bits server VM 18.9 (build 11.0.1 + 13- LTS, gemengde modus)

En voor de samensteller:

$ javac -versie
javac 11.0.1

Op Ubuntu 14.04 LTS is het add-apt-repository commando is niet standaard beschikbaar. Om een ​​repository toe te voegen, moeten we eerst het software-eigenschappen-algemeen pakket.

$ sudo apt update $ sudo apt install software-properties-common

Daarna kunnen we doorgaan met add-apt-repository, apt update en apt installeren zoals hierboven getoond.

3. JDK 8 installeren

3.1. OpenJDK 8 installeren op Ubuntu 16.04 LTS en nieuwer

JDK 8 is een LTS-versie die al een tijdje bestaat. Om deze reden kunnen we een up-to-date versie van OpenJDK 8 vinden in de "Hoofd" -repository op de meeste ondersteunde Ubuntu-versies. Natuurlijk kunnen we ook naar de OpenJDK-website gaan, daar een pakket pakken en het op dezelfde manier installeren als in de vorige sectie.

Maar met behulp van de apt tooling en de "Main" -repository bieden enkele voordelen. De "Hoofd" -repository is standaard beschikbaar op alle Ubuntu-systemen. Het wordt ondersteund door Canonical - hetzelfde bedrijf dat Ubuntu zelf onderhoudt.

Laten we OpenJDK 8 installeren vanuit de "Hoofd" -repository met apt:

$ sudo apt update $ sudo apt install openjdk-8-jdk

Laten we nu de installatie verifiëren:

$ java -versie

Het resultaat moet een Runtime-omgeving en een JVM bevatten:

openjdk versie "1.8.0_181" OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-0ubuntu0.18.04.1-b13) OpenJDK 64-bits server VM (build 25.181-b13, gemengde modus)

Laten we eens kijken of het Javac uitvoerbaar is ook beschikbaar:

$ javac -versie

Nu zouden we hetzelfde versienummer moeten zien als hierboven weergegeven:

javac 1.8.0_181

3.2. OpenJDK 8 installeren op Ubuntu 14.04 LTS

Op Ubuntu 14.04 LTS zijn de OpenJDK-pakketten niet beschikbaar in de "Hoofd" -repository, dus we zullen ze installeren vanaf de openjdk-r PPA. Zoals we hebben gezien in sectie 2.3 hierboven, is de add-apt-repository commando is niet standaard beschikbaar. We hebben de software-eigenschappen-algemeen pakket ervoor:

$ sudo apt update $ sudo apt install software-properties-common $ sudo add-apt-repository ppa: openjdk-r / ppa $ sudo apt update $ sudo apt install openjdk-8-jdk

3.3. Oracle JDK 8 installeren vanaf een PPA

De "Hoofd" repository bevat geen propriëtaire software. Als we Oracle Java willen installeren met apt, we zullen een pakket van een PPA moeten gebruiken. We hebben al gezien hoe u Oracle JDK 11 installeert vanaf het linuxuprising PPA. Voor Java 8 kunnen we de pakketten vinden in het webupd8team PPA.

Eerst moeten we de PPA toevoegen apt repository naar ons systeem:

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

Vervolgens kunnen we het pakket op de gebruikelijke manier installeren:

$ sudo apt update $ sudo apt install oracle-java8-installer

Tijdens de installatie moeten we de licentieovereenkomst van Oracle accepteren. Laten we de installatie verifiëren:

$ java -versie

De uitvoer toont een Java (TM) JRE en JVM:

java-versie "1.8.0_181" Java (TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot (TM) 64-bits server VM (build 25.181-b13, gemengde modus)

We kunnen ook controleren of de compiler is geïnstalleerd:

$ javac -versie
javac 1.8.0_181

4. JDK 10 installeren

De versies Java 10 en Java 9 worden niet meer ondersteund. U kunt ze handmatig installeren door dezelfde stappen te volgen als in sectie 2. U kunt de pakketten downloaden van:

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

Beide sites bevatten dezelfde waarschuwing:

Deze oudere versies van de JDK zijn bedoeld om ontwikkelaars te helpen bij het oplossen van problemen in oudere systemen. Ze zijn niet bijgewerkt met de nieuwste beveiligingspatches en worden niet aanbevolen voor gebruik in productie.

4.1. OpenJDK 10 handmatig installeren

Laten we eens kijken hoe OpenJDK 10.0.1 te installeren:

$ 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 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-manual-installatie / $ sudo update-alternatieven - -install / usr / bin / java java / usr / lib / jvm / openjdk-10-handmatige-installatie / bin / java 1 $ sudo update-alternatieven --install / usr / bin / javac javac / usr / lib / jvm / openjdk-10-handmatige-installatie / bin / javac 1 $ java -versie $ javac -versie

4.2. Oracle JDK 10 handmatig installeren

Zoals we hebben gezien in sectie 2.2., Om een ​​pakket van de Oracle-website te downloaden, we moeten eerst een licentieovereenkomst accepteren. In tegenstelling tot de ondersteunde versies kunnen we de oudere Oracle JDK's niet downloaden via wget en een koekje. We moeten naar //www.oracle.com/technetwork/java/javase/downloads/java-archive-javase10-4425482.html gaan en de tar.gz het dossier. Daarna volgen we de bekende stappen:

$ 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-handmatige-installatie / $ sudo update-alternatieven --install / usr / bin / java java / usr / lib / jvm / oracle-jdk-10-manual-installatie / bin / java 1 $ sudo update -alternatieven --install / usr / bin / javac javac / usr / lib / jvm / oracle-jdk-10-manual-installatie / bin / javac 1 $ java -version $ javac -version

5. JDK 9 installeren

5.1. OpenJDK 9 handmatig installeren

Net zoals we hierboven zagen met OpenJDK 10.0.1, downloaden we het OpenJDK 9-pakket via wget en stel het in volgens de conventies:

$ 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-manual-installatie / $ sudo update-alternatieven --install / usr / bin / java java / usr / lib / jvm / openjdk-9-handmatige-installatie / bin / java 1 $ sudo update-alternatieven --install / usr / bin / javac javac / usr / lib / jvm / openjdk- 9-handmatige-installatie / bin / javac 1 $ java -version $ javac -version

5.2. Oracle JDK 9 handmatig installeren

We gebruiken opnieuw dezelfde methode als voor JDK 10. We moeten naar //www.oracle.com/technetwork/java/javase/downloads/java-archive-javase9-3934878.html gaan en de tar.gz het dossier. Daarna volgen we de bekende stappen:

$ 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-handmatige-installatie / $ sudo update-alternatieven --install / usr / bin / java java / usr / lib / jvm / oracle-jdk-9-manual-installatie / bin / java 1 $ sudo update -alternatieven --install / usr / bin / javac javac / usr / lib / jvm / oracle-jdk-9-manual-installatie / bin / javac 1 $ java -version $ javac -version

6. Vergelijking

We hebben drie verschillende manieren gezien om een ​​JDK op Ubuntu te installeren. Laten we een kort overzicht hebben van elk van hen, met de voor- en nadelen.

6.1. "Hoofd" -opslagplaats

Dit is de "Ubuntu native" manier van installeren. Een groot voordeel is dat we de pakketten updaten via het “gewone apt workflow ”met apt-update en apt upgrade.

Bovendien wordt de "Main" -repository onderhouden door Canonical, die biedt redelijk snelle (zo niet onmiddellijke) updates. OpenJDK-versies 10.0.1 en 10.0.2 werden bijvoorbeeld beide binnen een maand na uitgave gesynchroniseerd.

6.2. PPA

PPA's zijn kleine opslagplaatsen onderhouden door een individuele ontwikkelaar of een groep. Dit betekent ook dat de updatefrequentie afhankelijk is van de onderhouder.

Pakketten van PPA's worden overwogen riskanter dan de pakketten in de "Hoofd" -repository. Ten eerste moeten we de PPA expliciet toevoegen aan de repositorylijst van het systeem, wat aangeeft dat we het vertrouwen. Daarna kunnen we de pakketten beheren via het gebruikelijke apt gereedschap (apt update en apt upgrade).

6.3. Handmatige installatie

We downloaden het pakket rechtstreeks van de OpenJDK- of Oracle-site. Hoewel deze methode veel flexibiliteit biedt, zijn updates onze verantwoordelijkheid. Als we de nieuwste en beste JDK willen hebben, is dit de juiste keuze.

7. Andere versies van JDK's verkennen

De voorbeelden in secties 2 en 3 weerspiegelen de huidige status op Ubuntu 18.04 LTS. Houd er rekening mee dat de JDK's en de bijbehorende pakketten regelmatig worden bijgewerkt. Het is dus handig om te weten hoe verken onze huidige mogelijkheden.

In deze sectie zullen we ons concentreren op het onderzoeken van de OpenJDK-pakketten in de "Hoofd" -repository. Als we al een PPA hebben toegevoegd met add-apt-repository, kunnen we het op een vergelijkbare manier verkennen met apt lijst en geschikte show.

Om te ontdekken welke PPA's beschikbaar zijn, kunnen we naar //launchpad.net/ gaan. Als we niet vinden wat we zoeken in de "Main" -repository en in de PPA's, moeten we terugvallen op handmatige installatie.

Als we een niet-ondersteunde versie willen gebruiken, kan zelfs dat moeilijk zijn. Op het moment van schrijven hebben we geen pakketten voor Java 9 of Java 10 gevonden op de OpenJDK- en Oracle-websites.

Laten we eens kijken welke andere JDK-pakketten er bestaan ​​in de "Hoofd" -repository:

$ apt lijst openjdk * jdk

Op Ubuntu 18.04 LTS kunnen we kiezen tussen de twee huidige LTS Java-versies:

Listing ... Klaar openjdk-11-jdk / bionic-updates, bionic-security, nu 10.0.2 + 13-1ubuntu0.18.04.2 amd64 [geïnstalleerd, automatisch] openjdk-8-jdk / bionic-updates, bionic-security 8u181-b13-0ubuntu0.18.04.1 amd64

Het is ook vermeldenswaard dat hoewel het pakket wordt genoemd openjdk-11-jdk, op het moment van schrijven, installeert het feitelijk versie 10.0.2. Dit zal waarschijnlijk binnenkort veranderen. We kunnen dat zien als we het pakket inspecteren:

$ apt toon openjdk-11-jdk

Laten we eens kijken naar het gedeelte "Afhankelijk" van de uitvoer. Merk op dat deze pakketten (bijv. Een JRE) ook naast geïnstalleerd worden openjdk-11-jdk:

Afhankelijk van: 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)

Laten we eens kijken welke andere pakketten we tot onze beschikking hebben naast het standaard jdk-pakket:

$ apt lijst openjdk-11 *
Lijst ... Klaar openjdk-11-dbg / bionic-updates, bionic-security 10.0.2 + 13-1ubuntu0.18.04.2 amd64 openjdk-11-demo / bionic-updates, bionic-security 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- beveiliging 10.0.2 + 13-1ubuntu0.18.04.2 amd64 openjdk-11-jdk-headless / bionic-updates, bionic-security 10.0.2 + 13-1ubuntu0.18.04.2 amd64 openjdk-11-jre / bionic-updates, bionic-security, nu 10.0.2 + 13-1ubuntu0.18.04.2 amd64 [geïnstalleerd, automatisch] openjdk-11-jre-headless / bionic-updates, bionic-security, nu 10.0.2 + 13-1ubuntu0.18.04.2 amd64 [geïnstalleerd, automatisch] openjdk-11-jre-zero / bionic-updates, bionic-security 10.0.2 + 13-1ubuntu0.18.04.2 amd64 openjdk-11-source / bionic-updates, bionic-updates, bionic-security , bionische beveiliging 10.0.2 + 13-1ubuntu0.18.04.2 alle

We kunnen sommige van deze pakketten nuttig vinden. Bijvoorbeeld, openjdk-11-source bevat bronbestanden voor de klassen van de Java-kern-API, terwijl openjdk-11-dbg bevat de foutopsporingssymbolen.

naast de openjdk- * familie, daar is de default-jdk pakket, dat het ontdekken waard is:

$ apt show default-jdk

Aan het einde van de uitvoer zegt de beschrijving:

"Dit afhankelijkheidspakket verwijst naar de Java-runtime of Java-compatibele ontwikkelingskit die wordt aanbevolen voor deze architectuur ..."

In het geval van Ubuntu 18.04 LTS is dit het pakket openjdk-11-jdk momenteel.

8. Overzicht: Java-versies en pakketten

Laten we nu eens kijken hoe verschillende versies van Java op Ubuntu 18.04 LTS kunnen worden geïnstalleerd vanaf dit moment:

VersieOpenJDKOracle Java
11handmatige installatiehandmatige installatie

oracle-java11-installer in de linuxuprising PPA

10handmatige installatie - niet ondersteundhandmatige installatie - niet ondersteund
9handmatige installatie - niet ondersteundhandmatige installatie - niet ondersteund
8openjdk-8-jdk in de "Hoofd" -repositoryoracle-java8-installer in de webupd8team PPA

9. Meerdere Java-versies op een Ubuntu-systeem

De standaardmanier om meerdere versies van dezelfde software op Ubuntu te beheren, is via het Debian Alternatives System. Meestal creëren, onderhouden en tonen we alternatieven via de update-alternatieven programma.

Wanneer apt installeert een JDK-pakket, het voegt automatisch de vermeldingen voor de alternatieven toe. In het geval van handmatige installatie hebben we gezien hoe we de alternatieven voor kunnen toevoegen Java en Javac respectievelijk.

Laten we eens kijken naar onze alternatieven:

$ update-alternatieven - java weergeven

Op ons testsysteem, waar we twee verschillende versies van OpenJDK hebben geïnstalleerd, toont de uitvoer beide alternatieven met hun respectievelijke prioriteiten:

java - auto modus link beste versie is / usr / lib / jvm / java-11-openjdk-amd64 / bin / java link verwijst momenteel naar / usr / lib / jvm / java-11-openjdk-amd64 / bin / java link java is / usr / bin / java slave java.1.gz is /usr/share/man/man1/java.1.gz / usr / lib / jvm / java-11-openjdk-amd64 / bin / java - prioriteit 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 - prioriteit 1081 slaaf java.1.gz: /usr/lib/jvm/java-8-openjdk-amd64/jre/man/man1/java.1.gz

Nu we onze alternatieven hebben gezien, we kunnen er ook tussen schakelen:

$ sudo update-alternatieven --config java

Daarnaast krijgen we een interactieve output, waar we via het toetsenbord tussen de alternatieven kunnen schakelen:

Er zijn 2 keuzes voor de alternatieve java (met / usr / bin / java). Selectie pad prioriteit status ---------------------------------------------- -------------- * 0 / usr / lib / jvm / java-11-openjdk-amd64 / bin / java 1101 automatische modus 1 / usr / lib / jvm / java-11-openjdk -amd64 / bin / java 1101 handmatige modus 2 / usr / lib / jvm / java-8-openjdk-amd64 / jre / bin / java 1081 handmatige modus Druk op om de huidige keuze te behouden [*], of typ het selectienummer:

Als we aan meerdere applicaties werken die in verschillende versies van Java zijn geschreven, is de kans groot dat we ook verschillende versies van andere software nodig hebben (bijvoorbeeld Maven, een applicatieserver). In dat geval kunnen we overwegen om meer abstracties te gebruiken, zoals Docker-containers.

10. Conclusie

Samenvattend: in dit artikel hebben we voorbeelden gezien van het installeren van een JDK vanuit de "Hoofd" -repository, vanaf een PPA en handmatig. We hebben deze drie installatiemethoden kort vergeleken.

En tot slot hebben we gezien hoe u meerdere Java-installaties op het Ubuntu-systeem kunt beheren met update-alternatieven.

Als volgende stap kan het handig zijn om de JAVA_HOME omgevingsvariabele.