Kontroverse Debatte um sun.misc.Unsafe

Java 9 ohne sun.misc.Unsafe: Ein Desaster?

Hartmut Schlosser

(c) Shutterstock / Mukhina Viktoriia 

Java 9 wirft seine Schatten voraus. Nach der Debatte um die Umstellung auf den Garbage Collector G1 gibt es jetzt ein weiteres Thema, das in der Community teils sehr kontrovers diskutiert wird. Offenbar soll in Java 9 das sun.misc.Unsafe API entfernt bzw. per Default deaktiviert werden. Ein Desaster, heißt es dazu in einem aktuellen Blogpost.

Wo liegt das Problem?

sun.misc.Unsafe ist ein privates und offiziell nicht unterstütztes API, das dennoch von zahlreichen Anbietern und Frameworks genutzt wird, um performante Low-Level-Interaktionen mit Dingen wie Betriebssystem, Speicher oder anderen Hardware-Funktionen zu erreichen. Eingesetzt wird sun.misc.Unsafe etwa von Spring, Hazelcast, Cassandra, Grails, Akka und Hadoop, um nur einige zu nennen.

Wie aus einer Diskussion auf der OpenJDK Mailing-Liste hervorgeht, sollen im Zuge der Implementierung des Modulsystems Jigsaw die unsicheren Teile aus dem JDK 9 entfernt werden. sun.misc.Unsafe soll standardmäßig deaktiviert werden, wobei wohlgemerkt der Zugriff auch im neuen Modulsystem noch gegeben sein soll.

„Das genügt nicht“, kommentiert man auf dem DripStab Blog in dem aufgeregten Artikel „Removal of sun.misc.Unsafe in Java 9 – A disaster in the making.“ Die Unsafe-Klasse nur nach der Übergabe eines speziellen Flags an die JVM zugänglich zu machen, würde nicht nur klassische Infrastruktur-Software wie Cassandra und Zookeeper brechen, sondern etliche Mainstream-Anwendungen, da so viele Libraries intern die Unsafe-Klasse nutzten.

The flag to enable Unsafe will become the default flag to launch the JVM henceforth, since without it your Java apps will break without notice. Since most environments wont have this flag put in their JVM arguments by default, when they upgrade Java on their systems, their software will break.

An die Wand gemalt wird eine Zweiteilung der Java-Anwendungen in eine Prä- und Post-Java-9-Zeit. Die Akzeptanz und Verbreitung von Java 9 würde zudem empfindlich gestört werden.

Adoption of Java 9 will slow to a crawl due to this, which would effect the entire Java ecosystem. The situation will be analogous to Python 2 and 3.

Lösung in Sicht?

Zur Entschärfung des Problems haben sich mittlerweile Entwickler verschiedener Lage zusammen getan und ein Vorschlagspapier erarbeitet. Eine spezielle Working Group soll gegründet werden, um sichere Teile von sun.misc.Unsafe im Rahmen des OpenJDK-Projektes neu zu implementieren. Auch Java-Performance-Guru Kirk Pepperdine stimmt in einem InfoQ-Interview dieser Vorgehensweise grundsätzlich zu:

Do we need to get rid of Unsafe, Yes! Do we need to keep Unsafe? Yes. How do we reconcile these seemingly conflicting positions? Well, we need to plan a migration path to move the stuff that we now know how it should be implemented out of Unsafe and into the JDK proper.

Angesichts der fortgeschrittenen Zeit wird dieses Unterfangen der Neuimplementierung von sun.misc.Unsafe  allerdings nicht bis zum Java 9 Release am (voraussichtlich) 22. September 2016 abgeschlossen sein. Wie genau die endgültige Lösung aussehen wird, darf also mit Spannung weiterverfolgt werden.

Aufmacherbild: Finger art of couple von Shutterstock / Urheberrecht: Mukhina Viktoriia

Verwandte Themen:

Geschrieben von
Hartmut Schlosser
Hartmut Schlosser
Content-Stratege, IT-Redakteur, Storyteller – als Online-Teamlead bei S&S Media ist Hartmut Schlosser immer auf der Suche nach der Geschichte hinter der News. #java #eclipse #devops #machinelearning #seo. Zum Lächeln bringen ihn kreative Aktionen, die den Leser bewegen. @hschlosser
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
4000
  Subscribe  
Benachrichtige mich zu: