ஜாவா நேட்டிவ் இன்டெர்பேஸ் (Java Native Interface - JNI) எனும் முறை மூலம் C++ மொழியில் தேவையான function களை எழுதி பின்னர் அதனை ஜாவா மொழியில் பயன்படுத்தலாம். C++ மொழியில் functions எழுதப்படும். பின்னர் அவை .dll கோப்பு ஆக மாற்றப்படும். DLL கோப்பிலுள்ள function களை ஜாவா மொழியில் பயன்படுத்த ஒரு இன்டெர்பேஸ் கிளாஸ் உருவாக்கப்பட்டு, அதனூடாக DLL கோப்பிலுள்ள function பயன்படுத்தப்படும்.
ஒரு சிறிய உதாரணம்.
1. கீழ்வருமாறு டைப் செய்து ஒரு ஜாவா கோப்பை உருவாக்குக (Nativeprint.java)
public class Nativeprint {
static {
System.loadLibrary("nativeprint") ;
}
public static native void printHello() ;
}
nativeprint எனப்படுவது DLL கோப்பின் பெயராகும்.
2. பின்னர் இதை கொம்பைல் செய்து C++ Header கோப்பு உருவாக்க வேண்டும்
javac Nativeprint.java
javah Nativeprint
Header கோப்பானது (Nativeprint.h) கீழ்வருமாறு உருவாக்கப்படிருக்கும்
-------------------------------------------------------------------------------
* DO NOT EDIT THIS FILE - it is machine generated */
--------------------------------------------------------------------------------
#include
3. இப்போது VC++ இல் DLL கோப்பு உருவாக்கப்பட வே
VC++ இல் nativeprint எனும் பெயரில் ஒரு Win32 Dinamic Link Library Project ஐ உருவாக்குக (Empty Project).
இப்போது Project > Add To Project > New மூலமாக ஒரு C++ மூல கோப்பினை (Source File) உருவாக்குக.
#include "jni.h"
#include "jni_md.h"
#include "Nativeprint.h"
JNIEXPORT void JNICALL Java_Nativeprint_printHello(JNIEnv *, jclass) {
printf("Hello From C++") ;
}
இதில் void என்பது function எதனையும் திருப்பி அனுப்பாது என்பதனையும் Nativeprint என்பது கிளாஸின் பெயரையும் printHello என்பது function பெயரையும் குறிக்கும்.
இப்போது உங்களுடைய JDK பிரதான டிரெக்டரி இல் include எனும் sub டிரெக்டரிக்கு இற்கு சென்று அங்கே jni.h எனும் கோப்பையும் அங்கிருந்து win32 எனும் sub டிரெக்டரியில் jni_md.h எனும் கோப்பையும் உங்களுடைய Project Folder இற்கு பிரதி செய்க. Nativeprint.h எனும் கோப்பையும் உங்களுடைய Project Folder இற்கு பிரதி செய்க.
இப்போது Project > Add To Project > File மூலமாக 3 கோப்புகளையும் தனித் தனியாக Project இனுள் சேர்த்து Project ஐ கொம்பைல் செய்து DLL கோப்பை உருவாக்குக.
4. இப்போது ஜாவா மொழி மூலம் DLL function ஐ பயன்படுத்தலாம் (Test.java)
கீழ் குறிப்பிட்டவாறு ஜாவா கோப்பை உருவாக்கி கொம்பைல் செய்து இயக்கி பயன்படுத்தலாம்.
public class Test {
public static void main(String[] args) {
Nativeprint.printHello() ;
}
}
இங்கே Nativeprint என்பது இன்டெர்பேஸ் கிலாஸின் பெயரும், printHello என்பது function இன் பெயருமாகும். இன்டெர்பேஸ் கிளாஸும் (Nativeprint.class), DLL கோப்பும் பிரதான கிளாஸும் (Test.class) ஒரே டிரெக்டரியில் இருக்க வேண்டும்.