JNI インターフェースの使用

JNI インターフェースの形式以上に、JNI が 64 ビット・システムにおいてネイティブ・ライブラリーでどのように使用されるのかを考慮する必要があります。

考慮すべきことはいくつかあります。
  • 一部の 64 ビット・システムでは、JNI を介して渡される特定のネイティブ・オブジェクトは 64 ビットですが、同等の 32 ビット ・システムでは 32 ビットです。 このタイプのオブジェクト例としては、ソケット・ハンドルやファイル・ハンドルがあります。
  • JNI を使用して 64 ビット・オブジェクトを渡すことは問題ではありません。 ただし、多くの場合、これらのオブジェクトは Java™ オブジェクト・フィールドに保管されます。 これは、これらのオブジェクト・フィールドのタイプが、既存の 32 ビット ・システムと比較して 64 ビット・システムで変更されることを意味します。 これを実現するには、Java コードを変更する必要があります。
  • 64 ビット・プラットフォームで Java オブジェクト・フィールドのサイズが 32 ビット ・プラットフォームと異なる場合、コードが 32 ビットから 64 ビットに移植されるときのサイズの違いを反映するように、そのオブジェクト・フィールドを処理するすべてのネイティブ・コードを変更する必要があります。 この方法で影響を受ける各 Java オブジェクト・タイプの詳細な説明を用意することによって、これに対処することができます。 アプリケーション・コードが「ネイティブ・データ」を Java オブジェクト内に保管する場合は、Java コードを変更して、すべてのネイティブ・データを保管するのに十分なスペースが Java オブジェクト内にあることを確認する必要があります。