Začíname s natívnym rozhraním Java (JNI)

Getting Started With Java Native Interface



Natívne rozhranie Java, skrátene JNI, je programovacie rozhranie, ktoré umožňuje vývojárom v jazyku Java spúšťať kódy a úryvky z iných programovacích jazykov v jazyku Java. Dodáva sa spolu so základnou súpravou Java Software Development Kit alebo SDK (na to sa pozrieme v inom návode).

JNI je uznávaný aj vďaka svojej funkcii volať po API, aby sa vplížil do virtuálneho počítača Java v aplikáciách Java. To umožňuje vývojárom vyvolať java kód v kóde natívnej aplikácie.







Ak ste strávili nejaký čas prácou s Java, pravdepodobne ste už narazili na mnoho problémov s výkonom, ktoré sa vám nevyhnutne vyskytli. To nie je problém, keď spustíte rovnaký kód v materinskom jazyku, ktorý môže pri čítaní v kompilovanom modeli fungovať viac ako osemnásťkrát rýchlejšie. Okrem toho môžete použiť aj zastarané/nekompatibilné hardvérové ​​rutiny s natívnymi kódmi v iných jazykoch.



Tento tutoriál ukáže, ako je možné strojový kód C/C ++ vyvolať z aplikácie java.



Predpoklady

Budete potrebovať niekoľko vecí, ktoré musíte s touto príručkou správne vykonať. Patrí sem kompilátor Java alebo Javac.exe spolu s JVM, ako aj natívny generátor metódy C (javah.exe). Všetky tri sú zabudované do súpravy na vývoj softvéru, takže ste všetci v poriadku, ak to máte. Okrem týchto troch budete potrebovať aj súbory definujúce JNI vrátane pôvodných hlavičkových súborov a kompletných súborov knižnice.





A samozrejme, v tutoriále o spustení kódov C a C ++ použijeme kompilátor C aj na vytvorenie zdieľanej knižnice.

Komponenty JNI

JNI poháňajú hlavne dve zložky, a to h a javah. H je súčasť súboru záhlavia, ktorá nahrádza natívne kódy kódom java, zatiaľ čo Javah ho robí tak, že tento súbor je možné načítať do súborov záhlavia aplikácie sám.



Vyvolávanie C/C ++ z kódu Java

Krok 1: Napíšte kód v Jave

Kód je najskôr napísaný v jave a je v súlade s tromi podmienkami. Najprv je napísaný natívnou metódou, ktorá sa má vyvolať neskôr. Za druhé, musí načítať zdieľanú knižnicu, ktorej súčasťou je natívny kód, a nakoniec musí vyvolať natívne metódy.

Tento kód použijeme na ďalšiu ilustráciu:

Oznámenie riadky 3 a 6; toto sú riadky, kde sú zahrnuté natívne metódy. Kód, ktorý načíta zdieľané knižnice, sa nachádza na riadku 10, čo vedie k vyvolaniu metódy medzi riadkami 12 až 15.

Krok 2: Kompilácia kódu java do bytecode

Druhý krok súvisí so zostavením kódu Java. Kompilátor javac tu môže urobiť prácu za nás; stačí zadať nasledujúci príkaz:

$ javac Príklad1.java

Krok 3: Vytvorte hlavičkové súbory C/C ++

Ďalej je potrebné vytvoriť hlavičkové súbory v rodnom jazyku. Tieto súbory hlavičiek poháňajú podpisy natívnych kódov.

Tieto hlavičkové súbory je možné vytvoriť pomocou natívneho nástroja javah, generátora C stub dodávaného so súpravou SDK, pomocou nasledujúceho príkazu:

javah Príklad1

Mal by sa vrátiť nasledujúci výstup:

Krok 4: Zapísanie natívneho kódu

Tu budeme písať kód C/C ++. Mali by ste si všimnúť všetky podpisy, ktoré sa musia podobať vyhláseniam, ktoré sme urobili v kroku 1.

Nasleduje implementácia napísaná v jazyku C:

Krok 5: Vytvorte zdieľanú knižnicu

Zdieľanú knižnicu je možné vytvoriť pomocou ľubovoľného kompilátora. Pretože zdieľaná knižnica obsahuje natívny kód, budeme ho musieť vytvoriť.

Krok 6: Spustite program

Tento krok zahŕňa vyhodnotenie kódu a identifikáciu akýchkoľvek problémov s programom. Bude to zahŕňať runtime prostredie Java, pretože kód sa bude primárne vykonávať v JVM.

Zadajte nasledujúci príkaz:

java Príklad 1

Malo by sa vrátiť:

To bol teda náš krátky začiatočnícky návod na používanie natívneho rozhrania Java. Dúfame, že vám to pomohlo.

Naučiť sa pracovať s JNI je nevyhnutné pre každého, kto chce vyvíjať aplikácie Java, najmä aplikácie pre Android pre smartfóny.