Versiones de Java y cómo no confundirse con ellas.

Versiones de Java y cómo no confundirse con ellas.

Soy consciente de que existen el JRE y la JVM. También he programado en Java, por lo que no soy un principiante total. Sin embargo, últimamente me estoy confundiendo mucho y agradecería una respuesta actual a mi pregunta.

¿Qué versión de JRE y JVM tengo y cuál es la más reciente?

Ahora antes de tener ganas de decirme "googlealo", ya lo busqué en Google. De ahí mi confusión.

En elpágina de inicio de javadice:

En la pestaña General del Panel de control de Java, la versión está disponible a través de la sección Acerca de. Aparece un cuadro de diálogo (después de hacer clic en Acerca de) que muestra la versión de Java.

Bueno, hice eso y tengo la Versión 8 Update71.

en esa página de inicio también dice:

El JRE y el JDK están separados y pueden coexistir en su sistema. Solo se puede instalar un JRE en Mac. Puede haber varios JDK instalados en un sistema, tantos como desee.

Muy bien, eso ya lo sé. Entonces hago lo que dicen para obtener la versión del terminal y obtengo

java -version
java version "1.8.0_71"
Java(TM) SE Runtime Environment (build 1.8.0_71-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.71-b15, mixed mode)

Muy bien, parece lo mismo. Entonces ahora viene la pregunta:

¿Qué versión tengo? Quiero decir, ¿la versión 8 es la versión JRE? ¿O es la versión JVM? En la página de inicio aunque los distinguen (como la cita), la instrucción para obtener la versión es¡lo mismo!

Para complicar aún más las cosas, voy aWikipediay ahí dice que las versiones soportadas actualmente son Java 8 y Java 11. ¿Por qué dos? ¿Y qué pasó con el 9 y el 10? Y nuevamente, ¿son estos JRE o JVM?

¿Alguien puede explicarme esto?

Respuesta1

Me parece que tus preguntas están respondidas en el mismo artículo de Wikipedia:

Java 8 y Java 11 son los soportados actualmenteSoporte a largo plazo(LTS) y Java 10 es la versión de lanzamiento rápido compatible anterior. El soporte de Java 10 finalizó en la misma fecha en que comenzó el soporte de Java 11, en septiembre de 2018. Java 7 ya no tiene soporte público, Java 9 dejó de recibir actualizaciones. dado que Java 9 era una versión de lanzamiento rápido a corto plazo que fue reemplazada por Java 10, y el "fin de las actualizaciones públicas" para Java 8 está programado para enero de 2019 para uso comercial, y no antes de diciembre de 2020 para uso no comercial. Para Java 11, Oracle no proporcionará soporte a largo plazo; en cambio, se espera que la comunidad OpenJDK más amplia, como AdoptOpenJDK, realice el trabajo.

Así que las versiones 9 y 10 duraron poco. Supongo que fueron medidas provisionales que se implementaron apresuradamente en respuesta a graves errores de seguridad.

La versión 8 es la última versión que aún admite Oracle y está dividida en JDK y JRE. La versión 11 parece haber eliminado esta división y tener sólo una versión JDK unificada basada en OpenJDK, por lo que podría no tener las mejoras de rendimiento que se encuentran en la versión paga de Java de Oracle.

Para encontrar qué versiones tienes en Linux, supongo que puedes consultar los paquetes instalados.

En Windows, puede encontrar esa información en el registro de 32 y 64 bits en:

  • HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\JavaSoft
  • HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft

También puede encontrar esa información enPanel de control > Java (32 bits)o Panel de control > Java (64 bits):

ingrese la descripción de la imagen aquí

Respuesta2

Estás confundiendo algunos de los términos y estás en una Mac donde Oracle también ha confundido algunos de ellos.

Creo que hay 4 cosas diferentes.

  1. JVM (Máquina virtual Java) se encuentra en todas las versiones de Java y es el ejecutable que ejecuta los archivos de clase compilados de Java. No se puede descargar directamente pero forma parte de los otros 3 elementos. java -version muestra la versión que estás utilizando.

  2. JDK (kit de desarrollo de Java) Esta es la instalación que necesita si está escribiendo programas. Incluye el compilador y otras herramientas. Para macOS con versiones de Oracle, esta es la única descarga que proporciona un entorno que se puede iniciar mediante /usr/bin/java

  3. JRE (entorno de ejecución de Java). En las versiones de Java de Windows, Linux y Apple, esto proporciona la selección mínima de archivos necesarios para ejecutar un programa Java desde la línea de comandos. No parece existir como parte de una versión de Oracle macOs. Sin embargo, este es el entorno de ejecución Java (TM) SE que se muestra según la versión de Java.

  4. JRE (Java Runtime Environment) en macOS. De Oracle este es el entorno que ejecuta los subprogramas de Java en su navegador. Este es el JRE del que solo puedes tener uno en tu Mac. Este también es el que ve y actualiza el panel de control de Java en Preferencias del Sistema.

Entonces, en macOS desde la línea de comando, instala el JDK que incluye un JRE y un JVM y puede tener muchas versiones de estos. También hay un JRE separado (no es lo mismo que la línea de comando) que ejecuta subprogramas en su navegador y está en el panel de control de Java y solo puede tener uno de estos.

En cuanto a los números de versión, etc. Hasta donde tengo entendido, después de la versión 8, cambiaron la numeración de las versiones. Wikipedia dice

En septiembre de 2017, Mark Reinhold, arquitecto jefe de la plataforma Java, propuso cambiar el tren de lanzamiento a "un lanzamiento de función cada seis meses" en lugar del calendario actual de dos años,[1][2] y posteriormente la propuesta entró en vigor. .

Por lo tanto, 9,10 han sido reemplazados por 11 y 12 vence en marzo de 2019 - verhttps://en.wikipedia.org/wiki/Java_version_historyen cuanto a los tiempos y el tiempo de soporte.

Para encontrar las JVM que puede usar desde la línea de comando, ejecute/usr/libexec/java_home -V

yo obtengo

/Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home
Matching Java Virtual Machines (6):
11.0.1, x86_64: "OpenJDK 11.0.1"    /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home
10.0.1, x86_64: "Java SE 10.0.1"    /Library/Java/JavaVirtualMachines/jdk-10.0.1.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_171, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home
1.8.0_92, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home
1.8.0_77, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home

Para instalar y elegir qué JDK verhttps://stackoverflow.com/questions/52524112/how-do-i-install-java-11-on-mac-osx-allowing-version-switching

información relacionada