Cómo instalar Java en Ubuntu 22.04
Instalación de Java en Ubuntu 22.04
Objetivo
Java es uno de los lenguajes de programación más populares del mercado. Su amplia adopción en los últimos años lo convierte en un lenguaje imprescindible en el mundo del desarrollo. Para más información sobre todas las posibilidades que ofrece el lenguaje Java, consulte la documentación oficial.
Esta guía explica cómo instalar Java Development Kit (JDK) en la distribución Ubuntu 22.04 de Linux.
Requisitos
Para poder seguir los pasos que se indican en esta guía, necesitará disponer de un VPS, un servidor Bare Metal o, como en nuestro ejemplo, una instancia Compute de OVHcloud con Ubuntu 22.04. Asimismo, también debe tener conocimientos básicos sobre el funcionamiento de una CLI. Si necesita ayuda para instalar una instancia Public Cloud con Ubuntu 22.04, consulte nuestra guía «Crear y conectarse a una instancia de Public Cloud».
Instrucciones
Esta guía utiliza OpenJDK. Se trata de la versión open source, pero existen muchas otras versiones con licencia de pago de otros proveedores (Oracle, Microsoft, AWS, etc.).
Esta guía explica los diferentes pasos que debemos seguir para instalar OpenJDK, utilizarlo y pasar de una versión instalada a otra diferente.
Durante la redacción de esta guía, la última versión publicada LTS de Java es la versión 17.x; la última versión GA es la versión 18.x.
Instalación de la versión LTS de OpenJDK
Utilice el comando apt-get para instalar Java en Ubuntu:
sudo apt-get update && apt-get -y install openjdk-17-jdk
Deberá obtener un resultado similar al que se incluye a continuación:
$ 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 Leyendo listas de paquetes... Completado Creando árbol de dependencias... Completado Leyendo información de estado... Completado Se van a instalar los paquetes adicionales siguientes: 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: uso de /usr/lib/jvm/java-17-openjdk-amd64/bin/jhsdb para proporcionar /usr/bin/jhsdb (jhsdb) en modo automático Configurando libgtk2.0-0:amd64 (2.24.33-2ubuntu2) ... Configurando humanity-icon-theme (0.6.16)... Configurando libgail18:amd64 (2.24.33-2ubuntu2)... Configurando libgtk2.0-bin (2.24.33-2ubuntu2)... Configurando libgail-common:amd64 (2.24.33-2ubuntu2) ... Configurando openjdk-17-jre:amd64 (17.0.3+7-0ubuntu0.22.04.1) ... Configurando ubuntu-mono (20.10-0ubuntu2)... Configurando openjdk-17-jdk:amd64 (17.0.3+7-0ubuntu0.22.04.1)... update-alternatives: usar /usr/lib/jvm/java-17-openjdk-amd64/bin/jconsole para proporcionar /usr/bin/jconsole (jconsole) en modo automático Procesando disparadores para certificados ca (20211016)... Actualizando certificados en /etc/ssl/certs... 0 añadido, 0 eliminado; completado. Ejecutando enlaces en /etc/ca-certificates/update.d... completado. completado. Procesando disparadores para libglib2.0-0:amd64 (2.72.1-1)... Procesando disparadores para libc-bin (2.35-0ubuntu3)... Procesando disparadores para man-db (2.10.2-1)... Configurando at-spi2-core (2.44.0-3)... Procesando disparadores para libgdk-pixbuf-2.0-0:amd64 (2.42.8+dfsg-1)... Escaneando procesos... Escaneando candidatos... Escaneando imágenes de Linux... Reiniciando los servicios... /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 Reinicios del servicio aplazados: systemctl restart systemd-logind.service systemctl restart user@1000.service No es necesario reiniciar ningún contenedor. No hay sesiones de usuario que ejecuten binarios obsoletos. Ningún invitado de VM está ejecutando binarios obsoletos del hipervisor (qemu) en este host.
A continuación, compruebe la instalación:
java -version
Deberá obtener un resultado similar al que se incluye a continuación:
$ 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, modo mixto, compartido)
Una práctica recomendable es definir una variable de entorno JAVA_HOME con la ruta de instalación de JDK.
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/ echo $JAVA_HOME
Deberá obtener un resultado similar al que se incluye a continuación:
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/ $ echo $JAVA_HOME /usr/lib/jvm/java-17-openjdk-amd64/ $
Gestión de dos o más instalaciones JDK
En algunos casos, es posible que tenga que utilizar otra versión de JDK para un proyecto específico. En ese caso, deberá instalar la versión específica de OpenJDK, tal y como se describe en esta guía.
sudo apt-get -y install openjdk-18-jdk
Deberá obtener un resultado similar al que se incluye a continuación:
$ sudo apt-get -y install openjdk-18-jdk Leyendo listas de paquetes... Completado Creando árbol de dependencias... Completado Leyendo información de estado... Completado Se van a instalar los paquetes adicionales siguientes: openjdk-18-jdk-headless openjdk-18-jre openjdk-18-jre-headless Paquetes sugeridos: openjdk-18-demo openjdk-18-source visualvm libnss-mdns fonts-ipafont-gothic fonts-ipafont-mincho fonts-wqy-microhei | fonts-wqy-zenhei fonts-indic Van a instalarse los siguientes paquetes nuevos: openjdk-18-jdk openjdk-18-jdk-headless openjdk-18-jre openjdk-18-jre-headless 0 actualizados, 4 recién instalados, 0 por eliminar y 12 no actualizados. Necesita 268 MB de archivos. Tras esta operación, se utilizarán 421 MB de espacio adicional en disco. 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/universo amd64 openjdk-18-jdk-headless amd64 18~36ea-1 [220 MB] Get:4 http://nova.clouds.archive.ubuntu.com/ubuntu jammy/universo amd64 openjdk-18-jdk amd64 18~36ea-1 [10,9 kB] 268 MB en 5s (58,3 MB/s) .. update-alternatives: uso de /usr/lib/jvm/java-18-openjdk-amd64/bin/jhsdb para proporcionar /usr/bin/jhsdb (jhsdb) en modo automático Configurando openjdk-18-jdk:amd64 (18~36ea-1)... update-alternatives: uso de /usr/lib/jvm/java-18-openjdk-amd64/bin/jconsole para proporcionar /usr/bin/jconsole (jconsole) en modo automático Procesando disparadores para hicolor-icon-theme (0.17-2)... Escaneando procesos... Escaneando candidatos... Escaneando imágenes de Linux... Reiniciando los servicios... Reinicios del servicio aplazados: systemctl restart systemd-logind.service systemctl restart user@1000.service No es necesario reiniciar ningún contenedor. No hay sesiones de usuario que ejecuten binarios obsoletos. Ningún invitado de VM está ejecutando binarios obsoletos del hipervisor (qemu) en este host.
A continuación, compruebe la nueva instalación:
java -version
Deberá obtener un resultado similar al que se incluye a continuación:
$ 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)
A continuación, defina la variable de entorno JAVA_HOME:
export JAVA_HOME=/usr/lib/jvm/java-18-openjdk-amd64/ echo $JAVA_HOME
Deberá obtener un resultado similar al que se incluye a continuación:
$ export JAVA_HOME=/usr/lib/jvm/java-18-openjdk-amd64/ $ echo $JAVA_HOME /usr/lib/jvm/java-18-openjdk-amd64/ $
No resulta práctico volver a la versión 17. Afortunadamente, existe una herramienta-update-alternatives.
sudo update-alternatives --config java
Deberá obtener un resultado similar al que se incluye a continuación:
$ sudo update-alternatives --config java Hay dos opciones para el Java alternativo (proporcionando /usr/bin/java). Selección Ruta Prioridad Estado ------------------------------------------------------------ * 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 Presione para mantener la opción actual[*] o escriba el número de selección: 1 alternativas-actualizaciones: uso de /usr/lib/jvm/java-17-openjdk-amd64/bin/java para proporcionar /usr/bin/java (java) en modo manual
Compruebe que ha seleccionado la nueva versión de Java.
java -version
Deberá obtener un resultado similar al que se incluye a continuación:
$ 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, modo mixto, compartido)
⚠️ Advertencia:⚠️ si ha definido la variable de entorno JAVA_HOME, debe actualizarla con la ruta correcta.
Probar la instalación de JDK
Para probar la instalación de Java mediante la creación de una aplicación Hello World, cree un archivo HelloWorld.java y pegue el siguiente código:
public class HelloWorld { public static void main(String[] args) { System.out.println("👋 ¡Hola, mundo!"); }
Guarde y compile el archivo y, a continuación, ejecútelo.
javac HelloWorld.java java HelloWorld
Deberá obtener un resultado similar al que se incluye a continuación:
$ javac HelloWorld.java $ java HelloWorld.java 👋 ¡Hola, mundo!
¡Enhorabuena! Ya ha instalado y configurado correctamente OpenJDK en Ubuntu 22.04.