native är ett nyckelord i Java. Det markerar att en metod kommer att implementeras i andra språk, inte i Java. Metoden deklareras utan kropp och kan inte abstract. Det fungerar tillsammans med JNI (Java Native Interface).

Syntax:

  method();

Nativa metoder användes tidigare för att skriva prestandakritiska avsnitt, men i och med att java blir snabbare är detta nu mindre vanligt. Nativa metoder behövs för närvarande när

  • Du behöver anropa ett bibliotek, skrivet i ett annat språk, från java.
  • Du behöver få tillgång till system- eller hårdvaruresurser som endast kan nås från det andra språket (vanligtvis C). Faktum är att många systemfunktioner som interagerar med en riktig dator (till exempel disk- och nätverks-IO) endast kan göra detta eftersom de anropar inhemsk kod.

För att slutföra skrivandet av en inhemsk metod måste du bearbeta din klass med javah-verktyget som genererar en header-kod i C. Du måste sedan tillhandahålla en implementering av header-koden, producera ett dynamiskt laddningsbart bibliotek (.so under Linux, .dll under Windows) och ladda det (i det enklaste fallet med System.load(library_file_name) . Kompletteringen av koden är trivial om endast primitiva typer som t.ex. heltal överförs, men blir mer komplicerad om det är nödvändigt att utbyta strängar eller objekt från C-koden. I allmänhet kan allt vara på C-nivå, inklusive skapandet av nya objekt och återkallande av metoder som är skrivna i java.

För att kalla koden i något annat språk (inklusive C++) måste man skriva en brygga från C till det språket. Detta är vanligtvis trivialt eftersom de flesta språk kan anropas från C.

Articles

Lämna ett svar

Din e-postadress kommer inte publiceras.