Wprowadzenie do natywnego słowa kluczowego:
Naturalne słowo kluczowe działa jako łącznik pomiędzy językiem JAVA i kawałkiem kodu lub biblioteką napisaną w różnych językach poza JAVA, które mogą być zależne od maszyny na której pracujesz. Jeśli natywne słowo kluczowe jest zastosowane do metody, to oznacza, że metoda będzie zaimplementowana przy użyciu natywnego kodu napisanego w innym języku (jak C lub C++) poprzez JNI (natywny interfejs JAVA).
Syntaktyka:
Składnia natywnego kodu jest taka sama jak normalnej definicji funkcji z „natywnym” słowem kluczowym dodanym na początku funkcji.
Na przykład:
Public class testing
{public native String testMethod (String parameter);}
Tutaj public jest modyfikatorem dostępu. Powinien być publiczny, aby inny plik mógł z niego korzystać. String jest typem danych zwracanych przez funkcję. Może to być liczba całkowita, znak lub Boolean w zależności od słowa kluczowego. Parametr przekazywany do tej funkcji jest również typu danych string. Wszystko powinno być przechowywane w ramach klasy.
Po deklaracji funkcji wywołujemy tę funkcję poprzez utworzony obiekt i załadowaną bibliotekę.
public static void main(String args)
{
System.loadLibrary(„testing”);
testing testingnew = new testing();
String output = testingnew.stringMethod(„NATIVE”);
}
Zdefiniowaną powyżej bibliotekę należy najpierw załadować, a następnie utworzyć jej obiekt. Z pomocą tego obiektu wywoływana jest funkcja natywna.
Jak działa słowo kluczowe native?
Powinny istnieć dwa pliki. Jeden zawierający kod JAVA, podczas gdy drugi powinien zawierać kod C/C++. Kod Javy będzie użyty do wywołania starszego kodu. Ten kod będzie wchodził w interakcję ze sprzętem i zwracał oczekiwane dane wyjściowe.
Gdy kod dziedzictwa będzie wchodził w interakcję ze sprzętem, nie będzie przestrzegał wytycznych określonych przez JAVA. Ten kod wykona pożądane przetwarzanie, aby uzyskać dane wyjściowe i przekazać wyniki do JNI. Natywny interfejs Javy następnie sprawdzi w swoim katalogu zawierającym wszystkie reguły odnoszące się do natywnego kodu (To przychodzi pod plikiem o nazwie javah.exe w SDK). JNI jest zaprojektowany jako część zestawu narzędzi Java. Po tym przetwarzaniu JAVA opublikuje dane wyjściowe w samym języku JAVA. Kiedy tworzymy program w JAVA, musimy upewnić się, że istnieje powiązanie zmiennych / przepływu danych między plikiem JAVA i plikiem dziedzictwa, tak aby istniał płynny przepływ danych między nimi.
Kroki wyjaśniające, jak korzystać z natywnych słów kluczowych są podane poniżej:
- Napisz kod JAVA zawierający natywną metodę, załadowaną bibliotekę współdzieloną i zapisz go używając „filename.JAVA”.
- Kompiluj kod JAVA i przekonwertuj kod na kod bajtowy.
- Utwórz plik nagłówkowy C/C++ zawierający sygnaturę natywnej funkcji, która powinna zostać wywołana.
- Napisz kod C/C++ posiadający implementację natywnej metody.
- Uruchom plik wykonywalny JAVA, aby zobaczyć wyniki.
Przykłady pokazujące implementację natywnego słowa kluczowego:
Powinniśmy napisać kod w Eclipse i uruchomić kod w celu stworzenia biblioteki, przy użyciu której następnie zostanie zaimplementowany kod C.
Kod: package com.slackerOne;
public class JPP {
public static native void pAccess();
public static native int pRead();
public static native void pWrite(int port, int output);
static{
System.loadLibrary(„JPPlibs”);
}
public void jAccess(){
JPP.pAccess();
}
public int jRead(){
return JPP.pRead();
}
public void jWrite(int port, int output){
JPP.pWrite(port, output);
}
}
Po zapisaniu tego kodu w nowej „klasie” projektu java. Musimy skonfigurować środowisko uruchomieniowe, aby wygenerować plik nagłówkowy.
Gdy to uruchomimy powinniśmy otrzymać wygenerowaną bibliotekę.
Wyjście:
Tutaj utworzyliśmy plik nagłówkowy z kodu java, który będzie działał jako link pomiędzy natywnym kodem a językiem java.
Zalety:
- Dostarcza JAVA dodatkową korzyść do interakcji z kodem napisanym w innych językach i zmniejsza ilość pracy, aby mieć ten sam kod napisany w JAVA, a tym samym zmniejsza redundancję kodu.
- Poprawia ogólną wydajność kodu. Ponieważ kod napisany w innym języku może być szybszy, gdy pracuje z językiem maszynowym w porównaniu do JAVA. Możemy wtedy użyć programu JAVA do wywołania tego kodu.
- Używając tego podejścia, możemy bezpośrednio podawać wywołania systemowe. Zmniejszając prawdopodobieństwo zewnętrznej ingerencji i poprawiając szybkość wykonywania kodu.
- Możesz dynamicznie wywoływać wstępnie załadowaną bibliotekę (napisaną w dowolnym języku innym niż JAVA) za pomocą arbitralnego kodu jazdy napisanego w JAVA i nadal otrzymywać odpowiedź w JAVA.
- Ułatwia JAVA dotarcie do zasobów sprzętowych, które są dostępne do wykorzystania tylko przez inne języki.
- W przypadku, gdy masz kod zależny od platformy już zbudowany dla twojej aplikacji i którego cechy nie są obsługiwane przez JAVA w tym przypadku możemy mieć natywny kod i połączyć ten natywny kod z JAVA poprzez natywne słowo kluczowe.
Reguły:
- Naturalne słowo kluczowe ma być użyte przed nazwą metody.
- Deklaracja natywnej metody nie ma ciała i powinna kończyć się średnikiem, ponieważ te metody nie są zdefiniowane w JAVA, ale są obecne w języku C/C++.
- Natywne metody nie mogą być zadeklarowane jako metody abstrakcyjne.
- Ponieważ nie ma pewności, czy poprzedni stary kod jest napisany zgodnie ze standardem IEEE 754 (The IEEE Standard for Floating-Point Arithmetic jest technicznym standardem dla arytmetyki zmiennoprzecinkowej ustanowionym w 1985 roku przez Institute of Electrical and Electronics Engineers) więc, nie możemy zadeklarować tych natywnych metod jako strictftp.
- Specyfikacja Java Native Interface (JNI) została zaprojektowana przez JAVA w celu zdefiniowania zasad i deklaracji do implementacji metod natywnych, takich jak konwersja typów danych między Javą a kodem natywnym.
Wniosek:
Natywne słowo kluczowe jest tym, co wypełnia lukę między językami natywnymi a JAVĄ. To może być używane jako krytyczny link, jeśli nasze oprogramowanie interakcji ze sprzętem jest więcej, aby uzyskać wydajny kod przy użyciu wcześniej istniejącego kodu. To sprawia, że praca nad implementacją jest mniejsza w porównaniu do projektowania nowego kodu aplikacji od podstaw, gdziekolwiek można tego uniknąć.