직접 ByteBuffers를 지원하는 release notes for Java NIO (Java 1.4 이상) 상태는 선택적 기능입니다. 어떤 JVM 벤더/맛이 그것을 지원하지 않는지 궁금합니다. JNI 라이브러리는 항상 관리 ByteBuffers를 코드화하고 Direct ByteBuffers를 최적화 대상으로 지정해야합니까? 의 JVM이/구현 모르겠어요직접적인 java.nio.ByteBuffer를 지원하지 않는 JVM은 무엇입니까?
감사
직접 ByteBuffers를 지원하는 release notes for Java NIO (Java 1.4 이상) 상태는 선택적 기능입니다. 어떤 JVM 벤더/맛이 그것을 지원하지 않는지 궁금합니다. JNI 라이브러리는 항상 관리 ByteBuffers를 코드화하고 Direct ByteBuffers를 최적화 대상으로 지정해야합니까? 의 JVM이/구현 모르겠어요직접적인 java.nio.ByteBuffer를 지원하지 않는 JVM은 무엇입니까?
감사
직접 ByteBuffer의를 구현하지 않습니다. 그러나 특정 의미로 관련이 없습니다 ... 직접적인 ByteBuffers를 지원/지원하지 않음으로써 방정식을 변경하는 새로운 JVM이있는 벤더가 언제나 등장 할 가능성이 있기 때문에 가능합니다.
JNI 라이브러리는 항상 관리 ByteBuffers를 코딩하고 Direct ByteBuffers를 최적화로 지정해야합니까?
목표에 따라 다릅니다.
최대 이식성을 목표로하는 경우 JNI 코드는 직접 ByteBuffers를 사용할 수 있다고 가정해서는 안됩니다.
최대 성능을 목표로하는 경우 코드에서 직접 ByteBuffers를 사용할 수 있다고 가정 할 수 있습니다 (그렇지 않은 경우 중단됩니다). 또는 직접 ByteBuffers에 대한 플랫폼의 지원에 따라 런타임시 Java 측에서 선택하는 두 가지 JNI 라이브러리 (또는 동일한 라이브러리의 조건부로 컴파일 된 변형)를 가질 수 있습니다.
그러나이 모든 것이 현실과 조금 다릅니다. JNI 라우트를 내려감으로써, 당신은 암묵적으로 비 이동성의 경로를 취하게됩니다. 이미 다른 JVM과 다른 타겟 플랫폼을 위해 재 컴파일해야하는 네이티브 라이브러리를 처리해야합니다. 그리고 모든 지원 플랫폼에서 테스트가 필수적이라고 생각했습니다.
요약하면 JNI 코드에 대한 다중 플랫폼 지원에 대한 중요한 지름길을 기대하지 마십시오.