최근 수정 시각 : 2022-08-02 22:27:13

JNI

1. 개요2. 사용 목적3. 예제4. JNA

Java Native Interface.

1. 개요

JavaFFI로 Java 언어/JVM에서 C/C++ 언어의 함수를 호출하기 위한 API이다.

JDK10 미만은 javah 명령으로 C/C++ 헤더 파일을 생성할 수 있다. 그러나 JDK9 부터는 javah 명령이 Deprecated 되어, 소스 코드를 javac 로 컴파일 할 때 -h 옵션을 주면 헤더 파일을 자동 생성해준다. 이렇게 나온 헤더 파일에 맞춰 C/C++ 코드를 작성하게 된다.

2. 사용 목적

주로 사용되는 목적은 다음과 같다.
  • 이미 존재하는 방대한 C/C++ 코드를 활용하기 위해.
  • Java로 구현하면 너무 느린 기능의 속도 향상을 위해.
  • JVM에서 지원하지 않는 운영체제의 기능을 호출하기 위해.

3. 예제

4. JNA

유사 기술로 JNA(Java Native Access)가 있다. JNI가 자바 소스코드로 부터 헤더파일을 생성해 주는 것과 달리 libffi라 불리는 Native Library를 사용하여 동적으로 Native 함수를 호출해 준다.

분류