如何将Micronaut (GraalVM)与JNI集成?



是否支持JNI ?我们的要求是像从微型aut应用程序,我们需要通信到嵌入式c/cpp。有人可以让我知道,如果它可能或任何参考将帮助。提前感谢

这个Micronaut只是一个Java框架。假设你说的是它的"原生图像"。

GraalVM文档说支持JNI,有以下说明:

应该通过JNI访问的单个类、方法和字段必须在配置文件中的本机映像生成过程中指定。这类似于使类可用于反射。或者,您可以使用JNIRuntimeAccess#register接口在分析时注册类和字段。

加载JNI实现类似于JVM: GraalVM可以在所有加载的库中使用JNI名称混淆方案查找本机实现。或者,您可以使用registerNativesJNI函数跳过名称混淆。

最后,文档指出GraalVM有时会忽略对象内建的监视器,如果它能证明它们没有在Java代码中使用。如果在对象上使用MonitorEnterMonitorExit,它将"退回到使用映射来存储锁关联的较慢的机制,该机制本身需要同步"。他们建议从Java进行同步,以便分析器看到它。

最新更新