Como instalar Java JDK em macOS

author image
Por mkyong | Última actualização 19 de Janeiro de 2021
vista: 93,094 | +3,924 pv/w

Este artigo mostra como instalar Java JDK em macOS, gestor de pacotes homebrew, instalação manual, e alternar entre diferentes versões JDK.

Testado com

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

Topics

  1. Homebrew install last Java (OpenJDK) on macOS
  2. Homebrew install Java 8 (OpenJDK) on macOS
  3. Homebrew install a specified Java (AdoptOpenJDK) on macOS
  4. Manual install Java (Early-Access Builds) em macOS
  5. Switch entre diferentes versões JDK

P>P.S Na altura da escrita, o último JDK GA é JDK 15, e a construção de acesso inicial é JDK 16.

Nota
Since macOS 10.15 Catalina, o terminal padrão muda do bash (Bourne-again shell) para zsh (Z shell). E devemos mover todos os scripts de arranque e variáveis de ambiente em ~/.bash_profile ou ~/.bashrc para ~/.zshenv ou ~/.zshrc.

também, leia isto Zsh Startup Files.

1. Homebrew instalar o último Java em macOS

1.1 Instalar e actualizar Homebrew.

1.2 brew search java para encontrar todas as fórmulas disponíveis relacionadas com 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 os detalhes da fórmula.

O java fórmula contém sempre a última versão da GA Java JDK (OpenJDK); na altura da redacção, a última GA é 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

O java11 fórmula contém sempre a versão 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 o último JDK 15.

Terminal
% brew info java

1.5 Onde é que o Homebrew instala o java?
Homebrew instalou os ficheiros e directórios JDK em /usr/local/Cellar/openjdk/, e a ligação simbólica em /usr/local/opt/openjdk aponta para a última versão 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 A fórmula java é apenas de barril, o que significa que está instalado em /usr/local/Cellar mas não ligado em locais como /usr/local/bin ou /Library/Java/JavaVirtualMachines/ (macOS /usr/bin/java invólucro).

Para macOS /usr/bin/java wrapper para encontrar o JDK instalado, criamos manualmente uma ligação simbólica em /Library/Java/JavaVirtualMachines/.

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

1.7 Done.

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 em macOS

2.1 Instalar e actualizar Homebrew.

2.2 O brew search java não tem java8?

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

2.3 O Java 8 está disponível na fórmula openjdk@8. O openjdk é o mesmo que o java fórmula, e contém sempre a última versão de JDK GA; o openjdk@11 é o mesmo que o java11 fórmula, contendo JDK 11.

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

2.4 Podemos usar a fórmula openjdk@8 para instalar Java 8 em macOS.

Terminal
% brew install openjdk@8

2.5 O openjdk@8 é também um barril; precisamos de criar uma ligação simbólica para que o macOS java invólucro o possa encontrar.

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

2.6 Done.

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 E se tivermos múltiplas versões 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 o $PATH em ~/.zshrc, para que o macOS possa encontrar o Java correctamente 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)
p>$JAVA_HOME
Alternativamente, podemos definir a variável de ambiente $JAVA_HOME em macOS.

3. Os homebreus instalam um Java especificado (AdoptOpenJDK) em macOS.

A torneira adoptopenjdk/openjdk contendo muitas versões diferentes de JDK (AdoptOpenJDK).

3.1 Adicionar um novo tap (repositório de terceiros) adoptopenjdk/openjdk.

Terminal
% brew tap adoptopenjdk/openjdk

3.2 Relacionado com a pesquisa adoptopenjdk fórmula.

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 Escolhemos adoptopenjdk14 fórmula para instalar o 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 O adoptopenjdk fórmula cria a casa de JDK directamente no /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 a casa do JDK já está em /Library/Java/JavaVirtualMachines/, não precisamos de criar qualquer ligação simbólica, apenas exportar $PATH e apontar para o correcto adoptopenjdk-14.jdk.

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)
p>>Nota
Também leia este barril Switch adoptopenjdk para usar pkg #73145

4. Instalação manual de Java (Early-Access Builds) em macOS.

Por algumas razões, precisamos de instalar manualmente Java em macOS:

  • Anti-Homebraico, os programadores adoram controlar tudo.
  • A construção JDK não existe no repositório Homebrew, como as construções de acesso antecipado, ou Oracle JDK.

P.S Na altura da redacção, a construção do JDK de acesso antecipado é JDK 16.

4.1 Aceder ao website de construção do JDK 16 de acesso antecipado e descarregar o JDK.

instalar o jdk16 em macOS

4.2 Extrai o ficheiro descarregado tar.gz ficheiro para /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 Actualização $PATH e apontar para o /Library/Java/JavaVirtualMachines/jdk-16.jdk

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

4.4 Teste 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)

Done.

5. Alternar entre diferentes versões JDK

Do exemplo acima 1 para o exemplo 4, instalámos quatro versões JDK em macOS.

5.1 Listar todas as versões JDK em 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 Adicionar a função abaixo no ~/.zshrc (para macOS 10.15 Catalina, e acima) ou ~/.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 Criar o ficheiro ~/.zshrc se não existir.

5.3 Fonte o ficheiro ~/.zshrc para reflectir as alterações.

Terminal
% source ~/.zshrc

5.4 Mudar entre diferentes versões 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)

Further Reading
Como definir $JAVA_HOME variável de ambiente em macOS.

  • O que deve/não deve entrar em .zshenv, .zshrc, .zlogin, .zprofile, .zlogout?
  • Wikipedia macOS
  • Homebrew
  • AdoptOpenJDK – HomeBrew TAP
  • Como instalar Maven em Mac OSX
  • Zsh Startup Files
Tags : brew install jdk mac switch jdk zsh
author imageauthor image

mkyong

Founder of Mkyong.com, adoro Java e coisas de código aberto. Siga-o no Twitter. Se gostar dos meus tutoriais, considere fazer uma doação a estas instituições de caridade.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *