Interfață nativă Java

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Interfața nativă Java sau JNI este un cadru al limbajului Java care permite codului Java să apeleze (sau să fie numit de) așa-numitul cod „nativ”, adică specific unui anumit sistem de operare sau, mai general, scris în alte limbaje de programare , în special C , C ++ și asamblare . [1] În literatura italiană , numele cadrului este în general tradus ca „interfață nativă Java”. [2]

Principala aplicație a JNI este de a apela în programe Java porțiuni de cod care îndeplinesc funcții intrinsec non-portabile (de exemplu primitive de sistem de operare) și care, prin urmare, nu pot fi implementate în Java pur. [3] Interfața se bazează pe definirea unui set de clase de legătură între cele două contexte, care au o interfață Java, dar care delegă implementarea metodelor lor codului nativ. [3]

Folosind JNI

O clasă poate defini un număr arbitrar de metode implementate în codul nativ. Pentru a face acest lucru, în sursa clasei metoda trebuie să aibă cuvântul cheie native și trebuie să aibă un punct și virgulă în locul corpului metodei. [3] De exemplu:

 clasa publică Clasa {
     
     metoda public nul () { / * ... * / }
     
     public native void methodNativo ();
     
 }

După cum se poate vedea din exemplu, clasa nu trebuie să aibă doar metode native.

O metodă native poate fi atât static cât și final ; cu toate acestea, nu are sens să definim o metodă nativă ca abstract .

Utilizarea metodelor native

De obicei, metodele native sunt păstrate private de către clasa care le definește, în timp ce metodele publice sau protected (invocate de clienți sau subclasele) acționează ca împachetări . În conformitate cu principiul încapsulării informațiilor, acest lucru vă permite să definiți o interfață pentru clasă care este complet independentă de utilizarea codului nativ; în acest fel, va fi mai ușor în viitor să modificați comportamentul clasei menținând în același timp o interfață nativă care să fie compatibilă cu bibliotecile native deja implementate.

Aplicații practice

JNI este utilizat în principal pentru a permite programului să acceseze funcțiile definite în bibliotecile sistemului de operare gazdă prin primitive de sistem . În realitate, accesul are loc indirect, în sensul că funcțiile sistemului de operare sunt invocate de funcțiile care implementează metodele native ale clasei care le definește și care sunt la rândul lor utilizate de codul Java.

Utilizarea JNI este, de asemenea, necesară atunci când implementarea unei anumite funcționalități în program depinde de sistemul de operare utilizat în timpul rulării și nu este prezentă în bibliotecile Java standard. Programul rezultat nu poate fi numit „100% -Java”, deoarece folosește direct codul nativ.

În implementarea de către Sun a bibliotecilor standard ale platformei Java , există multe metode native . Implementarea acestor metode este prezentă numai în mașina virtuală care va fi utilizată la rulare.

JNI și portabilitate

Utilizarea JNI limitează portabilitatea programului la setul de platforme pentru care există într-adevăr o implementare a bibliotecii native. Aceasta înseamnă că clasa care folosește metode native nu poate fi utilizată pe toate sistemele pentru care există un mediu Java Runtime . De fapt, un program care folosește clase cu metode native nu poate fi numit „100% Java”.

Din acest motiv, vă recomandăm să utilizați JNI numai dacă este strict necesar sau dacă programul va fi utilizat doar pe un număr limitat de platforme specifice.

Bibliotecile standard sunt o excepție: implementarea metodelor native definite de acestea este (în mod necesar) prezentă în fiecare mașină virtuală și este adesea necesară chiar pentru executarea corectă a programului în sine.

Notă

  1. ^ Interfață nativă Java: Introducere
  2. ^ Vezi de exemplu Jamie Jaworski, Java 2 totul și dincolo (traducere în italiană), Apogeo 1999, p. 9.
  3. ^ a b c Java Native Interface Arhivat 14 decembrie 2011 la Internet Archive . la Mokabyte
Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT