Nalim 是一个使用JVMCI(JVM 编译器接口)将 Java 方法链接到本机函数的库 。
与其他用于本地库访问的 Java 框架不同,nalim 不使用 JNI,因此不会产生与 JNI 相关的开销。
使用 nalim 调用本机函数时:
- 线程不会从in_Java状态切换到in_native状态再返回。
- 不涉及内存障碍。
- 没有创建JNI句柄。
- 省略了异常检查和安全点检查。
- 本地函数可以直接访问堆中的原始数组。
因此,与 JNI 相比,本机调用变得更快,尤其是在目标函数很短的情况下。从这个意义上说,nalim 类似于 JNI Critical Natives,但依赖于标准支持的接口。JNI Critical Natives在 JDK 16 中已被弃用,自 JDK 18 起已被[url=https://bugs.openjdk.org/browse/JDK-8258192]淘汰[/url],因此 nalim 可以作为替代品。