Acces nativ Java
| Acces nativ Java | |
|---|---|
| Date de bază
| |
| Întreținător | Todd Fast, Timothy Wall, Liang Chen |
| Versiunea actuală | 5.5.0 (30 octombrie 2019) |
| sistem de operare | Windows, OS X, Android, AIX, FreeBSD, Linux, OpenBSD, Solaris, Windows Mobile |
| limbaj de programare | Java |
| categorie | Biblioteca software |
| Licență | LGPL Versiunea 2.1 sau o versiune ulterioară și (de la V4.0) licența software Apache V2.0 |
| github.com/java-native-access/jna | |
Java Native Access ( JNA ) este o bibliotecă Java - program pentru acces la biblioteci dinamice specifice platformei („native”) ( DLL-uri în Windows sau „biblioteci partajate” pe alte sisteme). Spre deosebire de Java Native Interface (JNI), nu trebuie scris niciun cod specific platformei.
Funcția JNA este comparabilă cu Platform Invocation Services (P / Invoke) din .NET în Windows. Acceptă conversia automată între unele tipuri de date C și Java . Versiunea Java minimă necesară este 1.4.
Licență
LGPL Versiunea 2.1 sau o versiune ulterioară și (de la V4.0) licența software Apache V2.0.
Cartarea tipurilor de date
Tabelul următor arată cum se face maparea între Java și codul nativ cu JNA.
| Tipul nativ | mărimea | Tip Java | Tip Windows standard |
|---|---|---|---|
| char | Întreg pe 8 biți | octet | BYTE, TCHAR |
| mic de statura | 16 biți | mic de statura | cuvânt scurt |
| wchar_t | Caracter de 16/32 biți | char | WCHAR, TCHAR |
| int | Întreg pe 32 de biți | int | DWORD |
| int | valoare booleană | boolean | BOOL |
| lung | Număr întreg de 32/64 de biți | NativLung | LUNG |
| lung lung, __int64 | Întreg pe 64 de biți | lung | |
| pluti | FP pe 32 de biți | pluti | |
| dubla | FP pe 64 de biți | dubla | |
| char * | Șir C | Şir | LPCTSTR |
| nul * | indicator | indicator | LPVOID, HANDLE, LPXXX |
Aplicații
Următoarele proiecte software folosesc JNA:
exemplu
Următorul exemplu încarcă biblioteca Standard C pentru a apela funcția printf . Acest exemplu funcționează pe Microsoft Windows și 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]);
}
}
}
Link-uri web
- Pagina de pornire Java Native Access (engleză)
- Java Native Access - Pagina de descărcare (engleză)
- Java Native Access - Lista de corespondență a utilizatorilor (engleză)
Dovezi individuale
- ↑ github.com
- ↑ Asocieri tip implicite. jna.dev.java.net, accesat la 2 august 2011 .