native
on java-avainsana. Se merkitsee metodin, että se toteutetaan muilla kielillä, ei Javalla. Metodi julistetaan ilman runkoa, eikä se voi olla abstract
. Se toimii yhdessä JNI:n (Java Native Interface) kanssa.
Syntaksi:
method();
Natiiveja metodeja käytettiin aiemmin suorituskykykriittisten osioiden kirjoittamiseen, mutta javan nopeutuessa tämä on nykyään harvinaisempaa. Natiiveja metodeja tarvitaan tällä hetkellä, kun
- Tarvitaan kutsua javasta kirjastoa, joka on kirjoitettu toisella kielellä.
- Tarvitaan päästä käsiksi järjestelmä- tai laitteistoresursseihin, jotka ovat tavoitettavissa vain toiselta kieleltä (tyypillisesti C). Itse asiassa monet järjestelmätoiminnot, jotka ovat vuorovaikutuksessa oikean tietokoneen kanssa (esimerkiksi levyn ja verkon IO), voivat tehdä tämän vain siksi, että ne kutsuvat natiivikoodia.
Voidaksesi viimeistellä natiivimetodin kirjoittamisen sinun on käsiteltävä luokkasi javah
-työkalulla, joka tuottaa otsikkokoodin C:ssä. Sitten sinun on tarjottava toteutus otsikkokoodista, tuotettava dynaamisesti ladattavissa oleva kirjastokirjastotyyppi (.so
Linuxin alla .dll
Windowsissa .so
), ja ladattava sen sisäänsä (yksinkertaisimmillaan System.load(library_file_name)
. Koodin täydentäminen on triviaalia, jos välitetään vain primitiivisiä tyyppejä, kuten kokonaislukuja, mutta siitä tulee monimutkaisempaa, jos C-koodista on vaihdettava merkkijonoja tai objekteja. Yleensä kaikki voi olla C-tasolla, mukaan lukien uusien objektien luominen ja java-kielellä kirjoitettujen metodien kutsuminen takaisin.
Kutsuaksesi koodia jollakin muulla kielellä (myös C++:lla), sinun täytyy kirjoittaa silta C:stä kyseiselle kielelle. Tämä on yleensä triviaalia, koska useimmat kielet ovat kutsuttavissa C:stä.