JNI'yı ( Java Native Interface ) bir olan yazılım kütüphanesi için ara yüz kullanım doğal olarak entegre JDK içindeki Java kodu çalışmasını verir Java JVM çağırmak ve (yani programlar özgü yerel uygulamalar tarafından çağrılabilir donanım ve işletim sistemi , söz konusu platformun) veya diğer dillere ( C , C ++ , assembler , vb.) dayalı yazılım kitaplıkları ile .
İşte JNI kullanmanın bazı örnekleri:
Çöp toplayıcı JNI fonksiyonlar için çalışmaz , bu nedenle programcı programlamasında titiz olmalıdır.
JNI arabirimi, halihazırda nesneleri kullanan bir dille daha az karmaşıktır (C ++ gibi), oysa C gibi dillerde nesne kavramı yoktur ve programlamayı daha zor hale getirir.
JVM bir JNI işlevini çağırdığında, iki Java işaretçisini parametre olarak iletir ; ilki JNIEnv türünde bir nesneye , diğeri herhangi bir nesneye.
İşte bir JNI işlev çağrısının tipik bir örneği.
JNIEXPORT void JNICALL Java_ClassName_MethodName (JNIEnv *env, jobject obj) { //Implement Native Method Here }İşaretçi env, JVM arayüzünü içeren bir yapıdır. JVM ile etkileşim ve Java nesneleriyle çalışmak için gereken tüm işlevleri içerir.
JNI işlevi örnekleri: dönüştürme tabloları Java yerel resimleri, dizi Java Dizesi yerel karakterleri, nesnelerin somutlaştırılması , istisnaları işleme .
Aşağıdaki tablo, Java türleri ve yerel C türleri arasındaki ana yazışma örneklerini verir.
Java türü | Yerel Tip C | Açıklama | Tipin imzası |
---|---|---|---|
Boole | imzasız karakter | boole (yanlış = 0) | Z |
bayt | imzalı karakter | 8 bitlik işaretli tamsayı | B |
tank | imzasız kısa | 16 bitlik işaretsiz tamsayı | VS |
şort | şort | 16 bitlik işaretli tamsayı | S |
int | int | 32 bitlik işaretli tamsayı | ben |
uzun |
long long veya __int64 |
64 bitlik işaretli tamsayı | J |
şamandıra | şamandıra | 32 bit kayan nokta numarası | F |
çift | çift | 64 bit kayan nokta numarası | D |