第5章 JNA(Java Native Access)

目次

5.1. Maven2
5.2. 検証環境の構成
5.2.1. Maven (HomeBrew)
5.3. 関数のマッピング
5.4. Java・Cとネイティブ型の対応
5.5. ハローワールド (JNA)
5.6. ビルド

注記

JNAではC言語のコンパイル・ビルドが必要となります。ビルドについては「付録:make」( 付録C Makeツール )を参照ください。

重要

JNA を使う場合は、Java バインディングは不要となります。OpenCL ソースコードをビルドして、生成したライブラリをJNA経由でアクセスできるので、本書の残り部分は不要となります。 C/C++ でのビルドについては「OpenCL入門」を参照ください。

Java Native Accessは、JNIを使わずにネイティブの共有ライブラリアクセスを可能とします。また中間層を省くことで大幅に簡略化した実装が可能となります。JNAはJNIに比べてパフォーマンス遅延があるため、Javaバインディングで、2016年現在でJNAをベースとするフレームワーク、ライブラリは存在しません。(JavaCLはJNIに移行)

しかし遅延があるといっても、それを補ってあまりある柔軟性があるのも確かです。

以下のようなプロジェクトで JNA が活用されているとされます。

JNA は JNI より開発のステップが少ないため、ポインタ・配列間、構造体・クラス間の連携が容易にできます。しかしメモリーリークが発生しやすく、JNAを使う開発者は、使用目的を限定するか、使用したメモリ空間を解放するように注意する必要があります。

警告

JNA は JDK パッケージ外のライブラリです。公式HPからダウンロードするか、Maven/Gradle等を使ってダウンロードする必要があります。

Copyright 2018-2019, by Masaki Komatsu