Traducerea nu va da ideea generală, care este aceea a JVM poate rula codul pe care este scris într-un limbaj compilat (cum ar fi C) și se află pe disc ca .dll (pentru Unix este de obicei .so)
JNI a fost gândit și implementat pentru cei care au nevoie de provocări pe care Java nu pot face la toate - este unele instrucțiuni dependente de mașină, sau se referă la API-ul sistemului de operare, un apel către conducătorii auto și alte.
O descriere completă poate fi găsită aici: Java Native Interface
A de mai jos se face foarte simplu, folosind varianta JNI. Un exemplu este facut pentru a vedea cât de ușor de utilizat acest mecanism.
1. Creați o clasă obișnuită pe JAVA, dar metoda care trebuie utilizată descrie ca nativ DLL. Pe lângă utilizarea apelului care incarca dll noastre.
public class JniTest
Sistem. LoadLibrary ( "JniTest");
// atrag atenția asupra cuvântului nativ
publice int showString nativ (String mesaj);
Acum ne-am compila exemplul nostru
javac JniTest. java
Dacă nimic nu teribil sa întâmplat, atunci, în teorie, ar trebui să ne fișier JniTest.class.
Acum, procesul pe care îl javah utilitate. Acest utilitar ne va crea un fișier .h pentru programul nostru.
Important: este necesar să se scrie fără extensia de fișier.
javah -classpath. JniTest
Ia-JniTest.h fișier aici acest formular.
Aceasta ar trebui să acorde o atenție la liniile de prelucrare. Celelalte variabile nu sunt, de obicei atât de complexe. Și aici vedem că este necesar pentru a trage șir de la Unicode la un char obișnuit.
Acum dll facem pentru proiectul nostru. Ar fi mai bine ca sistemul a fost deja stabilit modul de compilator.
JAVA_HOME - aceasta este variabila de mediu pe care le prescriu întotdeauna. În general, aceasta este calea către directorul cu JAVA instalat - de exemplu, C: \ j2sdk15. (Cred că e de înțeles)
cl -I% JAVA_HOME% \% includ -I JAVA_HOME% \ includ \ win32 -LD JniTest.cpp -FeJniTest.dll
cl - compilatorul la această C ++ de la Visual C ++. Puteți utiliza orice alt compilator. Este important de a colecta sursa noastră în C pentru DLL.
Se poate observa că rezultatul compilării este de a fi JniTest.dll. Apropo, sisteme pentru bazate pe Unix ar trebui să fie un tip de fișier libJniTest.so. Iată o caracteristică. Aveti nevoie de lib prefix.
Acum, creați un caz test.