アプリケーション全体を Java で開発できるのに、ネイティブにアクセスするために JNI が必要なのはなぜですか。
よろしく、スジャニアン
アプリケーション全体を Java で開発できない場合は、JNI が必要です。これは、たとえば、C でしか使用できないレガシー ライブラリがある場合や、システム ドライバーと通信する必要がある場合に発生する可能性があります。アプリケーション全体を純粋な Java で記述できる場合は、もちろん JNI は必要ありません。
アプリケーション全体を純粋な Java で開発できる場合、JNI は必要ありません。それも好ましい方法です。
でも:
既存のネイティブ コード ライブラリを呼び出すことができます。それらを Java で書き直すことは可能かもしれませんが、それは大変な作業になる可能性があります (移植と、後で 2 つのバージョンを維持するため)。
JVM ではできない方法でハードウェア/OS と直接対話するために、いくつかの低レベル コードを記述する必要がある場合があります。
アプリケーション全体を Java で開発できるのに、ネイティブにアクセスするために JNI が必要なのはなぜですか。
これにより、常にアプリケーション全体を Java で開発できると主張しているのであれば、それは誤りです。いつもそれができるとは限りません。JNI はそのギャップを埋めるために存在します。
一方、'when' ではなく 'if' を意味する場合、答えは、そのような場合には JNI は必要ないということです。