This week's giveaway is in the Android forum.
We're giving away four copies of Android Security Essentials Live Lessons and have Godfrey Nolan on-line!
See this thread for details.
The moose likes Beginning Java and the fly likes JNI What is it, and can I use it Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Android Security Essentials Live Lessons this week in the Android forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "JNI What is it, and can I use it" Watch "JNI What is it, and can I use it" New topic
Author

JNI What is it, and can I use it

Terry Stehle
Greenhorn

Joined: Mar 24, 2001
Posts: 24
I was wondering what JNI was and if I could use it to convert my C++ program that I have written with Borland C++ Builder 5.0 into java. I would appricate any help, Thanks!
Cindy Glass
"The Hood"
Sheriff

Joined: Sep 29, 2000
Posts: 8521
The JNI (Java Native Interface) will let you use your C code WITHOUT converting it to JAVA. You just blend them together using this interface.
Here is a tutorial: http://java.sun.com/docs/books/tutorial/native1.1/index.html


"JavaRanch, where the deer and the Certified play" - David O'Meara
Terry Stehle
Greenhorn

Joined: Mar 24, 2001
Posts: 24
Thanks for you help
jrmchen
Greenhorn

Joined: Mar 26, 2001
Posts: 5
Example of How to use JNI to let Java Call C
Including Java Send Para (no pointer) into C and Java Get Value returned from C function
[Step 1]
>Create HelloWorld.java
-------------------------------------------------------
class HelloWorld {
public native void displayHelloWorld(int mint);
public native int ReturnValue(int mint);
static {
System.loadLibrary("hello");
}

public static void main(String[] args) {
new HelloWorld().displayHelloWorld(123);
int i=new HelloWorld().ReturnValue(123);
System.out.println(i);
}
}
-------------------------------------------------------
[Step 2]
>Command Line Type
d:\jni\javac HelloWorld.java
-------------------------------------------------------
[Step 3]
>Command Line Type
d:\jni\javah HelloWorld
HelloWorld.h would be automaticly Created
/* 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: ReturnValue
* Signature: (I)I
*/

JNIEXPORT jint JNICALL Java_HelloWorld_ReturnValue
(JNIEnv *, jobject, jint);
/*
* Class: HelloWorld
* Method: displayHelloWorld
* Signature: (I)V
*/
JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld
(JNIEnv *, jobject, jint);
#ifdef __cplusplus
}
#endif
#endif
-------------------------------------------------------
[Step 4]
>Write HelloWorldImp.c file
#include <jni.h>
#include "HelloWorld.h"
#include <stdio.h>
JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj,jint mint)
{
printf("My Hello world %d!\n",mint);
return;
}
JNIEXPORT jint JNICALL Java_HelloWorld_ReturnValue(JNIEnv *env, jobject obj,jint mint)
{
return mint+1;
}
-------------------------------------------------------
[Step 5]
>Make hello.dll Using VC commandline
cl -I c:\jdk1.3\include -I c:\jdk1.3\include\win32 -LD HelloWorldImp.c -FeHello.dll
Message Displayed
/dll
/implib:Hello.lib
/out:Hello.dll
HelloWorldImp.obj
Creating library Hello.lib and object Hello.exp
-------------------------------------------------------
[Step 6]
> Run HelloWorld.class
Message Displayed
My Hello world 123!
124
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: JNI What is it, and can I use it
 
Similar Threads
what is JNI and what are the advantages of JNI?
question about Servlets
JNI with UDP !!!!
SCAE - Question regarding consuming C++ applicaiton in Java
C# is good for JNI ?