219 votes

Java/JDK pour la puce Apple M1

Y aura-t-il besoin d'une version spéciale d'OpenJDK pour prendre en charge le nouveau chip Apple M1 ?

Je vois qu'il existe actuellement des téléchargements du JDK pour macOS/OS X, mais ceux-ci semblent être uniquement pour les processeurs x86. Est-ce correct ? Si oui, où puis-je télécharger une version d'OpenJDK pour le M1 ?

2 votes

J'ai suivi la vidéo youtube pour l'installation du JDK, youtube.com/watch?v=pZjGom2qTEA. Cela fonctionne.

3 votes

Les versions natives Apple/Arm64 sont maintenant disponibles sur brew, vous devriez donc pouvoir simplement exécuter brew install java, à condition d'installer brew nativement sans utiliser Rosetta 2.

122voto

rzwitserloot Points 434

Oui.

Sur cette page : Dernières versions d'AdoptOpenJDK, vous pouvez sélectionner 'macOS' dans le menu déroulant 'Système d'exploitation', puis dans 'Architecture', il n'y a actuellement que x64, mais bientôt il devrait y avoir AArch64 ou ARM64 (ce sont généralement les codes abrégés pour ARM 64 bits). Puisque Apple a sans aucun doute beaucoup d'extensions intégrées à leurs conceptions M1, et Apple obtient les siennes.

Si vous laissez plutôt le Système d'exploitation sur 'tout', vous remarquerez aarch64 est là, et cela vous mène à une version Linux pour les processeurs ARM. Cela (probablement) ne fonctionnera pas sous macOS sur du matériel M1, mais c'est déjà 95% du travail effectué.

Donc : Ce n'est pas encore là, mais notez que les JDK pour ARM sont disponibles depuis plus d'une décennie, et même si le JDK 15 a abandonné le support pour plusieurs combinaisons exotiques OS/architecture (comme Solaris), le développement ARM est toujours resté au moins en partie pertinent (même s'il s'agit surtout d'une offre de licence commerciale d'Oracle). Autrement dit : cela ne devrait pas être un effort herculéen de créer une version d'adoptopenjdk qui s'exécute nativement sur les M1, donc vraisemblablement, cela arrivera. Mais, c'est un effort open source, donc si vous êtes impatient, n'hésitez pas à vous renseigner et à contribuer :)

Apple n'a donné aucun détail sur cette architecture jusqu'au 10 novembre 2020, sauf si vous avez acheté une boîte de kit de développement pour celle-ci (un Mac Mini avec une puce A14, qui n'est pas une puce M1, mais assez proche je suppose), et signé un gros NDA.

En règle générale, les projets open source fuiront aussi vite que possible si vous agitez un NDA, donc si vous n'appréciez pas cette situation, je ne pense pas qu'il est sage de se plaindre à adoptopenjdk ou à d'autres empaqueteurs et projets open source à ce sujet :)

Heureusement, maintenant que c'est public, un NDA n'est plus nécessaire. Mon hypothèse est que la branche ARM du code source OpenJDK + les éléments macOS qui existent déjà pour la version x64 de macOS peuvent être combinés assez facilement une fois qu'une personne ayant une certaine connaissance du code source OpenJDK a un système macOS basé sur M1 pour le tester, ce qui signifie qu'une version adoptopenjdk macos-aarch64 devrait être disponible d'ici le mois prochain.

Mais, open source. Vous ne les avez pas payés, vous n'avez pas de contrat, et ils ne vous le doivent pas. Faites un don à l'effort ou contribuez par une pull request si vous voulez que ça aille plus vite.

MISE À JOUR :

  • Versions d'Azul d'OpenJDK pour M1
  • Le dépôt source de Microsoft (oui, vraiment) sur GitHub pour une version anticipée d'OpenJDK16 pour macOS sur AArch64. Notez que Microsoft travaille sur la branche AArch64 d'OpenJDK (pour Windows 10 basé sur ARM) depuis un certain temps, ce qui remonte à : Une grande partie du travail a déjà été effectuée.

1 votes

Merci ! , Pour information bugs.openjdk.java.net/browse/JDK-8251280

1 votes

Il s'agit actuellement seulement d'un JEP.

3 votes

Exécuter gradle n'a pas fonctionné sur la version de prévisualisation de Microsoft. Je l'ai signalé ici github.com/openjdk/aarch64-port/issues/8

117voto

tresf Points 1300

Une approche en ligne de commande (grâce à l'équipe Homebrew et au travail acharné de @vladimir-kempik et d'autres contributeurs openjdk sur la branche JEP-391)

# Installer Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Installer OpenJDK
brew install openjdk

Vérifiez qu'il est installé:

$(brew --prefix openjdk)/bin/java --version

Vérifiez qu'il est pour le matériel arm64:

file $(brew --prefix openjdk)/bin/java
# /opt/homebrew/opt/openjdk/bin/java: Mach-O executable 64 bits arm64

Remarque: Pour installer OpenJDK de manière globale, suivez les instructions à l'écran fournies par Homebrew.

3 votes

C'était la bonne réponse

13 votes

Cela fonctionne également pour Java 11 sans aucun problème brew install openjdk@11 et file $(brew --prefix openjdk@11)/bin/java - Apple MacBook Pro 2021 - M1 Pro (10 Cores) - utiliser Homebrew est pour moi l'option préférable par rapport aux autres approches

3 votes

OpenJDK 17 est la première version officiellement prise en charge de Java pour l'architecture M1.

48voto

Ming-Yee Iu Points 304

Azul propose des versions ARM macOS d'OpenJDK sur leur site web dans la section Téléchargements. Je ne les ai pas encore essayées, mais Azul est depuis longtemps un développeur de JDK.

Une fois que vous avez décompressé le JDK Azul, vous devez fouiller à l'intérieur jusqu'à trouver le répertoire zulu-11.jdk (en supposant que vous avez téléchargé JDK 11), que vous devrez ensuite copier dans /Library/Java/JavaVirtualMachines.

5 votes

J'ai téléchargé leur .dmg et cela a simplement fonctionné - pas besoin de copier quoi que ce soit.

0 votes

*.dmg version ne nécessite aucune copie, vous pouvez télécharger celle en *.zip

24voto

Phan Van Linh Points 16963
brew install openjdk

Dans mon cas, après avoir installé OpenJDK avec succès sur MacBook Air (M1), la commande java ne fonctionnait toujours pas. Je l'ai résolu en

brew info openjdk

Ensuite, il y a une commande comme

Pour que les wrappers Java système trouvent ce JDK, créez un lien symbolique avec
  sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk

Exécutez cette commande et la commande java fonctionnera.

22voto

Boris Azanov Points 3167

Vous pouvez installer le JDK Java en utilisant sdkman (voir sdkman install):

vim .sdkman/etc/config

Définissez sdkman_rosetta2_compatible=false (voir sdkman config)

Après cela, vous verrez une liste des JDK compatibles avec M1:

sdk list java

================================================================================
Available Java Versions
================================================================================
 Vendor        | Use | Version      | Dist    | Status     | Identifier
--------------------------------------------------------------------------------
 Azul Zulu     |     | 16.0.1       | zulu    |            | 16.0.1-zulu
               |     | 11.0.11      | zulu    |            | 11.0.11-zulu
               |     | 8.0.292      | zulu    |            | 8.0.292-zulu
 BellSoft      |     | 16.0.1       | librca  |            | 16.0.1-librca
               |     | 11.0.11      | librca  |            | 11.0.11-librca
               |     | 8.0.292      | librca  |            | 8.0.292-librca
 Java.net      |     | 18.ea.3      | open    |            | 18.ea.3-open
               |     | 18.ea.2      | open    |            | 18.ea.2-open
               |     | 18.ea.1      | open    |            | 18.ea.1-open
               |     | 17.ea.28     | open    |            | 17.ea.28-open
               |     | 17.ea.27     | open    |            | 17.ea.27-open
               |     | 17.ea.26     | open    |            | 17.ea.26-open
               |     | 17.ea.25     | open    |            | 17.ea.25-open
================================================================================

Choisissez-en un et installez-le en utilisant la commande sdk install java IDENTIFIER, c'est-à-dire :

sdk install java 8.0.292-zulu

0 votes

"compatbile" (dans sdkman_rosetta2_compatbile) semble être une faute d'orthographe (véritable typo) de "compatible". Êtes-vous sûr que cela s'écrit ainsi ?

0 votes

@PeterMortensen vous avez raison, c'était une faute de frappe dans ma réponse, je la corrige

0 votes

N'oubliez pas de mettre à jour JAVA_HOME, par exemple export JAVA_HOME=/Users//.sdkman/candidates/java/current

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X