Compiling and Running a Java Program with a Native Method |
Now, you can finally write the implementation for the native method in a language other than Java.
Note: Back to that "real world," C and C++ programmers may already have existing implementations of native methods. For those "real" methods, you need only ensure that the native method signature matches the signature generated on the Java side.
The function that you write must have the same function signature as the one generated by
javah
in theHelloWorld.h
file in Step 3: Create the .h File. Recall that the function signature generated for theHelloWorld
class'sdisplayHelloWorld
native method looks like this:Here's the C language implementation for the native methodJNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *, jobject);Java_HelloWorld_displayHelloWorld
. This implementation is in the file namedHelloWorldImp.c
.The implementation for#include <jni.h> #include "HelloWorld.h" #include <stdio.h> JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj) { printf("Hello world!\n"); return; }Java_HelloWorld_displayHelloWorld
is straightforward. The function uses theprintf
function to display the string "Hello World!" and then returns.The
HelloWorldImp.c
file includes three header files:
jni.h
- This header file provides information that the native language code requires to interact with the Java runtime system. When writing native methods, you must always include this file in your native language source files.HelloWorld.h
- The.h
file that you generated in Step 3: Create the .h File.stdio.h
- The code snippet above includesstdio.h
because it uses theprintf
function. Theprintf
function is part of thestdio.h
library.
Compiling and Running a Java Program with a Native Method |