哪些JVM不支持direct java.nio.ByteBuffer?

哪些JVM不支持direct java.nio.ByteBuffer?,java,java-native-interface,nio,bytebuffer,Java,Java Native Interface,Nio,Bytebuffer,(在Java 1.4+中)表示支持直接字节缓冲是可选特性。我很好奇哪些JVM供应商/风格不支持它?JNI库是否应该始终为managed ByteBuffers编码,并将direct ByteBuffers降级为优化 谢谢我不知道哪些JVM实现/不实现direct ByteBuffers。但从某种意义上说,这并不是特别相关。。。因为总是有可能一些供应商会推出一个新的JVM,通过支持/不支持direct ByteBuffers来改变这个等式 JNI库是否应该始终为managed ByteBuffer

(在Java 1.4+中)表示支持直接字节缓冲是可选特性。我很好奇哪些JVM供应商/风格不支持它?JNI库是否应该始终为managed ByteBuffers编码,并将direct ByteBuffers降级为优化


谢谢

我不知道哪些JVM实现/不实现direct ByteBuffers。但从某种意义上说,这并不是特别相关。。。因为总是有可能一些供应商会推出一个新的JVM,通过支持/不支持direct ByteBuffers来改变这个等式

JNI库是否应该始终为managed ByteBuffers编码,并将direct ByteBuffers降级为优化

这取决于你的目标

  • 如果您的目标是实现最大的可移植性,那么您的JNI代码不应该假设直接字节缓冲区是可用的

  • 如果您的目标是实现最高性能,那么您的代码可以假定direct ByteBuffers始终可用(如果不可用,则中断)。或者,您可以拥有两个不同的JNI库(或相同库的条件编译变体),Java端在运行时根据平台对直接ByteBuffers的支持进行选择

但这一切似乎有点脱离现实。沿着JNI路线走下去,您就隐式地走上了不可移植的道路。您已经必须处理(至少)必须针对不同JVM和不同目标平台重新编译的本机库。我认为在所有受支持的平台上进行测试是必要的

总之,不要期望为您的JNI代码提供任何重要的多平台支持捷径