-자바와 다른 언어간의 기본형 데이터 타입의 차이를 해결 하기 위해서,JNI는 아래 표와 같이 Native Method가 자바의 기본형 데이터에 접근할 수 있도록 미리 정의된 데이터 타입들을 제공
Java Type |
Native Type |
Size in bits |
|
|
8, unsigned |
|
|
8 |
|
|
16, unsigned |
|
|
16 |
|
|
32 |
|
|
64 |
|
|
32 |
|
|
64 |
|
|
n/a |
표 20-1 Native Method를 위해 제공되는 JNI에서 정의된 데이터 타입
Calculator.java(간단한 숫자계산을 위한 Native Method 선언) |
public class Calculator { static { System.loadLibrary("calculator"); } public native int add(int a, int b); public static void main(String[] args) throws Exception { Calculator c = new Calculator(); int result = c.add(10,5); System.out.println(result); } } |
C:\JavaExample\20> javac Calculator.java |
C:\JavaExample\20> javah Calculator C:\JavaExample\20> dir … Calculator.class Calculator.h … |
Calculator.c(간단한 계산의 실제 Native Method의 구현) |
#include <jni.h> #include "Calculator.h" #include <stdio.h> JNIEXPORT jint JNICALL Java_Calculator_add (JNIEnv *env, jobject obj, jint a, jint b){ jint sum; printf("a + b = "); sum = a + b; return sum; } |
C:\JavaExample\20>cl -Ic:\jdk1.3.1\include -Ic:\jdk1.3.1\include\win32 -LD Calculator.c -Fecalculator.dll C:\JavaExample\20>java Calculator a + b = 15 |
'개발 언어 > JAVA' 카테고리의 다른 글
[JNI] 배열혈 아규먼트 (0) | 2011.07.22 |
---|---|
[jni]객체의 메서드 실행하기 (0) | 2011.07.22 |
[jni]객체 필드에 접근하기 (0) | 2011.07.22 |
[jni]문자열 전달 인자 (2) | 2011.07.22 |
[JNI] 단계별 설명 (기본) (0) | 2011.07.22 |