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