Здравствуйте, Joie de vivre, Вы писали:
JDV>Все будет хорошо, ведь из приведенного списка больше всего пострадают библиотеки, которые использовали Unsafe для создания объектов без вызова конструкторов, а не те:
JDV> а) что выделяли память вне хипа через Unsafe, когда можно было взять DirectBuffer и никто бы не заметил (сюдя можно отнести Netty, которая находится во главе списка).
JDV> б) что обновляли поля объектов в thread safe manner, используя getFieldOffset и putXXXVolatile/Ordered.
JDV>Для а) уже давно есть nio с DirectByteBuffer-ами, которая уже упоминалась в этом треде, а б) заменят на VarHandles.
К сожалению DirectByteBuffer не является полноценной заменой того что давал unsafe. Как минимум, оно делает boundary checks, которые многим нафиг не сдались и которые просаживают performance в критических местах. В этих случаях лучше быть unsafe чем переписывать все на С++ (jni тоже не всегда подходит из-за оверхеда).
Про VarHandles не знал, спасибо, есть значит маленькая надежда. Маленькая потому что судя по всему в Оракл не до конца понимают как и главное зачем люди используют Unsafe. В моей индустрии (low latency java) это то что позволяет таки писать на java, а не на С++.