Java Native Access

Java-Bibliothek
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 10. Januar 2014 um 11:09 Uhr durch Jmau2002 (Diskussion | Beiträge). Sie kann sich erheblich von der aktuellen Version unterscheiden.

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 JNI kein plattform-spezifischer Code geschrieben zu werden.

Java Native Access
Basisdaten

Aktuelle Version 4.0.0
(4. Juli 2013)
Betriebssystem Windows, OS X, Android, AIX, FreeBSD, Linux, OpenBSD, Solaris, Windows Mobile
Programmier­sprache 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

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]);
    }
  }
}

References

  1. https://github.com/twall/jna#readme