para - java powered
¿Cómo instalo Java en Mac OSX permitiendo el cambio de versión? (5)
Quiero instalar OpenJDK Java en Mac OSX y hacer que funcione junto con otros JDK ya que es una versión más reciente. Actualmente, descargué el archivo tar.gz y lo coloqué en mi camino, pero eso es difícil de mantener.
La única otra instalación que encontré que hace más cosas automáticamente es la instalación a través del barril Homebrew. Parece que solo la versión actual también:
brew cask info java
Muestra:
java: 12,33
https://jdk.java.net/
Así que puedo instalar desde allí, pero entonces, ¿qué? ¿Estoy atascado sólo con la nueva versión?
Actualización: A partir del 19 de marzo de 2019, el barril Homebrew ahora apunta a OpenJDK 12
Así es como lo hice.
Paso 1: Instalar Java 11
Puede descargar Java 11 dmg para mac desde aquí: https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html
Paso 2: Después de la instalación de Java 11. Confirme la instalación de todas las versiones. Escriba el siguiente comando en su terminal.
/usr/libexec/java_home -V
Paso 3: Editar .bash_profile
sudo nano ~/.bash_profile
Paso 4: Agrega 11.0.1 como predeterminado. (Agregue la línea inferior al archivo bash_profile).
export JAVA_HOME=$(/usr/libexec/java_home -v 11.0.1)
para cambiar a cualquier versión
export JAVA_HOME=$(/usr/libexec/java_home -v X.X.X)
Ahora presione CTRL + X para salir del bash. Presione ''Y'' para guardar los cambios.
Paso 5: Volver a cargar bash_profile
source ~/.bash_profile
Paso 6: Confirmar la versión actual de Java
java -version
En mi humilde opinión, no es necesario instalar todas las aplicaciones / paquetes adicionales.
Verifique las versiones disponibles usando el comando:
> /usr/libexec/java_home -V
Matching Java Virtual Machines (8):
11, x86_64: "Java SE 11-ea" /Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home
10.0.2, x86_64: "Java SE 10.0.2" /Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Home
9.0.1, x86_64: "Java SE 9.0.1" /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
1.8.0_181-zulu-8.31.0.1, x86_64: "Zulu 8" /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home
1.8.0_151, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home
1.7.0_80, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home
1.6.0_65-b14-468, x86_64: "Java SE 6" /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
1.6.0_65-b14-468, i386: "Java SE 6" /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Ahora, si desea seleccionar Azul JDK 8 en la lista anterior, y NO el Java SE 8 de Oracle, invoque el comando de la siguiente manera:
> /usr/libexec/java_home -v 1.8.0_181
/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home
Para elegir Java SE 8 de Oracle, debe invocar el comando:
> /usr/libexec/java_home -v 1.8.0_151
/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home
Como puede ver, el número de versión proporcionado será el conjunto único de cadenas: 1.8.0_181 vs 1.8.0_151
Otra alternativa es usar SDKMAN ! Consulte https://wimdeblauwe.wordpress.com/2018/09/26/switching-between-jdk-8-and-11-using-sdkman/
Primero instale SDKMAN: https://sdkman.io/install y luego ...
-
Instale Oracle JDK 8 con:
sdk install java 8.0.181-oracle
-
Instala OpenJDK 11 con:
sdk install java 11.0.0-open
Para cambiar:
-
Cambie a JDK 8 con
sdk use java 8.0.181-oracle
-
Cambie a JDK 11 con
sdk use java 11.0.0-open
Para establecer un valor predeterminado:
-
Predeterminado a JDK 8 con
sdk default java 8.0.181-oracle
-
Predeterminado a JDK 11 con
sdk default java 11.0.0-open
Cambio manual de la versión predeterminada del sistema sin herramientas de terceros:
Como se detalla en
esta respuesta anterior
, en macOS
/usr/bin/java
es una herramienta de envoltura que usará la versión de Java señalada por
JAVA_HOME
o si esa variable no está configurada buscará las instalaciones de Java en
/Library/Java/JavaVirtualMachines/
y utilizará el que tiene la versión más alta.
Determina las versiones al mirar
Contents/Info.plist
debajo de cada paquete.
Armado con este conocimiento usted puede:
-
controla qué versión utilizará el sistema cambiando el nombre de
Info.plist
en las versiones que no quieras usar como predeterminadas (ese archivo no es usado por el propio tiempo de ejecución de Java). -
controla qué versión usar para tareas específicas configurando
$JAVA_HOME
Acabo de verificar que esto sigue siendo cierto con OpenJDK y Mojave.
En un sistema completamente nuevo, no hay una versión de Java instalada:
$ java -version
No Java runtime present, requesting install.
Cancele esto, descargue OpenJDK 11 y 12ea en https://jdk.java.net/ ; instala OpenJDK11:
$ cd /Library/Java/JavaVirtualMachines/
$ sudo tar xzf ~/Downloads/openjdk-11.0.1_osx-x64_bin.tar.gz
El sistema java ahora es 11:
$ java -version
openjdk version "11.0.1" 2018-10-16
[...]
Instale OpenJDK12 (acceso temprano en este momento):
$ sudo tar xzf ~/Downloads/openjdk-12-ea+17_osx-x64_bin.tar.gz
El sistema java ahora es 12:
$ java -version
openjdk version "12-ea" 2019-03-19
[...]
Ahora "ocultemos" OpenJDK 12 del envoltorio java del sistema:
$ cd jdk-12.jdk/Contents/
$ sudo mv Info.plist Info.plist.disabled
El sistema java está de vuelta a 11:
$ java -version
openjdk version "11.0.1" 2018-10-16
[...]
Y aún puede usar la versión 12 puntualmente configurando manualmente
JAVA_HOME
:
$ export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home
$ java -version
openjdk version "12-ea" 2019-03-19
[...]
nota: estas soluciones funcionan para varias versiones de Java, incluidas Java 11 y la nueva Java 12, y para cualquier otra versión anterior de Java cubierta por los administradores de versiones enumerados. Esto incluye JDK alternativos de OpenJDK, Oracle, IBM, Azul, Amazon Correto, Graal y más. ¡Trabaja fácilmente con Java 7, Java 8, Java 9, Java 10, Java 11, Java 12 e incluso con acceso temprano a Java 13!
Tiene algunas opciones para realizar la instalación y para administrar el cambio de JDK.
La instalación se puede realizar por Homebrew,
SDKMAN
,
Jabba
o una instalación manual.
El cambio se puede realizar mediante
JEnv
,
SDKMAN
,
Jabba
o manualmente configurando
JAVA_HOME
.
Todos estos se describen a continuación.
Instalación
Primero, instale Java usando el método que prefiera, incluyendo Homebrew, SDKMAN o una instalación manual del archivo tar.gz. Las ventajas de una instalación manual es que la ubicación del JDK se puede colocar en una ubicación estandarizada para Mac OSX.
Instalar con SDKMAN
Este es un modelo simple porque maneja tanto la instalación como el cambio de versión, con la advertencia de que instala el JDK en un directorio no estándar.
< ver más abajo "Instalación y cambio de versiones con SDKMAN" >
Instalar utilizando Jabba
Este es también un modelo simple en el que tanto la instalación como el cambio de versión se manejan con la misma herramienta. Las instalaciones se realizan en un directorio no estándar.
< ver más abajo "Instalación y cambio de versiones con Jabba" >
Instalar manualmente desde la página de descarga de OpenJDK:
-
Descargue OpenJDK para Mac OSX desde http://jdk.java.net/
-
Desarchive el archivo OpenJDK tar, y coloque la carpeta resultante (es decir,
jdk-12.jdk
) en su carpeta/Library/Java/JavaVirtualMachines/
ya que esta es la ubicación estándar y esperada de las instalaciones de JDK. También puede instalar en cualquier lugar que desee en la realidad.
Instalar con Homebrew
La versión de Java disponible en Homebrew Cask anterior al 3 de octubre de 2018 era, de hecho, la JVM de Oracle. Ahora, sin embargo, ahora se ha actualizado a OpenJDK. Asegúrese de actualizar Homebrew y luego verá la última versión disponible para instalar.
-
Instala Homebrew si aún no lo has hecho. Asegúrese de que está actualizado:
brew update
-
Agregue el toque de casks, si aún no lo ha hecho (o ya no está viendo versiones anteriores de Java con el paso # 3):
brew tap homebrew/cask-versions
y para las versiones AdoptOpenJDK , agregue ese toque:
brew tap adoptopenjdk/openjdk
Estos barriles cambian sus versiones de Java a menudo, y puede haber otros toques con versiones de Java adicionales.
-
Busque versiones instalables:
brew search java
o para las versiones de AdoptOpenJDK:
brew search jdk
-
Compruebe los detalles sobre la versión que se instalará:
brew cask info java
o para la versión AdoptOpenJDK:
brew cask info adoptopenjdk
-
Instale una versión específica del JDK como
java11
,adoptopenjdk8
, o simplementejava
oadoptopenjdk
para laadoptopenjdk
actual. Por ejemplo:brew cask install java
También puede utilizar la ruta de acceso completa a las versiones anteriores:
brew cask install homebrew/cask-versions/java11
Y estos se instalarán en
/Library/Java/JavaVirtualMachines/
que es la ubicación tradicional esperada en Mac OSX.
Otras opciones de instalación:
Algunos otros sabores de openJDK son:
Las compilaciones de OpenJDK certificadas para Zulu de Azul Systems Java se pueden instalar siguiendo las instrucciones de su sitio .
Zulu® es una versión certificada de OpenJDK que cumple totalmente con el estándar Java SE. Zulu es 100% de código abierto y se puede descargar libremente. Ahora los desarrolladores de Java, los administradores de sistemas y los usuarios finales pueden disfrutar de todos los beneficios de Java de código abierto con flexibilidad de implementación y control sobre el tiempo de actualización.
Las compilaciones de Amazon Correto
OpenJDK tienen un paquete de instalación fácil de usar para la versión 8 o la versión 11 (vienen otras versiones), y se instala en el directorio estándar
/Library/Java/JavaVirtualMachines/
en Mac OSX.
Amazon Corretto es una distribución sin costo, multiplataforma y lista para producción del Open Java Development Kit (OpenJDK). Corretto viene con soporte a largo plazo que incluirá mejoras de rendimiento y soluciones de seguridad. Amazon ejecuta Corretto internamente en miles de servicios de producción y Corretto está certificado como compatible con el estándar Java SE. Con Corretto, puede desarrollar y ejecutar aplicaciones Java en sistemas operativos populares, incluidos Linux, Windows y macOS.
¿Dónde está mi JDK?!?!
Para encontrar ubicaciones de Java JDK instalados previamente en las ubicaciones predeterminadas del sistema, use:
/usr/libexec/java_home -V
Coincidencia de máquinas virtuales Java (5):
12, x86_64: "OpenJDK 12" /Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home
11, x86_64: "Java SE 11" /Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home
10.0.2, x86_64: "Java SE 10.0.2" /Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Home
9, x86_64: "Java SE 9" /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home
1.8.0_144, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
También puede informar solo la ubicación de una versión específica de Java usando
-v
.
Por ejemplo para Java 12:
/usr/libexec/java_home -v 12
/Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home
Conocer la ubicación de los JDK instalados también es útil al usar herramientas como JEnv, o agregar una instalación local a SDKMAN, o vincular un JDK de sistema en Jabba, y necesita saber dónde encontrarlos.
Si necesita encontrar JDK instalado por otras herramientas, verifique estas ubicaciones:
-
SDKMAN se instala en
~/.sdkman/candidates/java/
-
Jabba se instala en
~/.jabba/jdk
Cambio manual de versiones
El ejecutable de Java es un contenedor que utilizará cualquier JDK configurado en
JAVA_HOME
, por lo que puede cambiarlo para cambiar también qué JDK está en uso.
Por ejemplo, si instaló o descomprimió JDK 12 en
/Library/Java/JavaVirtualMachines/jdk-12.jdk
si es el número de versión más alto, ya debería ser el predeterminado, si no, simplemente puede configurar:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home
Y ahora, cualquiera que sea el ejecutable de Java en la ruta, verá esto y usará el JDK correcto.
El uso de la utilidad
/usr/libexec/java_home
como se describió anteriormente le ayuda a crear alias o ejecutar comandos para cambiar las versiones de Java mediante la identificación de las ubicaciones de diferentes instalaciones de JDK.
Por ejemplo, creando alias de shell en su
.profile
O
.profile
para cambiar
JAVA_HOME
por usted:
export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_9_HOME=$(/usr/libexec/java_home -v9)
export JAVA_10_HOME=$(/usr/libexec/java_home -v10)
export JAVA_11_HOME=$(/usr/libexec/java_home -v11)
export JAVA_12_HOME=$(/usr/libexec/java_home -v12)
alias java8=''export JAVA_HOME=$JAVA_8_HOME''
alias java9=''export JAVA_HOME=$JAVA_9_HOME''
alias java10=''export JAVA_HOME=$JAVA_10_HOME''
alias java11=''export JAVA_HOME=$JAVA_11_HOME''
alias java12=''export JAVA_HOME=$JAVA_12_HOME''
# default to Java 12
java12
Luego para cambiar las versiones, solo usa el alias.
java8
java -version
versión java "1.8.0_144"
Por supuesto, ¡configurar
JAVA_HOME
manualmente también funciona!
Cambio de versiones con JEnv
JEnv
espera que los JDK de Java ya existan en la máquina y puedan estar en cualquier ubicación.
Por lo general, encontrará Java JDK instalados en
/Library/Java/JavaVirtualMachines/
.
JEnv permite configurar la versión global de Java, una para el shell actual, y una versión local por directorio que es útil cuando algunos proyectos requieren versiones diferentes a otras.
-
Instale JEnv si aún no lo ha hecho, instrucciones en el sitio JEnv para la instalación manual o el uso de Homebrew.
-
Agregue cualquier versión de Java a JEnv ( ajuste el directorio si lo colocó en otro lugar ):
jenv add /Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home
-
Configure su versión global usando este comando:
jenv global 12
También puede agregar otras versiones existentes usando
jenv add
de una manera similar, y enumerar las que están disponibles.
Por ejemplo Java 8:
jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
jenv versions
Ver los documentos JEnv para más comandos. Ahora puede cambiar entre cualquier versión de Java (Oracle, OpenJDK, otra) en cualquier momento, ya sea para todo el sistema, para shells o por directorio local.
Para ayudar a administrar
JAVA_HOME
mientras usa JEnv, puede agregar el
complemento de exportación
para que lo haga por usted.
$ jenv enable-plugin export
You may restart your session to activate jenv export plugin echo export plugin activated
Es posible que el complemento de exportación no ajuste
JAVA_HOME
si ya está configurado, por lo que es posible que deba borrar esta variable en su perfil para que JEnv pueda administrarla.
También puede usar
jenv exec <command> <parms...>
para ejecutar comandos individuales con
JAVA_HOME
y
PATH
configurados correctamente para ese comando, que podría incluir abrir otro shell.
Instalar y cambiar versiones con SDKMAN
SDKMAN
es un poco diferente y maneja tanto la instalación como la conmutación.
SDKMAN también coloca los JDK instalados en su propio árbol de directorios, que suele ser
~/.sdkman/candidates/java
.
SDKMAN permite configurar una versión predeterminada global y una versión específica del shell actual.
-
Instale SDKMAN desde https://sdkman.io/install
-
Instale Java 12 utilizando SDKMAN:
sdk install java 12.0.0-open
-
Haz de 12 la versión por defecto:
sdk default java 12.0.0-open
O cambia a 12 para la sesión:
sdk use java 12.0.0-open
Puede listar las versiones disponibles para la instalación usando el comando list:
sdk list java
E instale versiones adicionales, como JDK 8:
sdk install java 8.0.181-oracle
SDKMAN puede trabajar con versiones existentes instaladas previamente. Solo realice una instalación local con su propia etiqueta de versión y la ubicación del JDK:
sdk install java my-local-12 /Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home
Y úsalo libremente:
sdk use java my-local-12
Puede encontrar más información en la Guía de uso de SDKMAN junto con otros SDK que puede instalar y administrar.
SDKMAN administrará automáticamente su
PATH
y
JAVA_HOME
por usted cuando cambie las versiones.
Instalar y cambiar versiones con Jabba
Jabba
también maneja tanto la instalación como la conmutación.
Jabba también coloca los JDK instalados en su propio árbol de directorios, que suele ser
~/.jabba/jdk
.
-
Instale Jabba siguiendo las Jabba .
-
Lista disponible de JDK''s
jabba ls-remote
-
Instalar Java JDK 12
jabba install [email protected]
-
Úsalo:
jabba use [email protected]
También puede asignar alias a los nombres de las versiones, vincular a los JDK existentes ya instalados y encontrar una combinación de JDK interesantes como GraalVM, Adopt JDK, IBM JDK y más. La guía de uso completa también está disponible en la página de inicio.
Jabba administrará automáticamente tu
PATH
y
JAVA_HOME
por ti cuando cambies de versión.