Java/JDK para los chips Apple Silicon

9 minutos de lectura

Avatar de usuario de Thar
Thar

¿Será necesario que haya un lanzamiento especial de OpenJDK para apoyar el nuevo silicio de manzana ¿papas fritas?

Veo que actualmente hay descargas de JDK para macOS/OS X, pero parece que solo son para procesadores x86. ¿Es eso correcto? Si es así, ¿dónde puedo descargar una versión de OpenJDK para M1?

  • Seguí el video de youtube para la instalación de JDK, youtube.com/watch?v=pZjGom2qTEA. Está funcionando.

    – jrhamza

    24 de diciembre de 2020 a las 18:54


  • Las versiones nativas de Apple/Arm64 ahora están disponibles en brewpor lo que deberías poder hacer brew install javasiempre que instale brew de forma nativa sin usar Rosetta 2.

    – Josué Pinter

    17 de enero a las 17:24

avatar de usuario de tresf
tresf

Un enfoque de línea de comandos (gracias a la Cerveza casera equipo y el arduo trabajo de @vladimir-kempik y otros colaboradores de openjdk en el JEP-391 rama)

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

# Install OpenJDK
brew install openjdk

Verifica que esté instalado:

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

Verifique que sea para el hardware arm64:

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

Nota: Para instalar OpenJDK en todo el sistema, siga las instrucciones en pantalla proporcionadas por Homebrew.

  • esta era la respuesta correcta

    – mesqueeb

    13 de noviembre de 2021 a las 11:13

  • esto también funciona para java 11 sin ningún problema brew install [email protected] y file $(brew --prefix [email protected])/bin/java – Apple MacBook Pro 2021 – M1 Pro (10 núcleos): para mí, usar homebrew es la opción preferible a otros enfoques

    – flohall

    9 dic 2021 a las 10:35


  • OpenJDK 17 es la primera versión de Java que admite oficialmente la arquitectura M1

    – Janos Vincentler

    6 ene a las 19:55

  • $(preparar –prefijo openjdk)/bin/java –version. esto funciona pero java –version no funciona… Supongo que necesito configurar el inicio de java, ¿verdad?

    – Señor A

    8 de enero a las 4:38

  • @JustinFuruness si JAVA_HOME es un requisito difícil, usted puede hacer export JAVA_HOME="$(brew --prefix openjdk)/libexec/openjdk.jdk/Contents/Home" a pesar de que brew info openjdk contiene instrucciones para configurar el sistema para encontrarlo, citando: For the system Java wrappers to find this JDK, symlink it with... (el comando exacto es específico para su sistema, impreso por Homebrew).

    – tresf

    28 de enero a las 3:10


avatar de usuario de rzwitserlot
rzwitserloot

Sí.

En esta página: Últimas versiones de AdoptOpenJDK puede seleccionar ‘macOS’ en el menú desplegable ‘Sistema operativo’, y luego en ‘Arquitectura’, actualmente es solo x64, pero pronto debería haber AArch64 o ARM64 (esos son generalmente los códigos abreviados para ARM de 64 bits). Posiblemente, ya que Apple sin duda tiene un montón de extensiones integradas en sus diseños M1, y Apple obtiene las suyas propias.

Si, en cambio, deja Sistema operativo en ‘cualquiera’, notará que aarch64 está allí, y esto lo lleva a una versión de Linux para procesadores ARM. Eso (probablemente) no se ejecutará en macOS en hardware M1, pero eso es el 95% del trabajo ya realizado.

Entonces: aún no está allí, pero tenga en cuenta que los JDK para ARM han estado disponibles durante más de una década, y aunque JDK 15 ha dejado de admitir un montón de combinaciones exóticas de SO/arquitectura (como Solaris), el desarrollo de ARM siempre se ha mantenido al menos parcialmente relevante (incluso si hasta ahora es principalmente una oferta de licencia comercial de Oracle). Es decir: no debería ser un esfuerzo hercúleo crear una versión de adoptopenjdk que se ejecute en M1 de forma nativa, por lo que, presumiblemente, sucederá. Pero es un esfuerzo de código abierto, así que si estás ansioso, por supuesto, lee y contribuye 🙂

Apple no ha dado ningún detalle sobre esta arquitectura hasta el 10 de noviembre de 2020, a menos que haya comprado una caja de kit de desarrollo para ella (un macmini con un chip A14, que no es un chip M1, pero supongo que lo suficientemente parecido), y firmó un gran NDA.

Como regla general, los proyectos de código abierto se ejecutarán lo más rápido posible en la dirección opuesta si agita un NDA, por lo que si no le gusta este estado de cosas, no creo que sea prudente quejarse de adoptopenjdk u otros empaquetadores y código abierto. proyectos al respecto 🙂

Afortunadamente, ahora está fuera y ya no se requiere un NDA. Mi suposición es que la rama ARM del código fuente de OpenJDK + los bits de macOS que ya existen para la versión macOS x64 se pueden combinar con bastante facilidad una vez que alguien familiarizado con el código fuente de OpenJDK tiene un sistema macOS basado en M1 para probarlo. , lo que debería significar que debería haber una versión de adoptopenjdk macos-aarch64 dentro de un mes.

Pero, de código abierto. No les pagaste, no tienes contrato y no te lo deben. Done al esfuerzo o contribuya con una solicitud de extracción si desea que sea más rápido.

ACTUALIZAR:

  • Construcciones M1 OpenJDK de Azul
  • Microsoft (sí, en serio) repositorio fuente de GitHub para una compilación OpenJDK16 de acceso anticipado para macOS en AArch64. Tenga en cuenta que Microsoft ha estado trabajando en la rama OpenJDK de AArch64 (para Windows 10 basado en ARM) durante un tiempo, lo que se remonta a: Gran parte del trabajo duro ya estaba hecho.

  • ¡Gracias! , para su información bugs.openjdk.java.net/browse/JDK-8251280

    – Thar

    11 de noviembre de 2020 a las 14:21


  • Ejecutar gradle no funcionó en la versión preliminar de Microsoft. Lo reporté aquí github.com/openjdk/aarch64-port/issues/8

    –Felipe Lima

    25 de noviembre de 2020 a las 5:49

  • Esta publicación dice “pronto”, pero han pasado 9 meses y los enlaces de Adoptar no son más útiles que cuando se publicaron originalmente. los aarch64 La explicación es útil, ya que no es obvio para la mayoría de los usuarios de M1 que estos términos son sinónimos, pero ese primer enlace aún no es útil y debe editarse hasta que el equipo de Adoptium pueda producir artefactos de M1.

    – tresf

    17 de agosto de 2021 a las 16:07

  • Tenga en cuenta que el proyecto OpenJDK se ha trasladado a Eclipse Fondation y ahora el nuevo sitio web es: https://adoptium.net

    – jpmottin

    3 de diciembre de 2021 a las 19:14

  • “Soonish” finalmente está aquí. El proyecto Adoptium publicó recientemente su primera versión M1 para Java 17. adoptium.net/….

    – tresf

    17 de diciembre de 2021 a las 3:05


Avatar de usuario de Ming-Yee Iu
Ming Yee Iu

azules está ofreciendo compilaciones macOS ARM de OpenJDK en su sitio web en el Descargas sección. Sin embargo, aún no los he probado, pero Azul ha sido desarrollador de JDK durante mucho tiempo.

Una vez que desempacas el Azul JDK, tienes que hurgar en su interior hasta encontrar el zulu-11.jdk directorio (suponiendo que haya descargado JDK 11), que luego copia a /Library/Java/JavaVirtualMachines.

  • descargué su .dmg y simplemente funcionó, no es necesario copiarlo

    – Renaud

    6 de febrero de 2021 a las 0:09

  • La versión *.dmg no requiere copia, puede descargar la versión *.zip

    – omzer

    12 de febrero de 2021 a las 14:27


Avatar de usuario de Linh
Linh

brew install openjdk

En mi caso, después de instalar OpenJDK exitosamente en MacBook Air (M1)la java comando todavía no funcionó. lo arreglé por

brew info openjdk

Luego hay un comando como

For the system Java wrappers to find this JDK, symlink it with
  sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk

Ejecute este comando y el java el comando funciona.

Avatar de usuario de Boris Azanov
boris azanov

Puede instalar Java JDK utilizando sdkman (ver instalar sdkman):

vim .sdkman/etc/config

Establecer sdkman_rosetta2_compatible=false (ver configuración de sdkman)

Después de eso, verá una lista de JDK compatibles con 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
================================================================================

Elija uno e instálelo usando el comando sdk install java IDENTIFIERes decir:

sdk install java 8.0.292-zulu

  • “compatible” (en sdkman_rosetta2_compatbile) parece una falta de ortografía (error tipográfico verdadero) de “compatible”. ¿Estás seguro de que se escribe así?

    -Peter Mortensen

    15 de noviembre de 2021 a las 22:01


  • @PeterMortensen tienes razón, esto fue un error tipográfico en mi respuesta, lo arreglo

    – Borís Azanov

    16 de noviembre de 2021 a las 13:03

  • no olvides actualizar JAVA_HOME, por ejemplo export JAVA_HOME=/Users/<username>/.sdkman/candidates/java/current

    – Lingster

    30 de junio a las 5:11

Ahora, OpenJDK 17 de Oracle es compatible con el chip Apple M1. El estado de la JP 391 está cerrado y entregado.

Puede descargar la compilación gratuita de código abierto macOS/AArch64 del JDK, versión 17 desde el página web oficial.

  • “compatible” (en sdkman_rosetta2_compatbile) parece una falta de ortografía (error tipográfico verdadero) de “compatible”. ¿Estás seguro de que se escribe así?

    -Peter Mortensen

    15 de noviembre de 2021 a las 22:01


  • @PeterMortensen tienes razón, esto fue un error tipográfico en mi respuesta, lo arreglo

    – Borís Azanov

    16 de noviembre de 2021 a las 13:03

  • no olvides actualizar JAVA_HOME, por ejemplo export JAVA_HOME=/Users/<username>/.sdkman/candidates/java/current

    – Lingster

    30 de junio a las 5:11

Avatar de usuario de Peter Mortensen
Pedro Mortensen

Estoy desarrollando con éxito aplicaciones Java en el nuevo chip Apple M1 con Azul OpenJDK y NetBeans.

Configuración:

  • zulu16.0.65-ea-jdk16.0.0-ea.24-macos_aarch64
  • NetBeans 12.1 y Maven.

  • Hola, ¿puedo preguntar si Jenkins está funcionando bien y cómo obtuviste el soporte para maven? Gracias

    – L m

    3 de diciembre de 2020 a las 18:34


  • Hola, todavía es pronto y hay muchos paquetes de código abierto que no son compatibles con el chip. No he instalado Jenkins en este momento, y los paquetes maven que he probado hasta ahora no han presentado ningún problema, sin duda habrá algunos que lo harán. Actualmente, como la mayoría de las personas, estoy explorando solamente;

    usuario14679771

    4 de diciembre de 2020 a las 21:37


  • ¿Estás usando la ventana acoplable? No puedo encontrar una imagen acoplable de Azul OpenJDK para arm64.

    – jinglert

    10 de febrero de 2021 a las 23:09

  • No he usado Docker para el entorno de desarrollo.

    usuario14679771

    12 de febrero de 2021 a las 2:00


  • Una vez que instalo Azul OpenJDK, ¿cómo puedo ejecutar un archivo jnlp? Parece que no es posible, ya que no hay javaws binario.

    – ginebra

    4 de marzo de 2021 a las 18:28

¿Ha sido útil esta solución?