Вызов нативных методов без JNI-оверхеда
Есть немало способов вызвать из Java код, написанный на другом языке: JNI, JNA, JNR-FFI и, конечно, долгожданный проект Panama. Проблема в том, что с любым из этих интерфейсов переход из Java в Native сопряжен с накладными расходами. Чаще всего оверхедом можно пренебречь, но бывают случаи, когда он превышает даже стоимость полезной работы.
До недавнего времени в погоне за производительностью Java-хакеры применяли недокументированное расширение HotSpot, однако в новых версиях JDK его уже нет. На замену удаленным Critical Natives была разработана библиотека для быстрого вызова внешних функций. В ее основе лежит JVMCI — интерфейс для подключения сторонних JIT-компиляторов.
В докладе мы познакомимся с JVMCI, увидим, чем он поможет в ускорении нативных вызовов, разберем ограничения подхода и сравним производительность с альтернативами.