next up previous
Next: 5.3 Makefile Up: 5 ネイティブ言語の呼び出し Previous: 5.1 Cプログラム

5.2 Javaプログラム

C言語のプログラムをロードするJavaプログラムは 以下のようになる.

static { ... }
は,staticブロック というもので, クラスがロードされた時に実行されるブロックである. Linuxでは,Helloを指定すると, libHello.soというファイルをロードする.
// Hello.java:
import java.lang.*;
import java.io.*;

public class Hello{
  static{
    System.loadLibrary("Hello");
  }
  public Hello(){
  }
  public native void greeting();
  public static void main(String args[]){
    Hello h = new Hello();
    h.greeting();
  }
}
javahで生成されるプログラムは以下のようになる.
/* DO NOT EDIT THIS FILE - 
  it is machine generated */
#include <jni.h>
/* Header for class Hello */

#ifndef _Included_Hello
#define _Included_Hello
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     Hello
 * Method:    greeting
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_Hello_greeting
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif


generated through LaTeX2HTML. M.Inaba 平成18年5月7日