Sun.misc.Unsafe verstehen

Letzte Woche wurde bekannt, dass einige Entwickler in den Armen liegen und behaupten, dass die von Oracle vorgeschlagene Entfernung von sun.misc.UnsafeJava 9 das Java-Ökosystem zerstören wird. Für viele Entwickler, die nicht in Low-Level-Programmierung verwickelt sind, ist die private API jedoch wahrscheinlich rätselhaft. Was ist diese API so gefährlich, dass ihr Name unsicher ist ?

Der Blogger und Open-Source-Mitarbeiter Rafael Winterhalter erklärt in "Grundlegendes zu sun.misc.Unsafe", dass für die Programmierung auf niedriger Ebene häufig unsicherer Code erforderlich ist, bei dem Entwickler die Plattformfunktionalität für einen bestimmten Zweck ändern. Während JNI (Java Native Interface) als die sicherste Option für die Java-Programmierung auf niedriger Ebene angesehen wird, wurden viele Open Source-Projekte Unsafeals weniger eingeschränkte Problemumgehung verwendet.

Winterhalter präsentiert eines von mehreren Beispielen Unsafezur Überwindung einer Java-Programmierhürde:

Das erste Mal, dass ich die UnsafeKlasse verwendete, war das Erstellen einer Instanz einer Klasse, ohne einen der Konstruktoren der Klasse aufzurufen. Ich musste eine ganze Klasse als Proxy verwenden, die nur einen ziemlich verrauschten Konstruktor hatte, aber ich wollte nur alle Methodenaufrufe an eine reale Instanz delegieren. [...] Das Erstellen einer Unterklasse war einfach, und wenn die Klasse durch eine Schnittstelle dargestellt wurde, erstellen Sie eine Proxy wäre eine einfache Aufgabe gewesen. Mit dem teuren Konstrukteur steckte ich jedoch fest. Durch die Verwendung der UnsafeKlasse konnte ich mich jedoch darum herumarbeiten.

Weitere Beispiele, die das Warum und Wie der Verwendung Unsafein Java-Programmen veranschaulichen, finden Sie unter "Sun.misc.Unsafe verstehen" und "Java-Magie, Teil 4: sun.misc.Unsafe" .

Diese Geschichte "Understanding sun.misc.Unsafe" wurde ursprünglich von JavaWorld veröffentlicht.