JNI ( JAVA Native Interface )
작성자 정보
- 웹관리자 작성
- 작성일
컨텐츠 정보
- 10,344 조회
- 0 추천
- 목록
본문
JNI ( JAVA Native Interface )
ㅇ 제작 : 리눅스포털(www.superuser.co.kr) 수퍼유저코리아 개발팀 이재석
ㅇ SULINUX 홈페이지 : www.sulinux.net
ㅇ 리눅스포털 홈페이지 : www.superuser.co.kr
-
JNI ( JAVA Native Interface ) 란 ?
자바로 만들어진 프로그램에서 특정 플랫폼에서만 실행되는 코드
(Native Code)에 접근하기 위한 API이다.
Native code를 생성하는 다른 언어와 함께 공동작업을 하거나
하드웨어어 보다 깊게 접근하여 컨트롤도 가능하지만
플랫폼이 제한된다는 단접이 있다.
-
사용방법 및 코드 작성법
1단계 : Native Method를 선언하는 자바 클래스 작성
2단계 : 1단계에서 작성한 클래스 컴파일
3단계 : javah를 사용해서 Native Method가 사용할 헤더 파일 생성
4단계 : C언어로 Native Method 실제 구현
5단계 : C 코드와 헤더 파일을 컴파일
6단계 : 자바 프로그램 실행
위에서 보는것 처럼 6단계로 나누어 작업을 하게 된다.
1단계 : Native Method를 선언하는 자바 클래스 작성
-
public class tt {
static {
//시스템 라이브러리 로드(so,dll)
System.loadLibrary("tt");System.out.println("=== library was loaded");
}
//native method 선언
public native String main1();
public native String main2();public static void main(String[] args) throws Exception {
mains1();
mains2();}
public static String mains1() throws Exception {
return new tt().main1();
}
public static String mains2() throws Exception {
return new tt().main2();
}
}
2단계 : 1단계에서 작성한 클래스 컴파일
-
javac tt.java
3단계 : javah를 사용해서 Native Method가 사용할 헤더 파일 생성
-
javah tt
4단계 : C언어로 Native Method 실제 구현
-
#include <jni.h>
#include "tt.h"
#include <stdio.h>JNIEXPORT jstring JNICALL Java_tt_main1(JNIEnv *, jobject)
{
printf("Hello, world ");
return 0;
}JNIEXPORT jstring JNICALL Java_tt_main2(JNIEnv *, jobject)
{
printf("Hello, world1 ");
return 0;
}
5단계 : C 코드와 헤더 파일을 컴파일
-
vc : cl -Ic:jdk1.3.1include -Ic:jdk1.3.1includewin32 -LD HelloWorld.c
gcc : cc –G –I/usr/local/java/include –I/usr/local/java/include/solaris HelloWorld.c –o libhelloworld.so
6단계 : 자바 프로그램 실행
-
java tt
=== library was loaded
Hello, world
Hello, world1
3. JAVA에서 Native code로 파라메타 넘겨주기
JAVA SOURCE
NATIVE SOURCE
관련자료
-
이전
-
다음