JNI jest również czczony, aby funkcja wywoływała API, aby zakraść się w wirtualnej maszynie Java w aplikacjach Java. Umożliwia to dewelom wywołanie kodu Java w kodzie natywnej aplikacji.
Jeśli spędziłeś trochę czasu na pracy z Javą, prawdopodobnie już natkniesz się na wiele problemów związanych z wydajnością, które nieuchronnie nadejdą na twoją drogę. To nie jest problem, gdy uruchamiasz ten sam kod w języku ojczystym, który może działać ponad osiemnaście razy szybciej, gdy odczytano w skompilowanym modelu. Oprócz tego możesz również używać przestarzałych/niezgodnych procedur sprzętowych z natywnymi kodami w innych językach.
Ten samouczek pokaże, w jaki sposób można wywołać kod C/C ++ z komputera z aplikacji Java.
Wymagania wstępne
Będziesz potrzebować kilku rzeczy, aby właściwie przestrzegać tego przewodnika. Należą do nich kompilator Java lub Javac.exe, wraz z JVM, a także natywnym generatorem metody C (Javah.exe). Wszystkie trzy z nich są wbudowane w zestaw programistycznych, więc wszyscy jesteście dobrzy, jeśli to masz. Oprócz tych trzech potrzebujesz również plików definiujących JNI, w tym plików nagłówków natywnych i kompletnych plików biblioteki.
I oczywiście, w samouczku o uruchomieniu kodów C i C ++, użyjemy również kompilatora C do utworzenia biblioteki udostępnionej.
Komponenty JNI
JNI jest napędzany głównie dwoma komponentami, a mianowicie H i Javah. H jest komponentem pliku nagłówka, który zastępuje natywne kody kodem Java, podczas gdy Javah tworzy, aby ten plik można było załadować do plików nagłówka aplikacji samodzielnie.
Wywołując C/C ++ z kodu Java
Krok 1: Pisanie kodu w Javie
Kod jest najpierw napisany w Javie i jest zgodny z trzema warunkami. Po pierwsze, jest napisany natywną metodą, która zostanie powołana później. Po drugie, musi załadować współdzieloną bibliotekę, której częścią jest kod natywny, a na koniec musi wywoływać metody natywne.
Użyjmy tego kodu, aby jeszcze bardziej zilustrować:
UWAGA LINIA 3 i 6; Są to linie, w których uwzględniane są metody natywne. Kod, który ładuje wspólne biblioteki, znajduje się w linii 10, co prowadzi do wywołania metody między wierszami 12–15.
Krok 2: Kompilowanie kodu Java do kodu bajtego
Drugi krok dotyczy opracowania kodu Java. Kompilator Javac może wykonać dla nas zadanie; Po prostu wydaj poniższe polecenie:
$ Javac Przykład 1.JawaKrok 3: Utwórz pliki nagłówka C/C ++
Następnie należy utworzyć pliki nagłówka języka ojczystego. Ten nagłówek zasila podpisy natywnych kodów.
Te pliki nagłówka można utworzyć za pomocą natywnego narzędzia Javah, generatora STUP w pakiecie z SDK, używając następującego polecenia:
Javah Przykład 1Następujące dane wyjściowe powinny powrócić:
Krok 4: Pisanie kodu natywnego
W tym miejscu napiszemy kod C/C ++. Powinieneś zwrócić uwagę na wszystkie podpisy, które muszą przypominać deklaracje, które złożyliśmy w kroku 1.
Poniżej znajduje się implementacja napisana w języku C:
Krok 5: Utwórz bibliotekę udostępnioną
Udostępnioną bibliotekę można utworzyć z dowolnym kompilatorem. Ponieważ współdzielona biblioteka zawiera kod natywny, będziemy musieli go utworzyć.
Krok 6: Uruchom swój program
Ten krok obejmuje ocenę kodu i identyfikację problemów z programem. Będzie to obejmować środowisko wykonawcze Java, ponieważ kod zostanie wykonany przede wszystkim w JVM.
Wydaj następujące polecenie:
Przykład Java1Powinien powrócić:
To był nasz krótki przewodnik po użyciu natywnego interfejsu Java. Mamy nadzieję, że uznałeś to za pomocne.
Nauka pracy z JNI jest niezbędna dla każdego, kto chce opracować aplikacje Java, zwłaszcza aplikacje na Androida do smartfonów.