본문 바로가기

STUDY/이펙티브자바

9-10) 네이티브 메소드는 신중히 사용하라

자바 네이티브 인터페이스(JNI)

 

자바 네이티브 인터페이스는 자바 프로그램이 C/C++ 같은 네이티브 언어로 작성된 프로그램을 호출하는 기술이다. JNI는 플랫폼 특화 기술을 활용 하거나, 네이티브 언어로 작성된 기존 라이브러리를 사용하거나, 성능 개선을 하고 싶을때 사용한다. 하지만 자바가 성숙해가면서 플랫폼의 기능들을 점차 흡수하고 있고, 자바로 작성된 라이브러리의 수도 상당히 늘어났다. 또 JVM이 발전하면서 자바의 성능도 상당부분 개선이 되었기 때문에 네이티브 메소드를 사용해야하는 상황은 흔치않다.

 

 


JNI 실습

 

// JNI.java
public class JNI {
	static {
		System.loadLibrary("JNI");
	}
	
	private native void printHelloWorld();
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		JNI jni = new JNI();
		
		jni.printHelloWorld();
	}
}

 

// JNI.h
#include <jni.h>

#ifndef _Included_JNI
#define _Included_JNI
#ifdef __cplusplus
extern "C" {
#endif

JNIEXPORT void JNICALL Java_JNI_printHelloWorld
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

// main.c
#include <stdio.h>
#include <jni.h>
#include "JNI.h"

JNIEXPORT void JNICALL Java_JNI_printHelloWorld(JNIEnv * jenv, jobject jobj) {
	printf("Hello World");
}
728x90