Java Native Keyword and Methods

Overview

tässä nopeassa opetusohjelmassa keskustelemme natiivin avainsanan käsitteestä Javassa ja näytämme myös, miten natiivin menetelmät integroidaan Java-koodiin.

natiivi Avainsana Javassa

ensinnäkin keskustellaan siitä, mikä on natiivi avainsana Javassa.

Yksinkertaisesti sanottuna kyseessä on ei-access-modifioija, jota käytetään muun kuin Javan kielellä toteutettujen menetelmien, kuten C / C++: n, käyttöön.

se ilmaisee jonkin menetelmän tai koodin alustariippuvaista toteutusta ja toimii myös rajapintana JNI: n ja muiden ohjelmointikielten välillä.

natiivimenetelmät

natiivimenetelmä on Java-menetelmä (joko instanssimenetelmä tai luokkamenetelmä), jonka toteutus on kirjoitettu myös toisella ohjelmointikielellä, kuten C / C++: lla.

lisäksi natiiviksi merkityllä menetelmällä ei voi olla runkoa ja sen tulisi päättyä puolipisteeseen:

 native method ();

Voimme käyttää niitä:

  • toteuta rajapinta järjestelmäkutsuilla tai muilla ohjelmointikielillä kirjoitetuilla kirjastoilla
  • pääsyjärjestelmä tai laitteistoresurssit, jotka ovat saavutettavissa vain toiselta kieleltä
  • integroi jo olemassa oleva C/C++ – kielellä kirjoitettu vanha koodi Java-sovellukseen
  • soita koottuun dynaamisesti ladattuun kirjastoon, jossa on mielivaltaista koodia Javasta

esimerkkejä

nyt näytetään, miten nämä menetelmät integroidaan Java-koodiimme.

4, 1. Haetaan Natiivikoodia Java-kielellä

ensinnäkin luodaan luokkadatimeutils, joka tarvitsee käyttöön alustariippuvaisen natiivimenetelmän nimeltä getSystemTime:

public class DateTimeUtils { public native String getSystemTime(); // ...}

sen lataamiseen käytämme järjestelmää.loadLibrary.

Let ’ s place the call to load this library in a staattinen block so that it is available in our class:

public class DateTimeUtils { public native String getSystemTime(); static { System.loadLibrary("nativedatetimeutils"); }}

we have created a dynamic-link library, nativedatetimeutils, that implies getSystemTime in C++ using detailed instructions covered in our guide to JNI article.

4, 2. Native Methods

lopuksi katsotaan, miten voimme testata DateTimeUtils-luokassa määriteltyjä natiivimenetelmiä:

public class DateTimeUtilsManualTest { @BeforeClass public static void setUpClass() { // .. load other dependent libraries System.loadLibrary("nativedatetimeutils"); } @Test public void givenNativeLibsLoaded_thenNativeMethodIsAccessible() { DateTimeUtils dateTimeUtils = new DateTimeUtils(); LOG.info("System time is : " + dateTimeUtils.getSystemTime()); assertNotNull(dateTimeUtils.getSystemTime()); }}

alla on metsurin ulostulo:

 INFO c.b.n.DateTimeUtilsManualTest - System time is : Wed Dec 19 11:34:02 2018

kuten näemme, natiivi-avainsanan avulla pääsemme onnistuneesti alustariippuvaiseen toteutukseen kirjoitettuna toisella kielellä (meidän tapauksessamme C++).

johtopäätös

tässä artikkelissa olemme oppineet natiivien avainsanojen ja menetelmien perusteet. Nopean esimerkin avulla olemme myös oppineet integroimaan ne Javaan.

tässä artikkelissa käytetyt koodinpätkät ovat saatavilla Githubin kautta.

Aloita kevät 5: llä ja Kevätsotku 2: lla, Opi kevät-kurssin kautta:

>> tsekkaa kurssi

Vastaa

Sähköpostiosoitettasi ei julkaista.