Rutgers University Excellence Campaign 2/20/2004 Java Native Interface Tutorial Xiaolin Li Rutgers.
-
Upload
philip-beasley -
Category
Documents
-
view
215 -
download
2
Transcript of Rutgers University Excellence Campaign 2/20/2004 Java Native Interface Tutorial Xiaolin Li Rutgers.
Rutgers University Excellence Campaign2/20/2004
Java Native Interface Java Native Interface TutorialTutorial
Xiaolin LiXiaolin Li
RutgersRutgers
2Rutgers University Excellence Campaign
Motivation
• A seamless bridge between Java and native implementation in C, C++ or other languages
Java Application and Library
JVM JNI
Native ApplicationAnd Library
Host Environment(OS)
3Rutgers University Excellence Campaign
Getting Started
1. Create a Java class that declares the native method
Hello.java2. Compile
(javac)
Hello.class3. Javah –jni
HelloHello.h
4. Write C impl Hello.c
5. Compile C code and generate
native lib
Hello.dll or libhello.so
6. DoneRun the java applicationJava Hello
4Rutgers University Excellence Campaign
Hello World// Hello.javapublic class Hello { static { String libpath =
System.getProperty("java.library.path"); libpath += ":."; System.setProperty("java.library.path", libpath); System.loadLibrary("Hello"); } public static void main(String[] args) { Hello hello = new Hello(); hello.Hello();
} private native void Hello();}
5Rutgers University Excellence Campaign
Hello World
// Hello.c
#include <stdio.h>#include <math.h>#include "Hello.h"
JNIEXPORT void JNICALL Java_Hello_hello(JNIEnv* env, jobject obj)
{ printf("Hello, World.\n");}
6Rutgers University Excellence Campaign
Executable Java Applicationint main(int argc, char * argv[]){ JNIEnv *env; JavaVM *jvm; jint res; jclass cls; jmethodID mid; // 1. create JVM res = JNI_CreateJavaVM(&jvm, (void**) &env, &vm_args); // 2. find and load the Java application cls = (*env)->FindClass(env, "Hello"); mid = (*env)->GetStaticMethodID(env, cls, "main",
"([Ljava/lang/String;)V"); // 3. execute it (*env)->CallStaticVoidMethod(env, cls, mid, args); (*jvm)->DestroyJavaVM(jvm);}
Rutgers University Excellence Campaign2/20/2004
Thank YouThank You