哪些JVM不支持直接java.nio.ByteBuffer?

时间:2010-04-07 22:52:03

标签: java java-native-interface nio bytebuffer

支持直接ByteBuffers的release notes for Java NIO(在Java 1.4+中)状态是一个可选功能。我很好奇哪些JVM供应商/口味不支持它? JNI库是否应始终为托管的ByteBuffers编写代码并将ByteBuffers直接作为优化?

由于

1 个答案:

答案 0 :(得分:2)

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

  

JNI库是否应始终为托管的ByteBuffers编写代码并将ByteBuffers直接作为优化?

这取决于你的目标。

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

  • 如果您的目标是获得最佳性能,那么您的代码可以假设直接ByteBuffers将始终可用(如果不是,则会中断)。或者,您可以在运行时选择两个不同的JNI库(或相同库的有条件编译变体),具体取决于平台对直接ByteBuffers的支持。

但这一切似乎与现实有点脱节。通过沿着JNI路线走下去,你隐含地采取了不可移植性的道路。您必须处理本地库(至少)必须针对不同的JVM和不同的目标平台重新编译。我认为在所有支持的平台上进行测试至关重要。

总之,不要指望对JNI代码的多平台支持有任何重大的捷径。