2010-04-07 4 views

답변

2

직접 ByteBuffer의를 구현하지 않습니다. 그러나 특정 의미로 관련이 없습니다 ... 직접적인 ByteBuffers를 지원/지원하지 않음으로써 방정식을 변경하는 새로운 JVM이있는 벤더가 언제나 등장 할 가능성이 있기 때문에 가능합니다.

JNI 라이브러리는 항상 관리 ByteBuffers를 코딩하고 Direct ByteBuffers를 최적화로 지정해야합니까?

목표에 따라 다릅니다.

  • 최대 이식성을 목표로하는 경우 JNI 코드는 직접 ByteBuffers를 사용할 수 있다고 가정해서는 안됩니다.

  • 최대 성능을 목표로하는 경우 코드에서 직접 ByteBuffers를 사용할 수 있다고 가정 할 수 있습니다 (그렇지 않은 경우 중단됩니다). 또는 직접 ByteBuffers에 대한 플랫폼의 지원에 따라 런타임시 Java 측에서 선택하는 두 가지 JNI 라이브러리 (또는 동일한 라이브러리의 조건부로 컴파일 된 변형)를 가질 수 있습니다.

그러나이 모든 것이 현실과 조금 다릅니다. JNI 라우트를 내려감으로써, 당신은 암묵적으로 비 이동성의 경로를 취하게됩니다. 이미 다른 JVM과 다른 타겟 플랫폼을 위해 재 컴파일해야하는 네이티브 라이브러리를 처리해야합니다. 그리고 모든 지원 플랫폼에서 테스트가 필수적이라고 생각했습니다.

요약하면 JNI 코드에 대한 다중 플랫폼 지원에 대한 중요한 지름길을 기대하지 마십시오.