---
title: 'JNA (Java Native Access)'
url: 'https://www.tutego.de/blog/javainsel/2012/08/jna-java-native-access'
markdown: 'https://www.tutego.de/blog/javainsel/2012/08/jna-java-native-access.md'
date: '2012-08-25'
description: 'Eine Bibliothek zum Ansprechen dynamischer Bibliotheken ohne JNA-Kontakt und damit ohne C(++)-Compiler ist JNA (Java Native Access). Beheimatet ist das Projekt unter und es steht unter der Lizenzform LGPL. JNA benötigt nur das Archiv jna.jar im Klassenpfad und geht dann fast von selbst zur dynamis…'
taxonomy:
  category:
    - Insel
---

# JNA (Java Native Access)

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://www.tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://www.tutego.de/blog/javainsel/)

## JNA (Java Native Access)

25.08.2012 · [Christian Ullenboom](https://www.tutego.de/blog/javainsel/author/admin/)

Eine Bibliothek zum Ansprechen dynamischer Bibliotheken ohne JNA-Kontakt und damit ohne C(++)-Compiler ist JNA (Java Native Access). Beheimatet ist das Projekt unter und es steht unter der Lizenzform LGPL. JNA benötigt nur das Archiv jna.jar im Klassenpfad und geht dann fast von selbst zur dynamischen Bibliotheken. Verschiedene Plattformen werden unterstützt, dazu zählen Windows, Linux und Mac OS X.

Zur dem Zugriff müssen allerdings Java-Schnittstellen als typisierte Versionen der nativen Funktionen deklariert werden, damit auch die Datentypen von der Java-Seite automatisch auf Datentypen der nativen Seite gemappt werden können. Die Dokumentation unter eigt ein Beispiel (hier etwas gekürzt):

```java
import com.sun.jna.*;

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

Die Übertragung der Funktionen von der C-Seite in Java-Schnittstellen – wie `CLibrary` in dem Beispiel – kann auch mit JNAerator () automatisiert werden.

Kategorien: [Insel](https://www.tutego.de/blog/javainsel/category/insel/)

## 1 Kommentare

**daniel** · [25.08.2012 14:09](#comment-4239)

Im ersten Satz muss es nicht JNA-Kontakt, sondern JNI-Kontakt heißen.

Die bisherigen Kommentare wurden aus WordPress übernommen. Neue Kommentare sind derzeit geschlossen.

[← Alle Beiträge](https://www.tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [Snippet: List all MessageDigest provider](https://www.tutego.de/blog/javainsel/2012/08/snippet-list-all-messagedigest-provider.md)
- Next: [BridJ](https://www.tutego.de/blog/javainsel/2012/08/bridj.md)
