Skip to Content

1.6.4 Generieren von C Schnittstellen

Das Programm javah generiert Schnittstellendateien für C Anwendungen. Hiermit lassen sich plattformabhängige C-Programme aus der Javalaufzeitumgebung aufrufen. Dieses Vorgehen wird von JNI (Java Native Interface) unterstützt.

C-Routinen werden nicht in Java implementiert. Sie werden nur deklariert und die Bibliotheken mit den Objektdateien (keine Javaobjekte...) zur Laufzeit dazu gebunden. Die Deklaration findet mit Hilfe des Schlüsselworts native statt. Im folgenden Beispiel wurde eine C-Routine test() als extern deklariert.

HelloWorld.java Quellcode

/**
 *
 * @author Stefan Schneider
 */
public class HelloWorld {
   native int test();

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        System.out.println("Hello Gedit");
    }
}

Die Datei HelloWorld.java muss zuerst mit javac übersetzt werden um dann auf der Datei HelloWorld.class das Kommanda javah aufzurufen.

javac HelloWorld.java
javah HelloWorld

Generierte Datei helloWorld.h

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */

#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     HelloWorld
 * Method:    test
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_HelloWorld_test
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

 



book | by Dr. Radut