native egy java kulcsszó. Egy metódust jelöl, hogy az más nyelven lesz implementálva, nem Java nyelven. A metódus test nélkül van deklarálva, és nem lehet abstract. A JNI-vel (Java Native Interface) együtt működik.

Szintaktika:

  method();

A natív metódusokat régebben teljesítménykritikus szakaszok írására használták, de a java gyorsabbá válásával ez ma már ritkábban fordul elő. A natív metódusokra jelenleg akkor van szükség, ha

  • A java-ból kell meghívni egy másik nyelven írt könyvtárat.
  • El kell érni olyan rendszer- vagy hardvererőforrásokat, amelyek csak a másik nyelvből (jellemzően C-ből) érhetők el. Valójában sok, a valódi számítógéppel kölcsönhatásba lépő rendszerfüggvény (például lemez és hálózati IO) csak azért teheti ezt meg, mert natív kódot hív.

A natív metódus megírásának befejezéséhez az osztályodat a javah eszközzel kell feldolgoznod, amely C nyelven generál egy fejléckódot. Ezután a fejléckód implementációját kell biztosítanod, dinamikusan betölthető könyvtárat (.so Linux alatt, .dll Windows alatt) kell létrehoznod és betöltened (a legegyszerűbb esetben a System.load(library_file_name) . A kódkitöltés triviális, ha csak primitív típusok, például egész számok kerülnek átadásra, de bonyolultabbá válik, ha stringeket vagy objektumokat kell cserélni a C kódból. Általában minden lehet C szintű, beleértve az új objektumok létrehozását és a java nyelven írt metódusok visszahívását is.

Ahhoz, hogy a kódot valamilyen más nyelven (beleértve a C++-t is) hívjuk, hidat kell írni a C-ből az adott nyelvre. Ez általában triviális, mivel a legtöbb nyelv meghívható a C-ből.

Articles

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.