En este post vamos a instalar Java 17 en Linux en sus distintas distribuciones, vamos a conocer las distintas alternativas que tenemos para tener Java 17, estas opciones pueden ser descargando el binario o instalando desde la terminal de comandos.
A fecha de creación de este post, se sigue publicando Java 17 y sus binarios Linux están en el archivo oficial de Oracle y otros sitios. Algunas descargas requieren cuenta Oracle y aceptación de licencia.
Qué vamos a hacer
Vamos a conocer las distintas alternativas para descargar e instalar Java 17 en cualquier distribución de Linux, vamos a segur en cualquier método los siguientes pasos:
- Descargar Java
- Oracle
- OpenJDK
- Adoptium
- Extraerlo en
/opt - Configurar
JAVA_HOME - Configurar
PATH - Registrar java en el sistema
Verificar arquitectura del sistema
Primero identifica la arquitectura del pc, ejecutamos el comando uname de la siguiente forma:
uname -m
Posibles resultados:
Método 1, OpenJDK
Es la forma más rápida y sencilla, disponible en los repositorios oficiales.
Ubuntu y derivadas (18.04, 20.04, 22.04, 24.04)
Actualizar repositorios:
sudo apt update
Buscar paquetes disponibles:
apt search openjdk-17
Instalar JDK:
sudo apt install openjdk-17-jdk
Verificar:
java -version
Deberías ver algo parecido a: openjdk version "17.0.xxx"
En Ubuntu sigue disponible como paquete en varias versiones recientes.
Debian
Debian 10 / 11 / 12
sudo apt update
sudo apt install openjdk-17-jdk
RHEL / CentOS / Rocky / AlmaLinux / Oracle Linux
- Red Hat Enterprise Linux
- Rocky Linux
- AlmaLinux
Con yum:
sudo yum install java-17-openjdk java-17-openjdk-devel -y
o con dnf:
sudo dnf install java-17-openjdk java-17-openjdk-devel -y
Red Hat documenta oficialmente este paquete.
Verificar:
java -version
Fedora
Instalar:
sudo dnf install java-17-openjdk java-17-openjdk-devel -y
Verificar:
java -version
Arch Linux
Actualizar:
sudo pacman -Syu
Instalar:
sudo pacman -S jdk17-openjdk
Verificar:
java -version
openSUSE
Instalar:
sudo zypper install java-17-openjdk
Verificar:
java -version
Método 2, Oracle
Descargar desde Oracle
Ingresamos al sitio oficial de Oracle: https://www.oracle.com/java/technologies/downloads/#java17, donde vamos a descargar el instalador, puede ser parecido a: jdk-17.0.31_linux-aarch64_bin.tar.gz
Nota: puede que nos pida registrarnos e iniciar sesión para poder descargar Java en Oracle.
Procedemos a guardar en: ~/Downloads
Oracle indica que la instalación desde .tar.gz consiste precisamente en extraer el archivo en el directorio deseado.
Crear estructura estándar
En servidores solemos usar /opt para software de terceros, en este fólder vamos a guardar Java.
Procedemos a Crear los directorio de la siguiente forma:
sudo mkdir -p /opt/java
¿Qué significa?
/opt→ optional software/opt/java→ nuestras instalaciones Java
Extraer el JDK
Movernos al directorio:
cd /opt/java
Procedemos a extraer el archivo comprimido, puede que el nombre del siguiente comando cambie:
sudo tar -xzf ~/Downloads/jdk-17.0.31_linux-aarch64_bin.tar.gz
Verificar:
ls
Deberías ver:
jdk-17.0.31
Metodo 3, Adoptium
Descargar de adoptium
Esta versión de Java es la utilizada por Eclipse, podemos bajar el binario que usa este IDE desde el siguiente enlace: https://adoptium.net/es/temurin/releases?version=17
Procedemos a guardar en: ~/Downloads
Nota: realizamos los mismos pasos de extraer y mover a /opt/java, como se explica en el apartado de Oracle
Configurar JAVA_HOME
Aquí empieza lo importante indicar en JAVA_HOME donde esta ubicados los binarios de Java, ya asea en /opt/java o /usr/lib/jvm/java-17-openjdk-amd64/bin/java.
Editar variables globales:
nano ~/.bashrc
Añadir:
export JAVA_HOME=RUTA_DEL_JAVA
export PATH=$JAVA_HOME/bin:$PATH
Guardar.
Procedemos a aplicar los cambios con:
source ~/.bashrc
Verificar variables
Procedemos a validar si ha quedado correctamente Java, ejecutamos en terminal.
echo $JAVA_HOME
Debe devolver: /opt/java/jdk_17.0_491
Registrar Java en el sistema (muy importante)
En distribuciones como Ubuntu/Debian:
sudo update-alternatives --install /usr/bin/java java /opt/java/jdk1.8.0_491/bin/java 1
Y también:
sudo update-alternatives --install /usr/bin/javac javac /opt/java/jdk1.8.0_491/bin/javac 1
Seleccionar, (se explica a detalle el comando mas abajo):
sudo update-alternatives --config java
Validar instalación
java -version
Esperado:
java version "17.0_491"
Java(TM) SE Runtime Environment
Java HotSpot(TM) 64-Bit Server VM
También:
javac -version
Entender qué acabas de instalar
Comprueba donde tienes instslado Java
which java
Ejemplo: /usr/bin/java
Ahora sigue el enlace:
readlink -f $(which java)
Verás algo como: /usr/lib/jvm/java-17-openjdk-amd64/bin/java
Esto te enseña cómo Linux resuelve binarios.
Debug real (modo sysadmin)
Si java -version falla, estas son las 3 comprobaciones:
PATH
echo $PATH
Debe contener:
/opt/java/jdk1.17.0_491/bin
JAVA_HOME
echo $JAVA_HOME
Binario
ls -l $JAVA_HOME/bin/java
Multi-version Java (muy común)
Cuando luego instales Java 11 o 17, podrás cambiar entre versiones con:
sudo update-alternatives --config java
En sistemas basados en Debian Project (como Ubuntu, Debian, Linux Mint, etc.) sirve para elegir qué versión de Java será la predeterminada del sistema cuando ejecutas:
Respuesta:
Existen 3 opciones para la alternativa java (que provee /usr/bin/java).
Selección Ruta Prioridad Estado
------------------------------------------------------------
* 0 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1711 modo automático
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 modo manual
2 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1711 modo manual
3 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 modo manual
Pulse <Intro> para mantener el valor por omisión [*] o pulse un número de selección:
Del listado anterior seleccionamos la versión de Java con la que vamos a trabajar. ingresando en terminal el numero correspondiente a la versión, ejemplo 0.
¿Qué cambia internamente?
Linux maneja una cadena de enlaces simbólicos:
/usr/bin/java
↓
/etc/alternatives/java
↓
/usr/lib/jvm/java-11-openjdk/bin/java
Cuando cambias la alternativa, realmente cambias ese enlace.
Visualmente:
ls -l /usr/bin/java
puedes verlo.