Java auf Ubuntu installieren

Java unter Ubuntu installieren

1. Überblick

In diesem Tutorial stellen wirdifferent methods for installing a JDK on Ubuntu vor. Dann werden wir die Methoden kurz vergleichen. Abschließend zeigen wir Ihnen, wie Sie mehrere Java-Installationen auf einem Ubuntu-System verwalten.

Als Voraussetzung für jede Methode benötigen wir

  • ein Ubuntu-System

  • als Nicht-Root-Benutzer mitsudo Berechtigungen angemeldet sein

Die unten beschriebenen Anweisungen wurden unter Ubuntu 18.10, 18.04 LTS, 16.04 LTS und 14.04 LTS getestet. Für Ubuntu 14.04 LTS gibt es einige Unterschiede, die im Text erwähnt werden.

Bitte beachten Sie, dass sowohl die Pakete, die Sie von OpenJDK und Oracle herunterladen können, als auch die in Repositorys verfügbaren Pakete regelmäßig aktualisiert werden. Die genauen Paketnamen werden sich wahrscheinlich innerhalb einiger Monate ändern, die grundlegenden Installationsmethoden bleiben jedoch gleich.

2. JDK 11 installieren

Wenn wir die neueste und beste Version von JDK verwenden möchten, ist häufig die manuelle Installation der richtige Weg. Dies bedeutet, dass Sie ein Paket vom OpenJDK oder von der Oracle-Site herunterladen und so einrichten, dass es den Konventionen entspricht, wieapt die JDK-Pakete einrichtet.

2.1. OpenJDK 11 manuell installieren

Laden Sie zunächst dastar-Archiv des kürzlich veröffentlichten OpenJDK 11 herunter:

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

Und wir vergleichen diesha256 Summe des heruntergeladenen Pakets mitthe one provided on the OpenJDK site:

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

Extrahieren wir das Archiv (tar):

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

Als nächstes verschieben wir das gerade extrahierte Verzeichnisjdk-11in ein Unterverzeichnis von/usr/lib/jvm. Die im nächsten Abschnitt beschriebenenapt-Pakete legen ihre JDKs ebenfalls in diesem Verzeichnis ab:

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

Jetzt wollen wirmake the java and javac commands available. Eine Möglichkeit wäre, symbolische Links für sie zu erstellen, beispielsweise im Verzeichnis/usr/bin. Stattdessen installieren wir für beide eine Alternative. Wenn wir jemals zusätzliche Versionen von JDK installieren möchten, spielen diese auf diese Weise gut zusammen:

$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/openjdk-11-manual-installation/bin/java 1
$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/openjdk-11-manual-installation/bin/javac 1

Überprüfen wir die Installation:

$ java -version

Wie wir der Ausgabe entnehmen können, haben wir tatsächlich die neueste Version von OpenJDK JRE und JVM installiert:

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)

Schauen wir uns auch die Compiler-Version an:

$ javac -version
javac 11

2.2. Manuelles Installieren von Oracle JDK 11

Wenn Sie sicherstellen möchten, dass Sie die neueste Version von Oracle JDK verwenden, können Sie einen ähnlichen manuellen Installationsablauf wie bei OpenJDK verwenden. Um dastar-Archiv für JDK 11 vonOracle website,we must accept a license agreement first herunterzuladen. Aus diesem Grund ist das Herunterladen überwget etwas komplizierter als für OpenJDK:

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

Im obigen Beispiel wird das Paket für 11.0.1 heruntergeladen. Der genaue Download-Link ändert sich für jede Nebenversion.

Die folgenden Schritte sind die gleichen wie für 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-manual-installation/
$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/oracle-jdk-11-manual-installation/bin/java 1
$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/oracle-jdk-11-manual-installation/bin/javac 1

Die Überprüfung ist auch gleich. Die Ausgabe zeigt jedoch, dass wir dieses Mal nicht OpenJDK, sondern Java ™ installiert haben:

$ 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, mixed mode)

Und für den Compiler:

$ javac -version
javac 11.0.1

2.3. Installieren von Oracle JDK 11 von einem PPA

Derzeit ist Oracle JDK 11 auch in einem PPA (Personal Package Archive) verfügbar. Diese Installation umfasst zwei Schritte: Hinzufügen des Repositorys zu unserem System und Installieren des Pakets aus dem Repository überapt:

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

Die Überprüfungsschritte sollten dasselbe Ergebnis wie nach der manuellen Installation in Abschnitt 2.2.1 zeigen:

$ 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, mixed mode)

Und für den Compiler:

$ javac -version
javac 11.0.1

Unter Ubuntu 14.04 LTS ist der Befehladd-apt-repositorytandardmäßig nicht verfügbar. Um ein Repository hinzuzufügen, müssen wir zuerst das Paketsoftware-properties-commoninstallieren.

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

Danach können wir mitadd-apt-repository, apt update andapt install fortfahren, wie oben gezeigt.

3. JDK 8 installieren

3.1. Installieren von OpenJDK 8 unter Ubuntu 16.04 LTS und neuer

JDK 8 ist eine LTS-Version, die es schon eine Weile gibt. Aus diesem Grund finden wir auf den meisten unterstützten Ubuntu-Versionen eine aktuelle Version von OpenJDK 8 im Haupt-Repository. Natürlich können wir auch die OpenJDK-Website besuchen, dort ein Paket abrufen und es auf die gleiche Weise installieren, wie wir es im vorherigen Abschnitt gesehen haben.

Die Verwendung des Toolsapt und des Repositorys „Main“ bietet jedoch einige Vorteile. Das Haupt-Repository ist standardmäßig auf allen Ubuntu-Systemen verfügbar. Es wird von Canonical unterstützt - dem gleichen Unternehmen, das Ubuntu selbst unterhält.

Installieren wir OpenJDK 8 aus dem Haupt-Repository mitapt:

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

Lassen Sie uns nun die Installation überprüfen:

$ java -version

Das Ergebnis sollte eine Laufzeitumgebung und eine JVM enthalten:

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, mixed mode)

Überprüfen wir, ob die ausführbare Datei vonjavacebenfalls verfügbar ist:

$ javac -version

Jetzt sollten wir die gleiche Versionsnummer wie oben sehen:

javac 1.8.0_181

3.2. Installieren von OpenJDK 8 unter Ubuntu 14.04 LTS

Unter Ubuntu 14.04 LTS sind die OpenJDK-Pakete nicht im "Main" -Repository verfügbar, daher installieren wir sie über die PPA vonopenjdk-r. Wie wir in Abschnitt 2.3 oben gesehen haben, ist der Befehladd-apt-repositorytandardmäßig nicht verfügbar. Wir brauchen dassoftware-properties-common Paket dafür:

$ 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. Installieren von Oracle JDK 8 von einem PPA

Das Haupt-Repository enthält keine proprietäre Software. If we want to install Oracle Java with apt, we’ll have to use a package from a PPA. Wir haben bereits gesehen, wie Oracle JDK 11 über die PPA vonlinuxuprisinginstalliert wird. Für Java 8 finden wir die Pakete in der PPA vonwebupd8team.

Zuerst müssen wir das Repository von PPAaptzu unserem System hinzufügen:

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

Dann können wir das Paket wie gewohnt installieren:

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

Während der Installation müssen wir die Lizenzvereinbarung von Oracle akzeptieren. Überprüfen wir die Installation:

$ java -version

Die Ausgabe zeigt eine Java ™ JRE und 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, mixed mode)

Wir können auch überprüfen, ob der Compiler installiert wurde:

$ javac -version
javac 1.8.0_181

4. JDK installieren 10

Die Versionen Java 10 und Java 9 werden nicht mehr unterstützt. Sie können sie manuell installieren, indem Sie die gleichen Schritte wie in Abschnitt 2 ausführen. Sie können die Pakete abrufen von:

Beide Sites enthalten dieselbe Warnung:

Diese älteren Versionen des JDK werden bereitgestellt, um Entwicklern beim Debuggen von Problemen in älteren Systemen zu helfen. They are not updated with the latest security patches and are not recommended for use in production.

4.1.  OpenJDK 10 manuell installieren

Mal sehen, wie OpenJDK 10.0.1 installiert wird:

$ wget https://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-manual-installation/
$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/openjdk-10-manual-installation/bin/java 1
$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/openjdk-10-manual-installation/bin/javac 1
$ java -version
$ javac -version

4.2. Manuelles Installieren von Oracle JDK 10

Wie wir in Abschnitt 2.2 gesehen haben, müssenwe must accept a license agreement first, um ein Paket von der Oracle-Website herunterzuladen. Im Gegensatz zu den unterstützten Versionen können wir die älteren Oracle-JDKs nicht überwget und ein Cookie herunterladen. Wir müssen zuhttps://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase10-4425482.html gehen und dietar.gz-Datei herunterladen. Danach folgen wir den bekannten Schritten:

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

5. JDK installieren 9

5.1. OpenJDK 9 manuell installieren

Wie wir oben mit OpenJDK 10.0.1 gesehen haben, laden wir das OpenJDK 9-Paket überwget herunter und richten es gemäß den Konventionen ein:

$ wget https://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-installation/
$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/openjdk-9-manual-installation/bin/java 1
$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/openjdk-9-manual-installation/bin/javac 1
$ java -version
$ javac -version

5.2. Manuelles Installieren von Oracle JDK 9

Wir verwenden wieder die gleiche Methode wie für JDK 10. Wir müssen zuhttps://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase9-3934878.html gehen und dietar.gz-Datei herunterladen. Danach folgen wir den bekannten Schritten:

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

6. Vergleich

Wir haben drei verschiedene Möglichkeiten gesehen, ein JDK unter Ubuntu zu installieren. Lassen Sie uns einen kurzen Überblick über jeden einzelnen von ihnen geben und die Vor- und Nachteile aufzeigen.

6.1. „Haupt“ -Repository

Dies ist“Ubuntu native” way of installation. Ein großer Vorteil ist, dass wir die Pakete über den „üblichenapt Workflow“ mitapt update undapt upgrade aktualisieren.

Darüber hinaus wird das "Main" -Repository von Canonical verwaltet, dasprovides reasonably fast (if not immediate) updates. Beispielsweise wurden die OpenJDK-Versionen 10.0.1 und 10.0.2 innerhalb eines Monats nach Veröffentlichung synchronisiert.

6.2. PPA

PPAs sind kleine Repositorysmaintained by an individual developer or a group. Dies bedeutet auch, dass die Aktualisierungshäufigkeit vom Betreuer abhängt.

Pakete von PPAs werden alsriskier than the packages in the “Main” repository betrachtet. Zuerst müssen wir die PPA explizit zur Repository-Liste des Systems hinzufügen, um anzuzeigen, dass wir ihr vertrauen. Anschließend können wir die Pakete mit den üblichen Werkzeugenapt (apt update undapt upgrade) verwalten.

6.3. Manuelle Installation

Wir laden das Paket direkt von der OpenJDK- oder Oracle-Site herunter. Although this method offers a great deal of flexibility, updates are our responsibility. Wenn wir das neueste und beste JDK haben möchten, ist dies der richtige Weg.

7. Erkundung anderer Versionen von JDKs

Die Beispiele in den Abschnitten 2 und 3 geben den aktuellen Status von Ubuntu 18.04 LTS wieder. Beachten Sie, dass die JDKs und die entsprechenden Pakete regelmäßig aktualisiert werden. Daher ist es nützlich zu wissen, wie manexplore our current possibilities macht.

In diesem Abschnitt konzentrieren wir uns auf die Untersuchung der OpenJDK-Pakete im Haupt-Repository. Wenn wir bereits eine PPA mitadd-apt-repository hinzugefügt haben, können wir sie auf ähnliche Weise mitapt list undapt show untersuchen.

Um herauszufinden, welche PPAs verfügbar sind, gehen Sie zuhttps://launchpad.net/. Wenn wir im "Haupt" -Repository und in den PPAs nicht finden, wonach wir suchen, müssen wir auf die manuelle Installation zurückgreifen.

Wenn wir eine nicht unterstützte Version verwenden möchten, kann dies schwierig sein. Zum jetzigen Zeitpunkt haben wir auf den OpenJDK- und Oracle-Websites keine Pakete für Java 9 oder Java 10 gefunden.

Mal sehen, welche anderen JDK-Pakete im Haupt-Repository vorhanden sind:

$ apt list openjdk*jdk

Auf Ubuntu 18.04 LTS können wir zwischen den beiden aktuellen LTS Java-Versionen wählen:

Listing... Done
openjdk-11-jdk/bionic-updates,bionic-security,now 10.0.2+13-1ubuntu0.18.04.2 amd64 [installed,automatic]
openjdk-8-jdk/bionic-updates,bionic-security 8u181-b13-0ubuntu0.18.04.1 amd64

Es ist auch erwähnenswert, dass das Paket, obwohl es zum jetzigen Zeitpunktopenjdk-11-jdk heißt, tatsächlich Version 10.0.2 installiert. Dies wird sich wahrscheinlich bald ändern. Das können wir sehen, wenn wir das Paket inspizieren:

$ apt show openjdk-11-jdk

Werfen wir einen Blick auf den Abschnitt "Abhängig" der Ausgabe. Beachten Sie, dass diese Pakete (z. Nebenopenjdk-11-jdk wird auch eine JRE installiert:

Depends: 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)

Lassen Sie uns erforschen, welche anderen Pakete wir neben dem Standard-jkk-Paket zur Verfügung haben:

$ apt list openjdk-11*
Listing... Done
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 all
openjdk-11-jdk/bionic-updates,bionic-security 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,now 10.0.2+13-1ubuntu0.18.04.2 amd64 [installed,automatic]
openjdk-11-jre-headless/bionic-updates,bionic-security,now 10.0.2+13-1ubuntu0.18.04.2 amd64 [installed,automatic]
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,bionic-security 10.0.2+13-1ubuntu0.18.04.2 all

Wir können einige dieser Pakete nützlich finden. Beispielsweise enthältopenjdk-11-source Quelldateien für die Klassen der Java-Kern-API, währendopenjdk-11-dbg die Debugging-Symbole enthält.

Neben der Familieopenjdk-*gibt es das Paketdefault-jdk, das es wert ist, erkundet zu werden:

$ apt show default-jdk

Am Ende der Ausgabe steht in der Beschreibung:

"Dieses Abhängigkeitspaket verweist auf die Java-Laufzeit oder ein Java-kompatibles Entwicklungskit, das für diese Architektur empfohlen wird ..."

Im Fall von Ubuntu 18.04 LTS ist es derzeit das Paketopenjdk-11-jdk.

8. Übersicht: Java-Versionen und -Pakete

Schauen wir uns nun an, wie verschiedene Versionen von Java unter Ubuntu 18.04 LTS installiert werden können:

Ausführung OpenJDK Oracle Java

11

manuelle Installation

manuelle Installationoracle-java11-installer in der PPAlinuxuprising

10

manuelle Installation - nicht unterstützt

manuelle Installation - nicht unterstützt

9

manuelle Installation - nicht unterstützt

manuelle Installation - nicht unterstützt

8

openjdk-8-jdk im Haupt-Repository

oracle-java8-installer in derwebupd8team PPA

9. Mehrere Java-Versionen auf einem Ubuntu-System

Die Standardmethode zum Verwalten mehrerer Versionen derselben Software unter Ubuntu ist das Debian Alternatives System. Meistens erstellen, pflegen und zeigen wir Alternativen über das Programmupdate-alternatives an.

When apt installs a JDK package, it automatically adds the entries for the alternatives. Bei der manuellen Installation haben wir gesehen, wie die Alternativen fürjava bzw.javac hinzugefügt werden.

Schauen wir uns unsere Alternativen an:

$ update-alternatives --display java

Auf unserem Testsystem, auf dem wir zwei verschiedene Versionen von OpenJDK installiert haben, werden in der Ausgabe beide Alternativen mit ihren jeweiligen Prioritäten aufgelistet:

java - auto mode
link best version is /usr/lib/jvm/java-11-openjdk-amd64/bin/java
link currently points to /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 - priority 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 - priority 1081
slave java.1.gz: /usr/lib/jvm/java-8-openjdk-amd64/jre/man/man1/java.1.gz

Nachdem wir unsere Alternativen gesehen haben,we can also switch between them:

$ sudo update-alternatives --config java

Zusätzlich erhalten wir eine interaktive Ausgabe, in der wir über die Tastatur zwischen den Alternativen wechseln können:

There are 2 choices for the alternative java (providing /usr/bin/java).

Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 auto mode
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 manual mode
2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode

Press  to keep the current choice[*], or type selection number:

Wenn wir an mehreren Anwendungen arbeiten, die in verschiedenen Java-Versionen geschrieben wurden, benötigen wir wahrscheinlich auch andere Versionen anderer Software (z. Maven, ein Anwendungsserver). In diesem Fall möchten wir möglicherweise die Verwendung größerer Abstraktionen in Betracht ziehen, z. B. Docker-Container.

10. Fazit

Zusammenfassend haben wir in diesem Artikel Beispiele für die Installation eines JDK aus dem Hauptrepository, aus einem PPA und manuell gesehen. Wir haben diese drei Installationsmethoden kurz verglichen.

Und schließlich haben wir gesehen, wie mehrere Java-Installationen auf einem Ubuntu-System mitupdate-alternatives verwaltet werden.

Als nächster Schritt kann es nützlich sein,set the JAVA_HOME environment variable.