미니 프로젝트에 활용할 용도로 JNI의 개념과 사용법에 대해서 작성해보고자 한다.
(그리고 사용하지 않는 이유도..)
그에 따른 장점 - 하나의 소스코드로 작성한 프로그램을 플랫폼에 상관없이 실행 가능
=> 이 경우 C, C++을 이용해서 컴파일한 모듈을 자바에서 호출해 사용하는 방법 고려
사용되는 경우
1. 하드웨어 자체 기능을 동작시켜야 하는 경우
2. 프로세스의 성능을 향상해야 하는 경우
3. 이미 네이티브 코드로 작성된 라이브러리를 사용하고 싶은 경우
public class JNI {
static {
System.loadLibrary("MyJNI"); // 라이브러리 동적 로딩
}
// 메소드 선언
private native int getNumber();
private native void printHelloWorld();
public static void main(String[] args) {
JNI jni = new JNI();
jni.printHelloWorld();
System.out.println(jni.getNumber());
}
}
static 블럭은 System.loadLibrary()를 이용해 라이브러리를 동적으로 로딩.
native 키워드는 native 언어인 c/c++에서 작성한 메서드를 사용하기 위한 키워드이다.
동적으로 로딩된 라이브러리에서 native 키워드로 선언된 해당 메소드를 찾아서 연결해준다.
참고 글
https://hbase.tistory.com/82
https://mommoo.tistory.com/71
https://change-words.tistory.com/entry/%EC%9E%90%EB%B0%94-JNI