Los métodos de acceso a la memoria de Java. sun.misc.Unsafe
la clase sería obsoleto para su eliminación en una versión futura de la plataforma, bajo una JEP (JDK Enhancement Proposal) en marcha en la comunidad OpenJDK. De los 87 métodos de la clase, se eliminarían 79.
Estos métodos no compatibles han tenido reemplazos compatibles desde JDK 9para acceder a la memoria en el montón, y JDK 22, para acceder a la memoria fuera del montón, afirma la propuesta. Se recomienda encarecidamente a los desarrolladores de bibliotecas que migren desde sun.misc.Unsafe
a estos reemplazos admitidos. Los objetivos de la propuesta incluyen prepararse para la eliminación de estos métodos de acceso a la memoria en una futura versión de Java y ayudar a los desarrolladores a saber cuándo sus aplicaciones dependen de ellos. No es un objetivo de la propuesta eliminar la sun.misc.Unsafe
clase por completo, ya que una pequeña cantidad de sus métodos no se utilizan para el acceso a la memoria y no quedarán obsoletos.
La propuesta no cita una versión específica de Java que desapruebe los métodos. La próxima versión del estándar Java, JDK 22, previsto para marzo, ya tiene su conjunto de funciones congelado. Pero JDK 23que probablemente se lanzará en septiembre, podría ser un posible objetivo.
En el pasado, código inseguro se consideró necesario para la programación de bajo nivel. El sun.misc.Unsafe
La clase se introdujo en 2002 como una forma para que las clases Java en el JDK realizaran operaciones de bajo nivel. Sus métodos de acceso a la memoria, como sugiere el nombre de la clase, no son seguros y pueden conducir a un comportamiento indefinido, por lo que no fueron expuestos como una API estándar. Se introdujeron con el supuesto de que eran para uso exclusivo dentro del JDK, que las personas que llamaban dentro del JDK realizarían controles de seguridad exhaustivos antes de usarlos y que se agregarían API estándar seguras para la funcionalidad a la plataforma Java, dice la propuesta.
Pero en 2002 no había forma de impedir sun.misc.Unsafe
De ser utilizado fuera del JDK, sus métodos de acceso a la memoria se convirtieron en una “navaja suiza” para los desarrolladores de bibliotecas que querían más potencia y rendimiento que los que podían proporcionar las API estándar. Desafortunadamente, no todas las bibliotecas realizan controles de seguridad antes de llamar a estos métodos, lo que presenta un riesgo de fallas y fallas en las aplicaciones.
Durante los últimos años, se han introducido dos API estándar como sustitutos de los métodos de acceso a la memoria en sun.misc.Unsafe
. Estos son java.lang.invoke
de JDK 9 y java.lang.foreign
desde JDK 22.
Copyright © 2024 IDG Communications, Inc.