출처: http://cafe.naver.com/teamdaydream.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=222
1. 일단 자바 소스를 만듭니다.
2. 그리고 컴파일합니다.[ javac HelloWorld.java ]
3. C에서 사용하기 위한 헤더 파일을 얻습니다. [ javah -jni HelloWorld ]
4. 헤더 파일을 기준으로 C코드를 작성합니다.
5. C 파일을 컴파일 합니다.
cl -I"C:\Program Files\Java\jdk1.6.0\include" -I"C:\Program Files\Java\jdk1.6.0\include\win32" -MD -LD HelloWorld.c
(따옴표는 'Program Files' 사이의 공백을 포함한 한 문자열임을 나타내기 위해서 집어넣은 것입니다.)
6. 자바 프로그램을 실행합니다. [ java HelloWorld ]
HelloWorld.java
public class HelloWorld
{
public native void print(String msg);
static
{
System.loadLibrary("HelloWorld");
}
public static void main(String args[])
{
new HelloWorld().print(args[0]);
}
}
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: print
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_HelloWorld_print
(JNIEnv *, jobject, jstring);
#ifdef __cplusplus
}
#endif
#endif
HelloWorld.c
//#include <jni.h>
#include <stdio.h>
#include "HelloWorld.h"
JNIEXPORT void JNICALL Java_HelloWorld_print(JNIEnv *env, jobject obj, jstring msg)
{
jboolean iscopy;
char *message=(*env)->GetStringUTFChars(env,msg,&iscopy);
printf("Hello JNI World~~~%s\n",message);
return;
}
실행 결과
> java HelloWorld HelloWorld
Hello JNI World~~~realwolf
결과를 보면 짐작하시겠지만 자바에서 C로 작성된 함수를 실행하는 예제입니다.
아직 구체적으로 배운 건 없지만 하드웨어 제어에 사용하면 좋을 듯 합니다.
실제 하드웨어를 제어하는 코드를 C로 작성하고 인터페이스는 Java로 제공하는 것이지요.
나중에 기회가 되서 J2ME를 배우게 된다면 뭔가 알 수 있지 않을까하고 막연히 생각만 해봅니다;;