Java Native Access
| Java Native Access | |
|---|---|
| Perustieto
| |
| Ylläpitäjä | Todd Fast, Timothy Wall, Liang Chen |
| Nykyinen versio | 5.5.0 (30. lokakuuta 2019) |
| käyttöjärjestelmä | Windows, OS X, Android, AIX, FreeBSD, Linux, OpenBSD, Solaris, Windows Mobile |
| ohjelmointikieli | Java |
| kategoria | Ohjelmistokirjasto |
| Lisenssi | LGPL- versio 2.1 tai uudempi ja (versiosta V4.0) Apache-ohjelmistolisenssi V2.0 |
| github.com/java-native-access/jna | |
Java Native Access ( JNA ) on Java - ohjelmakirjasto, jolla pääsee alustakohtaisiin ("alkuperäisiin") dynaamisiin kirjastoihin ( DLL : t Windowsissa tai "jaetut kirjastot" muissa järjestelmissä). Toisin kuin Java Native Interface (JNI), alustakohtaista koodia ei tarvitse kirjoittaa.
JNA: n toiminta on verrattavissa .NET : n Platform Invocation Services (P / Invoke) -käyttöjärjestelmään Windowsissa. Se tukee automaattista muunnosta joidenkin C- ja Java- tietotyyppien välillä . Pakollinen Java-versio on vähintään 1.4.
Lisenssi
LGPL- versio 2.1 tai uudempi ja (versiosta V4.0) Apache-ohjelmistolisenssi V2.0.
Tietotyyppien kartoitus
Seuraava taulukko osoittaa, miten Java- ja natiivikoodin välinen kartoitus tehdään JNA: lla.
| Alkuperäinen tyyppi | koko | Java-tyyppi | Vakiotyyppi Windows |
|---|---|---|---|
| hiiltyä | 8-bittinen kokonaisluku | tavu | BYTE, TCHAR |
| lyhyt | 16-bittinen | lyhyt | lyhyt SANA |
| wchar_t | 16/32-bittinen merkki | hiiltyä | WCHAR, TCHAR |
| int | 32-bittinen kokonaisluku | int | DWORD |
| int | looginen arvo | looginen | BOOL |
| pitkä | 32/64-bittinen kokonaisluku | AlkuperäinenPitkä | PITKÄÄ |
| pitkä pitkä, __int64 | 64-bittinen kokonaisluku | pitkä | |
| kellua | 32-bittinen FP | kellua | |
| kaksinkertainen | 64-bittinen FP | kaksinkertainen | |
| hiili * | C-merkkijono | Merkkijono | LPCTSTR |
| mitätön * | osoitin | osoitin | LPVOID, KAHVA, LPXXX |
Sovellukset
Seuraavat ohjelmistoprojektit käyttävät JNA: ta:
esimerkki
Seuraava esimerkki lataa Standard C -kirjaston kutsua printf- toimintoa. Tämä esimerkki toimii Microsoft Windowsissa ja Linux / Unix / Mac OS X: ssä .
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
/** Einfaches Beispiel einer Deklaration und Nutzung einer Dynamischen Programmbibliothek bzw. "shared library". */
public class HelloWorld {
public interface CLibrary extends Library {
CLibrary INSTANCE = (CLibrary)Native.loadLibrary((Platform.isWindows() ? "msvcrt" : "c"),
CLibrary.class);
void printf(String format, Object... args);
}
public static void main(String[] args) {
CLibrary.INSTANCE.printf("Hello, World\n");
for (int i=0;i < args.length;i++) {
CLibrary.INSTANCE.printf("Argument %d: %s\n", i, args[i]);
}
}
}
nettilinkit
- Java Native Access Kotisivu (englanti)
- Java Native Access - Lataa sivu (englanti)
- Java Native Access - Käyttäjän postituslista (englanti)
Yksittäiset todisteet
- ↑ github.com
- ↑ Oletustyyppikartoitukset. jna.dev.java.net, käytetty 2. elokuuta 2011 .