目次
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