native er et java-nøgleord. Det markerer en metode, at den vil blive implementeret i andre sprog, ikke i Java. Metoden er deklareret uden en krop og kan ikke abstract. Det fungerer sammen med JNI (Java Native Interface).

Syntaks:

  method();

Native metoder blev tidligere brugt til at skrive ydelseskritiske afsnit, men i takt med at java er blevet hurtigere, er dette nu mindre almindeligt. Native metoder er i øjeblikket nødvendige, når

  • Du har brug for at kalde et bibliotek, skrevet i et andet sprog, fra java.
  • Du har brug for at få adgang til system- eller hardwareressourcer, som kun kan nås fra det andet sprog (typisk C). Faktisk kan mange systemfunktioner, der interagerer med den rigtige computer (f.eks. disk- og netværks-IO), kun gøre dette, fordi de kalder indfødt kode.

For at færdiggøre skrivning af indfødte metoder skal du behandle din klasse med javah værktøj, der genererer en headerkode i C. Du skal derefter levere implementering af headerkoden, producere dynamisk indlæsbart bibliotek (.so under Linux, .dll under Windows) og indlæse det (i det enkleste tilfælde med System.load(library_file_name) . Kodekompletteringen er triviel, hvis der kun overføres primitive typer som integers, men bliver mere kompleks, hvis det er nødvendigt at udveksle strenge eller objekter fra C-koden. Generelt kan alt være på C-niveau, herunder oprettelse af de nye objekter og kald af metoder, der er skrevet i java.

For at kalde koden i et andet sprog (herunder C++) skal man skrive en bro fra C til det pågældende sprog. Dette er normalt trivielt, da de fleste sprog kan kaldes fra C.

Articles

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.