【问题标题】:Which JVMs do not support direct java.nio.ByteBuffer?哪些 JVM 不支持直接 java.nio.ByteBuffer?
【发布时间】:2010-04-07 22:52:02
【问题描述】:

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

谢谢

【问题讨论】:

    标签: java java-native-interface nio bytebuffer


    【解决方案1】:

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

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

    这取决于你的目标。

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

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

    但这一切似乎与现实有些脱节。通过走 JNI 路线,您隐含地走上了不可移植的道路。您已经必须处理(至少)必须为不同的 JVM 和不同的目标平台重新编译的本机库。而且我认为在所有支持的平台上进行测试是必不可少的。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-20
      • 2010-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-27
      • 1970-01-01
      相关资源
      最近更新 更多