Los métodos de acceso a memoria de la clase sun.misc.Unsafe de Java quedarían obsoletos para su eliminación en una versión futura de la plataforma, según una JEP (Propuesta de mejora de JDK) en marcha en la comunidad OpenJDK. De los 87 métodos de la clase, 79 se eliminarían. Estos métodos no admitidos han tenido reemplazos admitidos desde JDK 9, para 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 compatibles. 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 por completo la clase sun.misc.Unsafe, ya que una pequeña cantidad de sus métodos no se utilizan para el acceso a la memoria y no estará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, prevista para marzo, ya tiene su conjunto de funciones congeladas. Pero el JDK 23, que probablemente se lanzará en septiembre, podría ser un posible objetivo. En el pasado, se consideraba que el código inseguro era necesario para la programación de bajo nivel. La clase sun.misc.Unsafe 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, al no haber forma de evitar que sun.misc.Unsafe se utilizara 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 comprobaciones 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 reemplazo 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 de JDK 22. Copyright © 2024 IDG Communications, Inc.

Source link