Java Native Access

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Java Native Access
Aktuelle Version 4.1.0
(06.03.2014)
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

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.

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[Bearbeiten]

LGPL Version 2.1 oder höher und (ab V4.0) die Apache Software License V2.0. [1]

Anwendungen[Bearbeiten]

Die folgenden Softwareprojekte verwenden JNA:

Beispiel[Bearbeiten]

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[Bearbeiten]

Einzelnachweise[Bearbeiten]

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