Java natív hozzáférés
| Java natív hozzáférés | |
|---|---|
| Alapadatok
| |
| Fenntartó | Todd Fast, Timothy Wall, Liang Chen |
| Jelenlegi verzió | 5.5.0 (2019. október 30.) |
| operációs rendszer | Windows, OS X, Android, AIX, FreeBSD, Linux, OpenBSD, Solaris, Windows Mobile |
| programozási nyelv | Jáva |
| kategória | Szoftvertár |
| Engedély | LGPL 2.1-es vagy újabb verzió, és (a V4.0-tól) az Apache szoftverlicenc V2.0 |
| github.com/java-native-access/jna | |
A Java Native Access ( JNA ) egy Java - programkönyvtár platformspecifikus ("natív") dinamikus könyvtárak ( DLL-ek Windows-ban vagy "megosztott könyvtárak" más rendszereken) eléréséhez . A Java Native Interface (JNI) -vel ellentétben nem szükséges platformspecifikus kódot írni.
A JNA funkciója összehasonlítható a .NET Platform Invocation Services (P / Invoke) szolgáltatásával Windows alatt. Támogatja az automatikus átalakítást egyes C és Java adattípusok között . A minimálisan szükséges Java verzió 1.4.
Engedély
LGPL 2.1-es vagy újabb verzió, valamint (a V4.0-tól) az Apache szoftverlicenc V2.0.
Az adattípusok feltérképezése
Az alábbi táblázat bemutatja, hogyan történik a Java és a natív kód közötti leképezés a JNA-val.
| Natív típus | méret | Java típus | Normál Windows típus |
|---|---|---|---|
| char | 8 bites egész szám | byte | BYTE, TCHAR |
| rövid | 16 bites | rövid | rövid SZÓ |
| wchar_t | 16/32 bites karakter | char | WCHAR, TCHAR |
| int | 32 bites egész szám | int | DWORD |
| int | logikai érték | logikai érték | BOOL |
| hosszú | 32/64 bites egész szám | NativeLong | HOSSZÚ |
| hosszú hosszú, __int64 | 64 bites egész szám | hosszú | |
| úszó | 32 bites FP | úszó | |
| kettős | 64 bites FP | kettős | |
| char * | C karakterlánc | Húr | LPCTSTR |
| érvénytelen * | mutató | mutató | LPVOID, FOGANTYÚ, LPXXX |
Alkalmazások
A következő szoftverprojektek használják a JNA-t:
példa
Az alábbi példa betölti a Standard C könyvtárat a printf függvény meghívására . Ez a példa Microsoft Windows és Linux / Unix / Mac OS X rendszereken működik .
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]);
}
}
}
web Linkek
- Java Native Access Honlap (angol)
- Java natív hozzáférés - oldal letöltése (magyar)
- Java natív hozzáférés - Felhasználói levelezőlista (angol)
Egyéni bizonyíték
- ↑ github.com
- ↑ Alapértelmezett típusú leképezések. jna.dev.java.net , 2011. augusztus 2 .