네이티브 라이브러리와 JNI

네이티브 라이브러리(Native Library)는 특정 운영 체제(OS)에서 실행될 수 있도록 C, C++ 등의 네이티브 언어로 작성된 라이브러리다. 윈도우에선 .dll 리눅스 계열에선 .so 형식의 바이너리 파일이 이에 해당한다.

네이티브 언어는 플랫폼에 종속적이라는 점에서 Java와 큰 차이가 있다. 따라서 같은 C 코드라도 윈도우용과 리눅스용을 각각 빌드해야 한다. 반면 java는 플랫폼 독립적이어서 동일한 소스로 어느 OS에서든 실행할 수 있다.

그러나 java는 네이티브 언어로 개발된 .dll 이나 .so 파일의 코드를 직접 실행할 수 없다. 이를 해결 하기 위해 java에서 네이티브 라이브러리를 호출하는 방법으로 JNI(Java Native Interface)를 사용할 수 있다.

JNI는 java코드에서 네이티브 코드를 호출하거나 반대로 네이티브 코드에서 자바 코드를 호출할 수 있도록 해주는 인터페이스다. 이 방식으로 C/C++로 작성된 코드를 java에서 활용할 수 있다.

java 소스에는 jni 인터페이스를 선언하는 소스가 포함되고 so, dll를 로드하여 해당 네이티브 메서드를 호출한다.

댓글 남기기