Os métodos de acesso à memória do Java sun.misc.Unsafe class seria descontinuada para remoção em uma versão futura da plataforma, sob uma JEP (JDK Enhancement Proposal) em andamento na comunidade OpenJDK. Dos 87 métodos da classe, 79 seriam removidos.

Esses métodos não suportados tiveram substituições suportadas desde o JDK 9, para acessar a memória on-heap, e o JDK 22, para acessar a memória off-heap, afirma a proposta. Os desenvolvedores de bibliotecas são fortemente encorajados a migrar de sun.misc.Unsafe a essas substituições suportadas. Os objetivos da proposta incluem a preparação para a remoção desses métodos de acesso à memória em uma versão futura do Java e ajudar os desenvolvedores a saber quando seus aplicativos dependem deles. Não é objectivo da proposta eliminar a sun.misc.Unsafe classe inteiramente, já que um pequeno número de seus métodos não são usados ​​para acesso à memória e permanecerão não preteridos.

A proposta não cita uma versão específica do Java que descontinuaria os métodos. A próxima versão do Java padrão, JDK 22, prevista para março, já está com seu conjunto de recursos congelado. Mas o JDK 23, que provavelmente será lançado em setembro, pode ser um alvo possível.

No passado, o código inseguro era visto como necessário para programação de baixo nível. O sun.misc.Unsafe class foi introduzida em 2002 como uma forma de as classes Java no JDK realizarem operações de baixo nível. Seus métodos de acesso à memória, como o nome da classe sugere, não são seguros e podem levar a um comportamento indefinido, por isso não foram expostos como uma API padrão. Eles foram introduzidos com a suposição de que seriam exclusivamente para uso dentro do JDK, que os chamadores dentro do JDK realizariam verificações de segurança exaustivas antes de usá-los e que APIs padrão seguras para a funcionalidade seriam adicionadas à plataforma Java, diz a proposta.

Mas sem nenhuma maneira em 2002 de evitar sun.misc.Unsafe Ao deixar de ser usado fora do JDK, seus métodos de acesso à memória tornaram-se um “canivete suíço” para desenvolvedores de bibliotecas que queriam mais potência e desempenho do que as APIs padrão poderiam fornecer. Infelizmente, nem todas as bibliotecas realizam verificações de segurança antes de chamar esses métodos, apresentando assim risco de falhas e travamentos nas aplicações.

Durante os últimos anos, duas APIs padrão foram introduzidas como substitutos dos métodos de acesso à memória em sun.misc.Unsafe. Estes são java.lang.invoke do JDK 9 e java.lang.foreign do JDK 22.