アプリケーションミスのトラブルの確実な事前防止のためには、(CやC++等を使用した)ネイティブプログラムをJNI経由で利用してはいけません。実現しようとしている機能が、Javaにより記述できないか設計段階で十分に検討を行ってください。やむをえず利用する場合でも、JNI(Java Native Interface)の利用は最小限にし、十分な確認とデバッグを実施してください。
JNIを利用する場合の前提スキルとして、以下は必須です。
C/C++によるマルチスレッドプログラミングの経験がある
トラブル発生時、自分でデバッグできる
詳しくは、「チューニングガイド」の「JDK/JRE 7のチューニング」、および「JDK/JRE 8のチューニング」の「基礎知識」の「Java Native Interface(JNI)」を参照してください。