
Como instalar o Java em Ubuntu 22.04
Instalar o Java em Ubuntu 22.04
Objetivo
O Java uma das línguas mais famosas do mundo. A sua adoção alargada nos últimos anos torna-o numa linguagem inevitável no mundo do desenvolvimento. Para obter mais informações e saber mais sobre a linguagem Java, consulte a documentação oficial.
Neste tutorial, descobrirá como instalar um Java Development Kit (JDK) na distribuição Linux Ubuntu 22.04.
Requisitos
Este tutorial parte do princípio de que dispõe de um Ubuntu 22.04, a correr numa instância de computação OVHcloud, por exemplo. Alguns conhecimentos básicos sobre o seu funcionamento são também necessários. Se não tiver o Ubuntu 22.04, siga este guia para utilizar uma Instância de Computação OVHcloud.
Instruções
Este tutorial usa a versão OpenJDK. Esta é a versão open source mas existem muitas versões licenciadas disponibilizadas por fornecedores (Oracle, Microsoft, AWS, etc.).
Neste tutorial, primeiro irá instalar um JDK, depois irá usá-lo e, para concluir, irá aprender a alternar entre as diferentes versões instaladas.
Aquando da redação deste tutorial, a última versão LTS do Java é a 17.x e a última versão GA é a 18.x.
Instalação da versão LTS do OpenJDK
A forma mais fácil de instalar o Java em Ubuntu é usar o comando apt-get.
sudo apt-get update && apt-get -y install openjdk-17-jdk
O resultado deve ser o seguinte:
$ 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.
Em seguida, pode testar a sua nova instalação:
java -version
O resultado deve ser o seguinte:
$ 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)
A good practice is to set an environment variable JAVA_HOME with the path of the JDK installation.
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/ echo $JAVA_HOME
O resultado deve ser o seguinte:
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/ $ echo $JAVA_HOME /usr/lib/jvm/java-17-openjdk-amd64/ $
Gerir duas ou mais instalações de JDK
Imagine que necessitar de utilizar a versão mais recente do GA para um projeto específico. Instale primeiro a versão mais recente do GA do OpenJDK:
sudo apt-get -y install openjdk-18-jdk
O resultado deve ser o seguinte:
$ 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.
Em seguida, teste a nova instalação:
java -version
O resultado deve ser o seguinte:
$ 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)
Then set the JAVA_HOME environment variable:
export JAVA_HOME=/usr/lib/jvm/java-18-openjdk-amd64/ echo $JAVA_HOME
O resultado deve ser o seguinte:
$ export JAVA_HOME=/usr/lib/jvm/java-18-openjdk-amd64/ $ echo $JAVA_HOME /usr/lib/jvm/java-18-openjdk-amd64/ $
Contudo, este método não é muito conveniente caso deseje mudar novamente para a versão 17. Felizmente, existe uma ferramenta para tal: update-alternatives.
sudo update-alternatives --config java
O resultado deve ser o seguinte:
$ 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
Verifique se a nova versão do Java corresponde bem à escolhida:
java -version
O resultado deve ser o seguinte:
$ 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)
⚠️ Atenção⚠️ se definiu a variável de ambiente JAVA_HOME, deverá atualizá-la com o caminho correto.
Teste a instalação do JDK
Para testar a sua instalação de Java, pode escrever uma aplicação Hello World. Crie um ficheiro HelloWorld.java e cole o código seguinte:
public class HelloWorld { public static void main(String[] args) { System.out.println("👋 Hello World!"); } }
Guarde-o e compile-o, e depois execute-o:
javac HelloWorld.java java HelloWorld
O resultado deve ser o seguinte:
$ javac HelloWorld.java $ java HelloWorld.java 👋 Hello World!
Já está! Instalou e configurou com sucesso um OpenJDK em Ubuntu 22.04.
Ir mais longe
Consulte as ofertas de instâncias Public Cloud na OVHcloud.