Comment installer Java JDK sur macOS

image de l'auteur
By mkyong | Dernière mise à jour : 19 janvier 2021
Vu : 93 094 | +3 924 pv/w

Cet article montre comment installer Java JDK sur macOS, le gestionnaire de paquets Homebrew, l’installation manuelle et le passage entre différentes versions de JDK.

Testé avec

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

Thèmes

  1. Homebrew installe la dernière version de Java (OpenJDK) sur macOS
  2. Homebrew installe Java 8 (OpenJDK) sur macOS
  3. Homebrew installe un Java spécifié (AdoptOpenJDK) sur macOS
  4. Installation manuelle de Java (Early-Access Builds) sur macOS
  5. Commutation entre différentes versions de JDK

P.S Au moment de la rédaction, le dernier JDK GA est le JDK 15, et la build d’accès anticipé est le JDK 16.

Note
Depuis macOS 10.15 Catalina, le shell par défaut du Terminal passe de bash (Bourne-again shell) à zsh (Z shell). Et nous devons déplacer tous les scripts de démarrage et les variables d’environnement dans ~/.bash_profile ou ~/.bashrc vers ~/.zshenv ou ~/.zshrc.

Aussi, lisez ce fichier de démarrage de Zsh.

1. Homebrew installer le dernier Java sur macOS

1.1 Installer et mettre à niveau Homebrew.

1.2 brew search java pour trouver toutes les formules disponibles liées à Java.

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

1.3 brew info pour afficher les détails de la formule.

La formule java contient toujours la dernière version du GA du Java JDK (OpenJDK) ; au moment de la rédaction de cet article, le dernier GA est le 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 java11 formule contient la version 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 pour installer le dernier JDK 15.

Terminal
% brew info java

1.5 Où Homebrew installe-t-il la java ?
Homebrew a installé les fichiers et répertoires du JDK à /usr/local/Cellar/openjdk/, et le lien symbolique à /usr/local/opt/openjdk pointe vers la dernière version 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 formule java est keg-only, ce qui signifie qu’elle est installée dans /usr/local/Cellar mais qu’elle n’est pas liée à des endroits comme /usr/local/bin ou /Library/Java/JavaVirtualMachines/ (macOS /usr/bin/java wrapper).

Pour que le wrapper macOS /usr/bin/java trouve le JDK installé, nous créons manuellement un lien symbolique à /Library/Java/JavaVirtualMachines/.

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

1.7 Fait.

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 installer Java 8 sur macOS

2.1 Installer et mettre à jour Homebrew.

2.2 Le brew search java n’a pas de java8 ?

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

2.3 Le Java 8 est disponible à la openjdk@8 formule. La openjdk est la même que la formule java, et elle contient toujours la dernière version du JDK GA ; la openjdk@11 est la même que la formule java11, contenant le JDK 11.

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

2.4 Nous pouvons utiliser la formule openjdk@8 pour installer Java 8 sur macOS.

Terminal
% brew install openjdk@8

2.5 Le openjdk@8 est également un keg-only ; nous devons créer un lien symbolique pour que le wrapper macOS java puisse le trouver.

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

2.6 Fait.

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 Que faire si nous avons plusieurs versions de Java installées ?

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

Nous pouvons mettre à jour le $PATH~/.zshrc, afin que le macOS puisse trouver le bon Java installé.

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
Alternativement, nous pouvons définir la $JAVA_HOME variable d’environnement sur macOS.

3. Homebrew installe un Java spécifié (AdoptOpenJDK) sur macOS.

Le robinet adoptopenjdk/openjdk contenant un grand nombre de versions différentes de JDK (AdoptOpenJDK).

3.1 Ajouter un nouveau tap (dépôt tiers) adoptopenjdk/openjdk.

Terminal
% brew tap adoptopenjdk/openjdk

3.2 On recherche la formule adoptopenjdk connexe.

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 Nous choisissons la adoptopenjdk14 formule pour installer le 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 formule adoptopenjdk crée le home JDK directement dans le /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 Puisque le home JDK se trouve déjà dans /Library/Java/JavaVirtualMachines/, nous n’avons pas besoin de créer de lien symbolique, il suffit d’exporter $PATH et de le faire pointer vers la bonne 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)

Note
Lisez aussi ce Switch adoptopenjdk cask pour utiliser le pkg #73145

4. Installation manuelle de Java (Builds à accès anticipé) sur macOS.

Pour certaines raisons, nous devons installer Java sur macOS manuellement :

  • Anti-Homebrew, les développeurs aiment tout contrôler.
  • La build JDK n’existe pas dans le dépôt Homebrew, comme les early-access builds, ou Oracle JDK.

P.S Au moment de la rédaction de cet article, la build JDK en accès anticipé est le JDK 16.

4.1 Accédez au site web de la build JDK 16 en accès anticipé et téléchargez le JDK.

installer jdk16 sur macOS

4.2 Extraire le fichier téléchargé tar.gz vers /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 Mettez à jour $PATH et pointez sur le /Library/Java/JavaVirtualMachines/jdk-16.jdk

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

4.4 Tester le 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)

Fait.

5. Basculer entre les différentes versions de JDK

De l’exemple 1 à l’exemple 4 ci-dessus, nous avons installé quatre versions de JDK sur macOS.

5.1 Lister toutes les versions de JDK sur 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 Ajouter la fonction ci-dessous dans le ~/.zshrc (pour macOS 10.15 Catalina, et plus) ou ~/.bashrc (avant macOS 10.15 Catalina).

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

P.S Créez le fichier ~/.zshrc s’il n’existe pas.

5.3 Sourcez le ~/.zshrc pour refléter les changements.

Terminal
% source ~/.zshrc

5.4 Basculer entre différentes versions de 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)

Lecture complémentaire
Comment définir la $JAVA_HOME variable d’environnement sur macOS.

  • Qu’est-ce qui doit/ne doit pas aller dans .zshenv, .zshrc, .zlogin, .zprofile, .zlogout ?
  • Wikipedia macOS
  • Homebrew
  • AdoptOpenJDK – HomeBrew TAP
  • Comment installer Maven sur Mac OSX
  • Fichiers de démarrage de Zsh
Tags : brew install jdk mac switch jdk zsh
image de l'auteur

mkyong

Fondateur de Mkyong.com, adore Java et les trucs open source. Suivez-le sur Twitter. Si vous aimez mes tutoriels, pensez à faire un don à ces organismes de bienfaisance.

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *