native jest słowem kluczowym javy. Oznacza ono metodę, że będzie ona zaimplementowana w innych językach, nie w Javie. Metoda jest deklarowana bez ciała i nie może być abstract. Działa ona razem z JNI (Java Native Interface).

Syntaktyka:

  method();

Natywne metody były używane w przeszłości do pisania sekcji krytycznych pod względem wydajności, ale z coraz szybszą Javą jest to teraz mniej powszechne. Metody natywne są obecnie potrzebne, gdy

  • Trzeba wywołać z java bibliotekę, napisaną w innym języku.
  • Trzeba uzyskać dostęp do zasobów systemowych lub sprzętowych, które są osiągalne tylko z innego języka (zazwyczaj C). Właściwie wiele funkcji systemowych, które wchodzą w interakcję z prawdziwym komputerem (na przykład IO dysku i sieci), może to zrobić tylko dlatego, że wywołują natywny kod.

Aby dokończyć pisanie natywnej metody, musisz przetworzyć swoją klasę za pomocą javah narzędzia, które wygeneruje kod nagłówkowy w C. Następnie musisz zapewnić implementację kodu nagłówkowego, wyprodukować dynamicznie ładowalną bibliotekę (.so pod Linuksem, .dll pod Windows) i załadować ją (w najprostszym przypadku za pomocą System.load(library_file_name) . Uzupełnianie kodu jest trywialne, jeśli przekazywane są tylko prymitywne typy, takie jak liczby całkowite, ale staje się bardziej złożone, jeśli trzeba wymieniać łańcuchy lub obiekty z kodu C. Ogólnie rzecz biorąc, wszystko może być na poziomie C, łącznie z tworzeniem nowych obiektów i wywoływaniem metod napisanych w Javie.

Aby wywołać kod w innym języku (w tym C++), trzeba napisać mostek z C do tego języka. Jest to zazwyczaj trywialne, ponieważ większość języków jest wywoływalna z C.

Articles

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.