Java Native Access
Java Native Access | |
---|---|
Basisdaten
| |
Aktuelle Version | 4.2.1 (18. Oktober 2015) |
Betriebssystem | Windows, OS X, Android, AIX, FreeBSD, Linux, OpenBSD, Solaris, Windows Mobile |
Programmiersprache | Java |
Kategorie | Software Bibliothek |
Lizenz | LGPL Version 2.1 oder höher und (ab V4.0) die Apache Software License V2.0 |
github.com/java-native-access/jna |
Java Native Access (JNA) ist eine Java-Programmbibliothek für den Zugriff auf plattformspezifische („native“) dynamische Programmbibliotheken (DLLs in Windows oder „shared libraries“ auf anderen Systemen). Hierbei braucht im Unterschied zu Java Native Interface (JNI) kein plattform-spezifischer Code geschrieben zu werden.
JNA ist in der Funktion mit den Platform Invocation Services (P/Invoke) von .NET unter Windows vergleichbar. Es unterstützt eine automatische Umwandlung zwischen einigen C- und Java-Datentypen. Die minimal erforderliche Java-Version ist 1.4.
Lizenz
LGPL Version 2.1 oder höher und (ab V4.0) die Apache Software License V2.0.[1]
Anwendungen
Die folgenden Softwareprojekte verwenden JNA:
Beispiel
Das folgende Beispiel lädt die Standard C Library, um die printf-Funktion aufzurufen. Dieses Beispiel funktioniert auf Microsoft Windows und 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
- Java Native Access Homepage (englisch)
- Java Native Access - Download page (englisch)
- Java Native Access - User Mailing List (englisch)