Cómo instalar Java JDK en macOS

imagen de autor
Por mkyong | Última actualización: 19 de enero de 2021
Visto: 93,094 | +3,924 pv/w

Este artículo muestra cómo instalar Java JDK en macOS, el gestor de paquetes Homebrew, la instalación manual y el cambio entre las diferentes versiones de JDK.

Testado con

  • macOS 11 Big Sur
  • Homebrew 2.7.4
  • JDK 8, 14, 16, 16 (AdoptOpenJDK y OpenJDK)
  • Temas

  1. Homebrew instala el último Java (OpenJDK) en macOS
  2. Homebrew instala Java 8 (OpenJDK) en macOS
  3. Homebrew instala un Java específico (AdoptOpenJDK) en macOS
  4. Instalación manual de Java (Early-Access Builds) en macOS
  5. Cambiar entre diferentes versiones de JDK
  6. P.S En el momento de escribir este artículo, el último JDK GA es el JDK 15, y la build de acceso temprano es el JDK 16.

    Nota
    Desde macOS 10.15 Catalina, el shell de Terminal por defecto cambia de bash (shell de Bourne) a zsh (shell Z). Y debemos mover todos los scripts de inicio y variables de entorno en ~/.bash_profile o ~/.bashrc a ~/.zshenv o ~/.zshrc.

    También, lee este Zsh Startup Files.

    1. Homebrew instala la última versión de Java en macOS

    1.1 Instala y actualiza Homebrew.

    1.2 brew search java para encontrar toda la fórmula disponible relacionada con Java.

    Terminal
    % brew search java ==> Formulaeapp-engine-java java javacc jslint4java pdftk-javagoogle-java-format java11 javarepl libreadline-java

    1.3 brew info para mostrar los detalles de la fórmula.

    La fórmula java contiene siempre la última versión de Java JDK (OpenJDK) GA; en el momento de escribir este artículo, la última GA es JDK 15.

    Terminal
    % brew info javaopenjdk: stable 15.0.1 (bottled) Development kit for the Java programming languagehttps://openjdk.java.net//usr/local/Cellar/openjdk/15.0.1 (614 files, 324.9MB) Poured from bottle on 2020-12-09 at 09:06:07From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/openjdk.rbLicense: Cannot Represent

    La fórmula java11 está conteniendo la versión de Java 11 LTS.

    Terminal
    % brew info java11 openjdk@11: stable 11.0.9 (bottled) Development kit for the Java programming languagehttps://openjdk.java.net/Not installedFrom: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/[email protected]: GPL-2.0-only

    1.4 brew install java para instalar el último JDK 15.

    Terminal
    % brew info java

    1.5 ¿Dónde instala Homebrew el java?
    Homebrew instaló los archivos y directorios del JDK en /usr/local/Cellar/openjdk/, y el enlace simbólico en /usr/local/opt/openjdk apunta a la última versión de Java 15.0.1.

    Terminal
    % ls -lsa /usr/local/Cellar/openjdk/ total 00 drwxr-xr-x 3 mkyong staff 96 Dec 9 09:06 .0 drwxrwxr-x 69 mkyong admin 2208 Jan 15 15:35 ..0 drwxr-xr-x 9 mkyong staff 288 Jan 15 16:47 15.0.1% ls -lsa /usr/local/opt/openjdk0 lrwxr-xr-x 1 mkyong admin 24 Dec 9 09:06 /usr/local/opt/openjdk -> ../Cellar/openjdk/15.0.1

    1.6 La fórmula java es sólo para keg, lo que significa que se instala en /usr/local/Cellar pero no se enlaza en lugares como /usr/local/bin o /Library/Java/JavaVirtualMachines/ (macOS /usr/bin/java wrapper).

    Para que el wrapper de macOS /usr/bin/java encuentre el JDK instalado, creamos manualmente un enlace simbólico en /Library/Java/JavaVirtualMachines/.

    Terminal
    % sudo ln -sfn /usr/local/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk

    1.7 Hecho.

    Terminal
    % java -versionopenjdk version "15.0.1" 2020-10-20OpenJDK Runtime Environment (build 15.0.1+9)OpenJDK 64-Bit Server VM (build 15.0.1+9, mixed mode, sharing)

    2. Homebrew instalar Java 8 en macOS

    2.1 Instalar y actualizar Homebrew.

    2.2 El brew search java no tiene java8?

    Terminal
    % brew search java ==> Formulaeapp-engine-java java javacc jslint4java pdftk-javagoogle-java-format java11 javarepl libreadline-java

    2.3 El Java 8 está disponible en la fórmula openjdk@8. La fórmula openjdk es la misma que la fórmula java, y siempre contiene la última versión del JDK GA; la fórmula openjdk@11 es la misma que la fórmula java11, que contiene el JDK 11.

    Terminal
    % brew search openjdk==> Formulaeopenjdk openjdk@11 openjdk@8 

    2.4 Podemos utilizar la fórmula openjdk@8 para instalar Java 8 en macOS.

    Terminal
    % brew install openjdk@8

    2.5 El openjdk@8 también es un keg-only; necesitamos crear un enlace simbólico para que el java wrapper de macOS lo encuentre.

    Terminal
    % sudo ln -sfn /usr/local/opt/openjdk@8/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-8.jdk 

    2.6 Hecho.

    Terminal
    % java -versionopenjdk version "1.8.0_275"OpenJDK Runtime Environment (build 1.8.0_275-bre_2020_11_16_15_09-b00)OpenJDK 64-Bit Server VM (build 25.275-b00, mixed mode)

    2.7 ¿Y si tenemos varias versiones de Java instaladas?

    Terminal
    ls -lsah /Library/Java/JavaVirtualMachines/ openjdk-8.jdk -> /usr/local/opt/openjdk@8/libexec/openjdk.jdkopenjdk.jdk -> /usr/local/opt/openjdk/libexec/openjdk.jdk

    Podemos actualizar el $PATH en ~/.zshrc, para que el macOS encuentre el Java correcto instalado.

    Terminal
    % java -versionopenjdk version "15.0.1" 2020-10-20OpenJDK Runtime Environment (build 15.0.1+9)OpenJDK 64-Bit Server VM (build 15.0.1+9, mixed mode, sharing)% echo 'export PATH="/usr/local/opt/openjdk@8/bin:$PATH"' >> ~/.zshrc % source ~/.zshrc% java -versionopenjdk version "1.8.0_275"OpenJDK Runtime Environment (build 1.8.0_275-bre_2020_11_16_15_09-b00)OpenJDK 64-Bit Server VM (build 25.275-b00, mixed mode)

    $JAVA_HOME
    Alternativamente, podemos establecer la variable de entorno $JAVA_HOME en macOS.

    3. Homebrew instala un Java específico (AdoptOpenJDK) en macOS.

    El grifo adoptopenjdk/openjdk que contiene un montón de diferentes versiones de JDK (AdoptOpenJDK).

    3.1 Añadir un nuevo tap (repositorio de terceros) adoptopenjdk/openjdk.

    Terminal
    % brew tap adoptopenjdk/openjdk

    3.2 Buscamos la fórmula relacionada adoptopenjdk.

    Terminal
    % brew search adoptopenjdk==> Casksadoptopenjdk adoptopenjdk12-openj9 adoptopenjdk14-openj9-largeadoptopenjdk-jre adoptopenjdk12-openj9-jre adoptopenjdk15adoptopenjdk-openj9 adoptopenjdk12-openj9-jre-large adoptopenjdk15-jreadoptopenjdk-openj9-jre adoptopenjdk12-openj9-large adoptopenjdk15-openj9adoptopenjdk-openj9-jre-large adoptopenjdk13 adoptopenjdk15-openj9-jreadoptopenjdk-openj9-large adoptopenjdk13-jre adoptopenjdk15-openj9-jre-largeadoptopenjdk10 adoptopenjdk13-openj9 adoptopenjdk15-openj9-largeadoptopenjdk11 adoptopenjdk13-openj9-jre adoptopenjdk8adoptopenjdk11-jre adoptopenjdk13-openj9-jre-large adoptopenjdk8adoptopenjdk11-openj9 adoptopenjdk13-openj9-large adoptopenjdk8-jreadoptopenjdk11-openj9-jre adoptopenjdk14 adoptopenjdk8-openj9adoptopenjdk11-openj9-jre-large adoptopenjdk14-jre adoptopenjdk8-openj9-jreadoptopenjdk11-openj9-large adoptopenjdk14-openj9 adoptopenjdk8-openj9-jre-largeadoptopenjdk12 adoptopenjdk14-openj9-jre adoptopenjdk8-openj9-largeadoptopenjdk12-jre adoptopenjdk14-openj9-jre-large adoptopenjdk9

    3.3 Elegimos adoptopenjdk14 fórmula para instalar el JDK 14.

    Terminal
    % brew install adoptopenjdk14installer: Package name is AdoptOpenJDKinstaller: Installing at base path /installer: The install was successful.package-id: net.adoptopenjdk.14.jdkversion: 14.0.2+12volume: /location: Library/Java/JavaVirtualMachines/adoptopenjdk-14.jdkinstall-time: 1610720586adoptopenjdk14 was successfully installed!

    3.4 La fórmula adoptopenjdk crea el home del JDK directamente en el /Library/Java/JavaVirtualMachines/.

    Terminal
    % ls -lsa /Library/Java/JavaVirtualMachines/adoptopenjdk-14.jdkopenjdk-8.jdk -> /usr/local/opt/openjdk@8/libexec/openjdk.jdkopenjdk.jdk -> /usr/local/opt/openjdk/libexec/openjdk.jdk

    3.5 Como el home del JDK ya está en /Library/Java/JavaVirtualMachines/, no necesitamos crear ningún enlace simbólico, sólo exportar $PATH y apuntarlo al adoptopenjdk-14.jdk correcto.

    Terminal
    % echo 'export PATH="/Library/Java/JavaVirtualMachines/adoptopenjdk-14.jdk/Contents/Home/bin:$PATH"' >> ~/.zshrc% source ~/.zshrc% java -versionopenjdk version "14.0.2" 2020-07-14OpenJDK Runtime Environment AdoptOpenJDK (build 14.0.2+12)OpenJDK 64-Bit Server VM AdoptOpenJDK (build 14.0.2+12, mixed mode, sharing)

    Nota
    También lee este Switch adoptopenjdk cask para usar el pkg #73145

    4. Instalar manualmente Java (Early-Access Builds) en macOS.

    Por algunas razones, necesitamos instalar Java en macOS manualmente:

  • Anti-Homebrew, a los desarrolladores les encanta controlarlo todo.
  • La build del JDK no existe en el repositorio de Homebrew, como las builds de acceso temprano, o el JDK de Oracle.
    • P.S En el momento de escribir este artículo, la build de acceso temprano del JDK es el JDK 16.

      4.1 Accede a la web de la build de acceso temprano del JDK 16 y descarga el JDK.

      instala jdk16 en macOS

      4.2 Extrae el archivo descargado tar.gz a /Library/Java/JavaVirtualMachines

      Terminal
% sudo tar xvzf ~/Downloads/openjdk-16-ea+32_osx-x64_bin.tar.gz -C /Library/Java/JavaVirtualMachines% ls -lsa /Library/Java/JavaVirtualMachinesadoptopenjdk-14.jdkjdk-16.jdkopenjdk-8.jdk -> /usr/local/opt/openjdk@8/libexec/openjdk.jdkopenjdk.jdk -> /usr/local/opt/openjdk/libexec/openjdk.jdk

4.3 Actualizar $PATH y apuntar al /Library/Java/JavaVirtualMachines/jdk-16.jdk

Terminal
% echo 'export PATH="/Library/Java/JavaVirtualMachines/jdk-16.jdk/Contents/Home/bin:$PATH"' >> ~/.zshrc

4.4 Probar el JDK 16.

Terminal
% source ~/.zshrc% java -versionopenjdk version "16-ea" 2021-03-16OpenJDK Runtime Environment (build 16-ea+32-2190)OpenJDK 64-Bit Server VM (build 16-ea+32-2190, mixed mode, sharing)

Hecho.

5. Cambiar entre diferentes versiones de JDK

Desde el ejemplo 1 hasta el ejemplo 4, hemos instalado cuatro versiones de JDK en macOS.

5.1 Listar todas las versiones de JDK en macOS.

Terminal
% /usr/libexec/java_home -VMatching Java Virtual Machines (4): 16 (x86_64) "Oracle Corporation" - "OpenJDK 16-ea" /Library/Java/JavaVirtualMachines/jdk-16.jdk/Contents/Home 15.0.1 (x86_64) "UNDEFINED" - "OpenJDK 15.0.1" /usr/local/Cellar/openjdk/15.0.1/libexec/openjdk.jdk/Contents/Home 14.0.2 (x86_64) "AdoptOpenJDK" - "AdoptOpenJDK 14" /Library/Java/JavaVirtualMachines/adoptopenjdk-14.jdk/Contents/Home 1.8.0_275 (x86_64) "UNDEFINED" - "OpenJDK 8" /usr/local/Cellar/openjdk@8/1.8.0+275/libexec/openjdk.jdk/Contents/Home/Library/Java/JavaVirtualMachines/jdk-16.jdk/Contents/Home% ls -lsa /Library/Java/JavaVirtualMachinesadoptopenjdk-14.jdkjdk-16.jdkopenjdk-8.jdk -> /usr/local/opt/openjdk@8/libexec/openjdk.jdkopenjdk.jdk -> /usr/local/opt/openjdk/libexec/openjdk.jdk

5.2 Añadir la siguiente función en el ~/.zshrc (para macOS 10.15 Catalina, y superior) o ~/.bashrc (antes de macOS 10.15 Catalina).

~/.zshrc
jdk() { version=$1 unset JAVA_HOME; export JAVA_HOME=$(/usr/libexec/java_home -v"$version"); java -version}

P.S Cree el archivo ~/.zshrc si no existe.

5.3 Cree el ~/.zshrc para reflejar los cambios.

Terminal
% source ~/.zshrc

5.4 Cambiar entre diferentes versiones del JDK.

Terminal
% java -versionopenjdk version "16-ea" 2021-03-16OpenJDK Runtime Environment (build 16-ea+32-2190)OpenJDK 64-Bit Server VM (build 16-ea+32-2190, mixed mode, sharing)% jdk 1.8openjdk version "1.8.0_275"OpenJDK Runtime Environment (build 1.8.0_275-bre_2020_11_16_15_09-b00)OpenJDK 64-Bit Server VM (build 25.275-b00, mixed mode)% jdk 14openjdk version "14.0.2" 2020-07-14OpenJDK Runtime Environment AdoptOpenJDK (build 14.0.2+12)OpenJDK 64-Bit Server VM AdoptOpenJDK (build 14.0.2+12, mixed mode, sharing)% jdk 15openjdk version "15.0.1" 2020-10-20OpenJDK Runtime Environment (build 15.0.1+9)OpenJDK 64-Bit Server VM (build 15.0.1+9, mixed mode, sharing)% jdk 16openjdk version "16-ea" 2021-03-16OpenJDK Runtime Environment (build 16-ea+32-2190)OpenJDK 64-Bit Server VM (build 16-ea+32-2190, mixed mode, sharing)

Lectura adicional
Cómo establecer la variable de entorno $JAVA_HOME en macOS.

  • ¿Qué debe/no debe ir en .zshenv, .zshrc, .zlogin, .zprofile, .zlogout?
  • Wikipedia macOS
  • Homebrew
  • AdoptOpenJDK – HomeBrew TAP
  • Cómo instalar Maven en Mac OSX
  • Archivos de inicio de Zsh
Etiquetas : brew install jdk mac switch jdk zsh
imagen del autor

mkyong

Fundador de Mkyong.com, amante de Java y de las cosas de código abierto. Síguelo en Twitter. Si te gustan mis tutoriales, considera hacer una donación a estas organizaciones benéficas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *