Capire sun.misc.Unsafe

La scorsa settimana è emersa la notizia che alcuni sviluppatori sono in armi, sostenendo che la rimozione proposta da Oracle sun.misc.Unsafein Java 9 distruggerà l'ecosistema Java. Per molti sviluppatori non coinvolti nella programmazione di basso livello, tuttavia, l'API privata è probabilmente avvolta nel mistero. Cos'è questa API così pericolosa che il suo stesso nome non è sicuro ?

Il blogger e collaboratore open source Rafael Winterhalter spiega in "Understanding sun.misc.Unsafe" che il codice non sicuro è spesso richiesto per la programmazione di basso livello, dove gli sviluppatori modificano le funzionalità della piattaforma per uno scopo specifico. Sebbene JNI (Java Native Interface) sia considerata l'opzione più sicura per la programmazione Java di basso livello, molti progetti open source sono stati utilizzati Unsafecome soluzione alternativa meno vincolata.

Winterhalter presenta uno dei numerosi esempi che utilizzano Unsafeper superare un ostacolo alla programmazione Java:

La prima volta che ho utilizzato la Unsafeclasse è stato per creare un'istanza di una classe senza chiamare nessuno dei costruttori della classe. Avevo bisogno di eseguire il proxy di un'intera classe che aveva solo un costruttore piuttosto rumoroso ma volevo solo delegare tutte le invocazioni di metodi a un'istanza reale [...] Creare una sottoclasse era facile e se la classe fosse stata rappresentata da un'interfaccia, creare un proxy sarebbe stato un compito semplice. Con il costoso costruttore, tuttavia, sono rimasto bloccato. Usando la Unsafeclasse, sono stato comunque in grado di aggirarlo.

Vedere "Informazioni su sun.misc.Unsafe" e "Java magic, Parte 4: sun.misc.Unsafe" per ulteriori esempi che dimostrano il perché e il modo in cui si utilizza Unsafenei programmi Java.

Questa storia, "Understanding sun.misc.Unsafe" è stata originariamente pubblicata da JavaWorld.