Les méthodes d'accès à la mémoire de la classe sun.misc.Unsafe de Java seraient dépréciées pour être supprimées dans une prochaine version de la plateforme, dans le cadre d'une proposition d'amélioration du JDK (JEP) préparée par la communauté OpenJDK. Sur les 87 méthodes de la classe, 79 seraient supprimées. Ces méthodes non prises en charge ont des remplaçants suppportés depuis le JDK 9, pour l'accès à la mémoire on-heap, et le JDK 22, pour l'accès à la mémoire off-heap, selon la proposition. Les développeurs de bibliothèques sont fortement encouragés à migrer de sun.misc.Unsafe vers ces alternatives. La proposition vise notamment à préparer la suppression de ces méthodes d'accès à la mémoire dans une prochaine version de Java et à aider les développeurs à savoir quand leurs applications s'appuient sur ces méthodes. A noter qu'elle ne vise pas à supprimer entièrement la classe sun.misc.Unsafe, car un petit nombre de ses méthodes ne sont pas utilisées pour l'accès à la mémoire et resteront non dépréciées.
le document ne cite pas de version spécifique de Java qui rendrait ces méthodes obsolètes. La prochaine itération de Java standard, JDK 22, prévue pour mars, a déjà gelé ses fonctionnalités. Mais le JDK 23, qui devrait être publié en septembre, pourrait être une cible possible. Dans le passé, le code non sécurisé était considéré comme nécessaire à la programmation de bas niveau. La classe sun.misc.Unsafe a été introduite en 2002 pour permettre aux classes Java du JDK d'effectuer des opérations de bas niveau. Ses méthodes d'accès à la mémoire, comme le nom de la classe l'indique, ne sont pas sûres et peuvent entraîner un comportement indéfini, c'est pourquoi elles n'ont pas été exposées en tant qu'API standard. Elles ont été introduites en partant du principe qu'elles étaient exclusivement réservées au JDK, que les appelants au sein du JDK effectueraient des contrôles de sécurité exhaustifs avant de les utiliser et que des API standard sûres pour cette fonctionnalité seraient ajoutées à la plateforme Java, selon la proposition.
Un risque avéré de défaillance et de plantage
Mais comme, il n'existait en 2002 aucun moyen d'empêcher sun.misc.Unsafe d'être utilisé en dehors du JDK, ses méthodes d'accès à la mémoire sont devenues un couteau suisse pour les développeurs de bibliothèques qui souhaitaient disposer de plus de puissance et de performances que celle fournie les API standard. Malheureusement, toutes les bibliothèques n'effectuent pas de contrôles de sécurité avant d'appeler ces méthodes, ce qui présente un risque de défaillances et de plantages dans les applications. Au cours des dernières années, deux API standard ont été introduites pour remplacer les méthodes d'accès à la mémoire dans sun.misc.Unsafe. Il s'agit de java.lang.invoke du JDK 9 et de java.lang.foreign du JDK 22.
Commentaire