native
este un cuvânt cheie java. Acesta marchează o metodă, care va fi implementată în alte limbaje, nu în Java. Metoda este declarată fără un corp și nu poate fi abstract
. Funcționează împreună cu JNI (Java Native Interface).
Sintaxa:
method();
Metodele native au fost folosite în trecut pentru a scrie secțiuni critice din punct de vedere al performanței, dar odată cu creșterea vitezei în java, acest lucru este acum mai puțin obișnuit. Metodele native sunt necesare în prezent atunci când
- Trebuie să apelați din java o bibliotecă, scrisă într-un alt limbaj.
- Trebuie să accesați resurse de sistem sau hardware care pot fi accesate numai din celălalt limbaj (de obicei C). De fapt, multe funcții de sistem care interacționează cu computerul real (IO pe disc și în rețea, de exemplu) pot face acest lucru doar pentru că apelează cod nativ.
Pentru a finaliza scrierea unei metode native, trebuie să procesați clasa dvs. cu instrumentul javah
care va genera un cod de antet în C. Apoi trebuie să furnizați implementarea codului de antet, să produceți o bibliotecă încărcabilă dinamic (.so
sub Linux, .dll
sub Windows) și să o încărcați (în cel mai simplu caz cu System.load(library_file_name)
. Completarea codului este trivială dacă sunt trecute doar tipuri primitive, cum ar fi numere întregi, dar devine mai complexă dacă este necesar să se schimbe șiruri de caractere sau obiecte din codul C. În general, totul poate fi la nivel de C, inclusiv crearea noilor obiecte și apelarea înapoi a metodelor, scrise în java.
Pentru a apela codul într-un alt limbaj (inclusiv C++), trebuie să scrieți o punte din C către acel limbaj. Acest lucru este de obicei trivial, deoarece majoritatea limbajelor sunt apelabile din C.
.