Úvod do nativního klíčového slova:
Nativní klíčové slovo funguje jako spojovací článek mezi jazykem JAVA a částí kódu nebo knihovnou napsanou v různých jazycích kromě jazyka JAVA, což může záviset na stroji, na kterém pracujete. Pokud je u metody použito klíčové slovo native, znamená to, že metoda bude implementována pomocí nativního kódu napsaného v jiném jazyce (například C nebo C++) prostřednictvím JNI (JAVA native interface).
Syntaxe:
Syntaxe nativního kódu je stejná jako normální definice funkce s přidáním klíčového slova „native“ na začátku funkce.
Například:
Třída public testing
{public native String testMethod (String parameter);}
Tady public je modifikátor přístupu. Měla by být veřejná, aby ji mohl použít jiný soubor. String je návratový datový typ funkce. Může to být celé číslo, znak nebo logická hodnota v závislosti na klíčovém slově. Parametr předávaný této funkci je rovněž datového typu string. Vše by mělo být vedeno pod třídou.
Po deklaraci funkce voláme tuto funkci prostřednictvím vytvořeného objektu a načtené knihovny.
public static void main(String args)
{
System.loadLibrary(„testing“);
testing testingnew = new testing();
String output = testingnew.stringMethod(„NATIVE“);
}
Výše definovaná knihovna by se měla nejprve načíst a n její objekt vytvořit. Pomocí tohoto objektu se zavolá nativní funkce.
Jak funguje klíčové slovo native?
Měly by existovat dva soubory. Jeden obsahující kód jazyka JAVA, zatímco druhý by měl obsahovat starší kód jazyka C/C++. Kód Javy bude použit pro volání staršího kódu. Tento starší kód bude komunikovat s hardwarem a vracet očekávaný výstup.
Když bude starší kód komunikovat s hardwarem, pak se nebude řídit pokyny stanovenými JAVA. Tento kód provede požadované zpracování, aby získal výstup, a výsledky předá JNI. Nativní rozhraní Javy pak zkontroluje ve svém adresáři obsahujícím všechna pravidla týkající se nativního kódu (Ten se v SDK nachází pod souborem s názvem javah.exe). JNI je navrženo jako součást sady nástrojů Java. Po tomto zpracování JAVA zveřejní výstupy v samotném jazyce JAVA. Když vytváříme program v jazyce JAVA, pak se musíme ujistit, že mezi souborem JAVA a starším souborem existuje vazba na tok proměnných/dat, aby mezi oběma docházelo k plynulému toku dat.
Kroky vysvětlující, jak využít nativní klíčová slova, jsou uvedeny níže:
- Napište kód JAVA obsahující nativní metodu, načtenou sdílenou knihovnu a uložte jej pomocí „filename.JAVA“.
- Kompilujte kód JAVA a převeďte kód do bajtového kódu.
- Vytvořte hlavičkový soubor C/C++ obsahující signaturu nativní funkce, která má být volána.
- Napište kód C/C++ obsahující implementaci nativní metody.
- Spustíte spustitelný soubor JAVA a uvidíte výsledky.
Příklady pro ukázku implementace nativního klíčového slova:
Měli bychom napsat kód v Eclipse a spuštěním kódu vytvořit knihovnu, pomocí které pak bude implementován kód v jazyce C.
Kód: balíček 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 uložení tohoto kódu do nové „třídy“ projektu java. Musíme nastavit spouštěcí prostředí pro generování hlavičkového souboru.
Když toto spustíme, měli bychom dostat vygenerovanou knihovnu.
Výstup:
Z java kódu jsme vytvořili hlavičkový soubor, který bude fungovat jako propojení mezi nativním kódem a jazykem java.
Výhody:
- Poskytuje jazyku JAVA další výhodu v interakci s kódem napsaným v jiných jazycích a snižuje práci s tím, aby byl stejný kód napsán v jazyce JAVA, čímž snižuje redundanci kódu.
- Zlepšuje celkový výkon kódu. Protože kód napsaný v jiném jazyce je možná rychlejší, když pracuje se strojovým jazykem ve srovnání s jazykem JAVA. K volání tohoto kódu pak můžeme použít program JAVA.
- Pomocí tohoto přístupu můžeme přímo zadávat systémová volání. Snižuje se pravděpodobnost vnějšího zásahu a zlepšuje se rychlost provádění kódu.
- Můžete dynamicky volat předem načtenou knihovnu (napsanou v jakémkoli jiném jazyce než JAVA) pomocí libovolného řídicího kódu napsaného v jazyce JAVA a stále dostávat odpověď v jazyce JAVA.
- Zpřístupňuje jazyku JAVA přístup k hardwarovým prostředkům, které jsou k dispozici pouze pro použití jinými jazyky.
- V případě, že máte pro svou aplikaci již sestavený kód závislý na platformě, jehož funkce nejsou podporovány prostřednictvím jazyka JAVA, můžeme v takovém případě mít nativní kód a propojit tento nativní kód s jazykem JAVA prostřednictvím klíčového slova native.
Pravidla:
- Nativní klíčové slovo se používá před názvem metody.
- Deklarace nativní metody nemá tělo a měla by končit středníkem, protože tyto metody nejsou definovány v jazyce JAVA, ale vyskytují se v jazyce C/C++.
- Nativní metody nelze deklarovat jako abstraktní metody.
- Protože není jisté, zda je předchozí starý kód napsán v souladu s normou IEEE 754 (The IEEE Standard for Floating-Point Arithmetic je technická norma pro aritmetiku s pohyblivou řádovou čárkou vytvořená v roce 1985 Institute of Electrical and Electronics Engineers), nemůžeme tyto nativní metody deklarovat jako strictftp.
- Specifikace Java Native Interface (JNI) je navržena JAVA, aby definovala pravidla a deklarace pro implementaci nativních metod, jako je konverze datových typů mezi Javou a nativním kódem.
Závěr:
Nativní klíčové slovo je, které překlenuje propast mezi nativními jazyky a JAVA. Může být použito jako kritické spojení, pokud je interakce našeho softwaru s hardwarem spíše pro získání efektivního kódu s využitím již existujícího kódu. Díky tomu je práce s implementací menší ve srovnání s návrhem nového kódu aplikace od nuly všude tam, kde se tomu lze vyhnout.