tengo - version de java
¿Qué significa el cuarto número en el esquema de cadenas de versión de Java 9? (2)
De acuerdo con este blog sobre el nuevo esquema de cadenas de versión de Java 9, se supone que la versión es como MAJOR.MINOR.SECURITY
, es decir, se supone que hay 3 números y 2 periodos intermedios.
Sin embargo, con Zulu 9 de Azul, cuando imprimo la versión de Java, tiene 4 números y 3 períodos:
./jdk/bin/java -version
openjdk version "9.0.0.15"
OpenJDK Runtime Environment (Zulu build 9.0.0.15+181)
OpenJDK 64-Bit Server VM (Zulu build 9.0.0.15+181, mixed mode)
¿Qué representan los 4 números?
es decir, se supone que hay 3 números y 2 periodos intermedios.
No necesariamente y puede validar las versiones utilizando el JDK como se detalla a continuación.
Además del JEP que es válido como vinculado por @Stephen en la otra respuesta , también se ha agregado una API al JDK para Runtime.Version
que se puede usar para validar una cadena de versión dada. Esto se puede hacer usando un talón de muestra como:
[Me pregunto si usar JShell podría ser interesante aquí, ¡no IDE!]
Runtime.Version version = Runtime.Version.parse("9");
version = Runtime.Version.parse("9.0.1");
version = Runtime.Version.parse("9.0.0.15");
version = Runtime.Version.parse("9.0.0.15+181");
El código hace uso de la Version.parse
que
Analiza la cadena dada como una cadena de versión válida que contiene un número de versión seguido de una versión preliminar y la información de compilación.
y se puede utilizar aún más (principalmente) para obtener información como mayor, menor, versión preliminar y número de seguridad de la versión (tiempo de ejecución) .
Esa publicación del blog está un poco desactualizada. El esquema implementado en Java 9 se documenta en JEP 223: Nuevo esquema de cadenas de versión.
El significado de los tres primeros números está estandarizado. El significado del 4º y (cualquiera) número posterior se deja al proveedor para que lo especifique.
Tenga en cuenta también la relación interesante entre los números 2 y 3.
Aquí están las partes relevantes del JEP.
"La secuencia puede ser de una longitud arbitraria, pero a los primeros tres elementos se les asignan significados específicos, de la siguiente manera:
$MAJOR.$MINOR.$SECURITY
$MAJOR
: el número de versión principal, incrementado para una versión principal que contiene características nuevas importantes como se especifica en una nueva edición de la Especificación de la Plataforma Java SE, por ejemplo, JSR 337 para Java SE 8. Las características pueden eliminarse en una versión principal, dado avisar con anticipación al menos un lanzamiento importante antes de tiempo, y se pueden hacer cambios incompatibles cuando se justifique. El número de versión$MAJOR
de JDK 8 es 8; el número de versión$MAJOR
de JDK 9 es 9. Cuando se incrementa$MAJOR
, se eliminan todos los elementos posteriores.
$MINOR
: el número de versión menor, incrementado para una versión de actualización menor que puede contener correcciones de errores compatibles, revisiones de las API estándar exigidas por una versión de mantenimiento de la Especificación de plataforma relevante, y funciones de implementación fuera del alcance de esa Especificación, como el nuevo JDK- API específicas, proveedores de servicios adicionales, nuevos recolectores de basura y puertos para nuevas arquitecturas de hardware.
$SECURITY
: el nivel de seguridad, incrementado para una versión de actualización de seguridad que contiene soluciones críticas, incluidas las necesarias para mejorar la seguridad.$SECURITY
no se restablece a cero cuando se incrementa$MINOR
. Por lo tanto, un valor más alto de$SECURITY
para un valor mayor de$SECURITY
$MAJOR
dado, siempre indica una versión más segura, independientemente del valor de$MINOR
.Los elementos cuarto y posterior de un número de versión son de uso gratuito para los consumidores posteriores de la base de código JDK. Dicho consumidor puede, por ejemplo, usar el cuarto elemento para identificar las versiones de parches que contienen un pequeño número de soluciones críticas que no son de seguridad, además de las soluciones de seguridad en la versión de seguridad correspondiente.