Java Native Access
| Java Native Access | |
|---|---|
| Grundlæggende data
| |
| Vedligeholdelse | Todd Fast, Timothy Wall, Liang Chen |
| Aktuel version | 5.5.0 (30. oktober 2019) |
| operativ system | Windows, OS X, Android, AIX, FreeBSD, Linux, OpenBSD, Solaris, Windows Mobile |
| programmeringssprog | Java |
| kategori | Softwarebibliotek |
| Licens | LGPL version 2.1 eller nyere og (fra V4.0) Apache softwarelicens V2.0 |
| github.com/java-native-access/jna | |
Java Native Access ( JNA ) er et Java - programbibliotek til adgang til platformsspecifikke ("native") dynamiske biblioteker ( DLL'er i Windows eller "delte biblioteker" på andre systemer). I modsætning til Java Native Interface (JNI) skal der ikke skrives nogen platformsspecifik kode.
JNA's funktion kan sammenlignes med Platform Invocation Services (P / Invoke) af .NET under Windows. Det understøtter automatisk konvertering mellem nogle C- og Java- datatyper . Den mindst krævede Java-version er 1.4.
Licens
LGPL version 2.1 eller nyere og (fra V4.0) Apache softwarelicens V2.0.
Kortlægning af datatyperne
Den følgende tabel viser, hvordan kortlægningen mellem Java og den oprindelige kode udføres med JNA.
| Indfødt type | størrelse | Java-type | Standard Windows-type |
|---|---|---|---|
| char | 8-bit heltal | byte | BYTE, TCHAR |
| kort | 16-bit | kort | kort WORD |
| wchar_t | 16/32-bit karakter | char | WCHAR, TCHAR |
| int | 32-bit heltal | int | DWORD |
| int | boolsk værdi | boolsk | BOOL |
| lang | 32/64-bit heltal | NativeLong | LANG |
| lang lang, __int64 | 64-bit heltal | lang | |
| flyde | 32-bit FP | flyde | |
| dobbelt | 64-bit FP | dobbelt | |
| char * | C-streng | Snor | LPCTSTR |
| ugyldig * | markør | markør | LPVOID, HÅNDTAG, LPXXX |
Ansøgninger
Følgende softwareprojekter bruger JNA:
eksempel
I det følgende eksempel indlæses Standard C-biblioteket for at kalde printf- funktionen. Dette eksempel virker på Microsoft Windows og Linux / Unix / Mac OS X .
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]);
}
}
}
Weblinks
- Hjemmeside for Java Native Access (engelsk)
- Java Native Access - Download side (engelsk)
- Java Native Access - Brugerpostliste (engelsk)
Individuelle beviser
- ↑ github.com
- ↑ Standardtypekortlægninger. jna.dev.java.net, adgang til 2. august 2011 .