native je klíčové slovo jazyka Java. Označuje metodu, která bude implementována v jiných jazycích, nikoli v Javě. Metoda je deklarována bez těla a nemůže být abstract. Funguje společně s JNI (Java Native Interface).

Syntaxe:

  method();

Nativní metody se v minulosti používaly pro zápis výkonově kritických úseků, ale se zrychlením Javy je to nyní méně časté. Nativní metody jsou v současnosti potřeba, když

  • Potřebujete z javy zavolat knihovnu, napsanou v jiném jazyce.
  • Potřebujete přistupovat k systémovým nebo hardwarovým prostředkům, které jsou dosažitelné pouze z jiného jazyka (typicky C). Ve skutečnosti mnoho systémových funkcí, které komunikují se skutečným počítačem (například diskové a síťové IO), to může dělat jen proto, že volají nativní kód.

Pro dokončení zápisu nativní metody musíte zpracovat svou třídu pomocí nástroje javah, který vygeneruje hlavičkový kód v jazyce C. Poté musíte zajistit implementaci hlavičkového kódu, vytvořit dynamicky načítanou knihovnu (.so pod Linuxem, .dll pod Windows) a načíst ji (v nejjednodušším případě pomocí System.load(library_file_name) . Doplnění kódu je triviální, pokud se předávají pouze primitivní typy, jako jsou celá čísla, ale stává se složitějším, pokud je třeba vyměnit řetězce nebo objekty z kódu C. Obecně lze říci, že vše může být na úrovni jazyka C, včetně vytváření nových objektů a zpětného volání metod, napsaných v javě.

Chcete-li volat kód v nějakém jiném jazyce (včetně C++), musíte napsat můstek z jazyka C do tohoto jazyka. To je obvykle triviální, protože většina jazyků je volatelná z jazyka C.

Articles

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.