JNI در یک کلام رابطی است که کمک میکنه جاوا بتونه با دنیای خارج از JDK ارتباط برقرار کنه . این ارتباط میتونه دو طرفه باشه . یه برنامه معمولی سی یا مثلا" دلفی میتونه از طریق رابط خاص خودش از JNI برای استفاده از یک کلاس یا حتی متد خاص نوشته شده با جاوا استفاده کنه ، و یک برنامه جاوا میتونه از طریق JNI از یک DLL و توابع موحود در اون که مثلا" مختص به ویندوز هستند یا یه برنامه یا دستور مختص به لینوکس استفاده کنه . اگر با جاوا برنامه ای مینویسی که از JNI استفاده میکنه ، برنامه ات باز هم یک برنامه جاوا است که در صورت بروز مشکلی با منبع خارج از خطا یه خطای JNI تولید میکنه و اگر برنامه غیر جاوائی است که از یک موجودیت جاوائی استفاده میکنه ، باید JDK رو همراهش خودش داشته باشه .
سان مستندات خوبی برای اجزاء JDK خصوصا" JNI داره که توصیه میکنم مطالعه شون کنی . اگر کتاب Java Native Interface خود سان رو هم گیر بیاری عالیه :
http://www.amazon.com/gp/reader/0201...52#reader-link