Comment installer Java sur Ubuntu 22.04 ?
Installer Java sur Ubuntu 22.04
Objectif
Java est l'un des langages les plus utilisés dans le monde. Sa large adoption au cours des dernières années en fait un langage incontournable dans l'univers du développement web. Pour en savoir plus sur les capacités du langage Java, consultez la documentation officielle.
Dans ce tutoriel, nous allons apprendre à installer Java Development Kit (JDK) sur le système de distribution Linux Ubuntu 22.04.
Exigences
Pour suivre ce tutoriel, vous devez disposer de la version 22.04 d'Ubuntu et l'exécuter sur une Instance Compute OVHcloud, par exemple. Quelques connaissances de base sur son fonctionnement sont également nécessaires. Si vous ne disposez pas d'Ubuntu 22.04, suivez ce guide pour utiliser une Instance Compute OVHcloud.
Instructions
Ce tutoriel utilise la version OpenJDK. Il s'agit de la version open source, mais il existe de nombreuses versions sous licence fournies par différents fournisseurs (Oracle, Microsoft, AWS, etc.).
Dans ce tutoriel, vous allez commencer par installer JDK. Ensuite, vous l'exécuterez puis vous finirez par apprendre à basculer entre les différentes versions installées.
Au moment de la rédaction de ce tutoriel, la dernière version LTS de Java est la version 17.x et la dernière version GA est la version 18.x.
Installation de la version LTS d'OpenJDK
Pour installer Java sur Ubuntu, le moyen le plus simple est d'utiliser la commande apt-get :
sudo apt-get update && apt-get -y install openjdk-17-jdk
Le résultat s'affiche comme ceci :
$ sudo apt-get update && apt-get -y install openjdk-17-jdk Hit:1 http://security.ubuntu.com/ubuntu jammy-security InRelease Hit:2 http://nova.clouds.archive.ubuntu.com/ubuntu jammy InRelease Hit:3 http://nova.clouds.archive.ubuntu.com/ubuntu jammy-updates InRelease Hit:4 http://nova.clouds.archive.ubuntu.com/ubuntu jammy-backports InRelease Reading package lists... Done Building dependency tree... Done Reading state information... Done The following additional packages will be installed: adwaita-icon-theme alsa-topology-conf alsa-ucm-conf at-spi2-core ca-certificates-java dconf-gsettings-backend dconf-service fontconfig fontconfig-config fonts-dejavu-core fonts-dejavu-extra gsettings-desktop-schemas gtk-update-icon-cache hicolor-icon-theme humanity-icon-theme java-common libasound2 libasound2-data libatk-bridge2.0-0 libatk-wrapper-java libatk-wrapper-java-jni libatk1.0-0 libatk1.0-data libatspi2.0-0 libavahi-client3 libavahi-common-data libavahi-common3 libcairo-gobject2 libcairo2 libcups2 libdatrie1 libdconf1 libdeflate0 libdrm-amdgpu1 libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libfontconfig1 libfontenc1 libgail-common libgail18 libgdk-pixbuf-2.0-0 libgdk-pixbuf2.0-bin libgdk-pixbuf2.0-common libgif7 libgl1 libgl1-amber-dri libgl1-mesa-dri libglapi-mesa libglvnd0 libglx-mesa0 libglx0 libgraphite2-3 libgtk2.0-0 libgtk2.0-bin libgtk2.0-common libharfbuzz0b libice-dev libice6 libjbig0 libjpeg-turbo8 libjpeg8 liblcms2-2 libllvm13 libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpciaccess0 libpcsclite1 libpixman-1-0 libpthread-stubs0-dev librsvg2-2 librsvg2-common libsm-dev libsm6 libthai-data libthai0 libtiff5 libvulkan1 libwayland-client0 libwebp7 libx11-dev libx11-xcb1 libxau-dev libxaw7 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-randr0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-sync1 libxcb-xfixes0 libxcb1-dev libxcomposite1 libxcursor1 libxdamage1 libxdmcp-dev libxfixes3 libxft2 libxi6 libxinerama1 libxkbfile1 libxmu6 libxpm4 libxrandr2 libxrender1 libxshmfence1 libxt-dev libxt6 libxtst6 libxv1 libxxf86dga1 libxxf86vm1 mesa-vulkan-drivers openjdk-17-jdk-headless openjdk-17-jre openjdk-17-jre-headless session-migration ubuntu-mono x11-common x11-utils x11proto-dev xorg-sgml-doctools xtrans-dev ... update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/jhsdb to provide /usr/bin/jhsdb (jhsdb) in auto mode Setting up libgtk2.0-0:amd64 (2.24.33-2ubuntu2) ... Setting up humanity-icon-theme (0.6.16) ... Setting up libgail18:amd64 (2.24.33-2ubuntu2) ... Setting up libgtk2.0-bin (2.24.33-2ubuntu2) ... Setting up libgail-common:amd64 (2.24.33-2ubuntu2) ... Setting up openjdk-17-jre:amd64 (17.0.3+7-0ubuntu0.22.04.1) ... Setting up ubuntu-mono (20.10-0ubuntu2) ... Setting up openjdk-17-jdk:amd64 (17.0.3+7-0ubuntu0.22.04.1) ... update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/jconsole to provide /usr/bin/jconsole (jconsole) in auto mode Processing triggers for ca-certificates (20211016) ... Updating certificates in /etc/ssl/certs... 0 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d... done. done. Processing triggers for libglib2.0-0:amd64 (2.72.1-1) ... Processing triggers for libc-bin (2.35-0ubuntu3) ... Processing triggers for man-db (2.10.2-1) ... Setting up at-spi2-core (2.44.0-3) ... Processing triggers for libgdk-pixbuf-2.0-0:amd64 (2.42.8+dfsg-1) ... Scanning processes... Scanning candidates... Scanning linux images... Restarting services... /etc/needrestart/restart.d/systemd-manager systemctl restart packagekit.service postgresql@14-main.service ssh.service systemd-journald.service systemd-networkd.service systemd-resolved.service systemd-timesyncd.service systemd-udevd.service udisks2.service Service restarts being deferred: systemctl restart systemd-logind.service systemctl restart user@1000.service No containers need to be restarted. No user sessions are running outdated binaries. No VM guests are running outdated hypervisor (qemu) binaries on this host.
Ensuite, vous pouvez tester votre nouvelle installation :
java -version
Le résultat s'affiche comme ceci :
$ java -version openjdk version "17.0.3" 2022-04-19 OpenJDK Runtime Environment (build 17.0.3+7-Ubuntu-0ubuntu0.22.04.1) OpenJDK 64-Bit Server VM (build 17.0.3+7-Ubuntu-0ubuntu0.22.04.1, mixed mode, sharing)
Une des bonnes pratiques consiste à définir une variable d'environnement JAVA_HOME sur le chemin d'installation de JDK.
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/ echo $JAVA_HOME
Le résultat s'affiche comme ceci :
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/ $ echo $JAVA_HOME /usr/lib/jvm/java-17-openjdk-amd64/ $
Gestion de deux installations JDK ou plus
Imaginons que vous deviez utiliser la dernière version GA pour un projet spécifique. Commencez par installer la dernière version GA d'OpenJDK :
sudo apt-get -y install openjdk-18-jdk
Le résultat s'affiche comme ceci :
$ sudo apt-get -y install openjdk-18-jdk Reading package lists... Done Building dependency tree... Done Reading state information... Done The following additional packages will be installed: openjdk-18-jdk-headless openjdk-18-jre openjdk-18-jre-headless Suggested packages: openjdk-18-demo openjdk-18-source visualvm libnss-mdns fonts-ipafont-gothic fonts-ipafont-mincho fonts-wqy-microhei | fonts-wqy-zenhei fonts-indic The following NEW packages will be installed: openjdk-18-jdk openjdk-18-jdk-headless openjdk-18-jre openjdk-18-jre-headless 0 upgraded, 4 newly installed, 0 to remove and 12 not upgraded. Need to get 268 MB of archives. After this operation, 421 MB of additional disk space will be used. Get:1 http://nova.clouds.archive.ubuntu.com/ubuntu jammy/universe amd64 openjdk-18-jre-headless amd64 18~36ea-1 [48.0 MB] Get:2 http://nova.clouds.archive.ubuntu.com/ubuntu jammy/universe amd64 openjdk-18-jre amd64 18~36ea-1 [180 kB] Get:3 http://nova.clouds.archive.ubuntu.com/ubuntu jammy/universe amd64 openjdk-18-jdk-headless amd64 18~36ea-1 [220 MB] Get:4 http://nova.clouds.archive.ubuntu.com/ubuntu jammy/universe amd64 openjdk-18-jdk amd64 18~36ea-1 [10.9 kB] Fetched 268 MB in 5s (58.3 MB/s) .. update-alternatives: using /usr/lib/jvm/java-18-openjdk-amd64/bin/jhsdb to provide /usr/bin/jhsdb (jhsdb) in auto mode Setting up openjdk-18-jdk:amd64 (18~36ea-1) ... update-alternatives: using /usr/lib/jvm/java-18-openjdk-amd64/bin/jconsole to provide /usr/bin/jconsole (jconsole) in auto mode Processing triggers for hicolor-icon-theme (0.17-2) ... Scanning processes... Scanning candidates... Scanning linux images... Restarting services... Service restarts being deferred: systemctl restart systemd-logind.service systemctl restart user@1000.service No containers need to be restarted. No user sessions are running outdated binaries. No VM guests are running outdated hypervisor (qemu) binaries on this host.
Ensuite, testez votre nouvelle installation :
java -version
Le résultat s'affiche comme ceci :
$ java -version openjdk version "18-ea" 2022-03-22 OpenJDK Runtime Environment (build 18-ea+36-Ubuntu-1) OpenJDK 64-Bit Server VM (build 18-ea+36-Ubuntu-1, mixed mode, sharing)
Testez la variable d'environnement JAVA_HOME :
export JAVA_HOME=/usr/lib/jvm/java-18-openjdk-amd64/ echo $JAVA_HOME
Le résultat s'affiche comme ceci :
$ export JAVA_HOME=/usr/lib/jvm/java-18-openjdk-amd64/ $ echo $JAVA_HOME /usr/lib/jvm/java-18-openjdk-amd64/ $
Cependant, cette méthode n'est pas très pratique si vous souhaitez repasser à la version 17. Fort heureusement, il existe un outil pour y remédier : update-alternatives.
sudo update-alternatives --config java
Le résultat s'affiche comme ceci :
$ sudo update-alternatives --config java There are 2 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/lib/jvm/java-18-openjdk-amd64/bin/java 1811 auto mode 1 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1711 manual mode 2 /usr/lib/jvm/java-18-openjdk-amd64/bin/java 1811 manual mode Press to keep the current choice[*], or type selection number: 1 update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/java to provide /usr/bin/java (java) in manual mode
Vérifiez que la nouvelle version de Java est bien celle qui a été choisie :
java -version
Le résultat s'affiche comme ceci :
$ java -version openjdk version "17.0.3" 2022-04-19 OpenJDK Runtime Environment (build 17.0.3+7-Ubuntu-0ubuntu0.22.04.1) OpenJDK 64-Bit Server VM (build 17.0.3+7-Ubuntu-0ubuntu0.22.04.1, mixed mode, sharing)
⚠️ Attention :⚠️ si vous avez défini la variable d'environnement JAVA_HOME, vous devez la mettre à jour avec le bon chemin d'accès.
Tester l'installation de JDK
Pour tester votre installation de Java, vous pouvez écrire une application Hello World. Créez un fichier HelloWorld.java et copiez le code suivant :
public class HelloWorld { public static void main(String[] args) { System.out.println("👋 Hello World!"); } }
Sauvegardez, compilez, puis exécutez le fichier:
javac HelloWorld.java java HelloWorld
Le résultat s'affiche comme ceci :
$ javac HelloWorld.java $ java HelloWorld.java 👋 Hello World!
Félicitations, vous venez d'installer et de configurer un OpenJDK sur Ubuntu 22.04 !
Aller plus loin
Consultez les offres d'instance Public Cloud chez OVHcloud.