728x90
안녕하세요.
오늘은 JNA 와 JNI 에 대하여 알아보려고 합니다.
두 가지 모두 Java의 Native와 관련된 개념들입니다.
때로는 기능 개발을 위해서 네이티브 코드 사용이 필요한 경우가 존재하는데요.
이때 사용할 수 있는 것이 바로 JNA, JNI입니다.
두 가지의 개념과 차이점은 무엇일까요?
JNI (Java Native Interface)
Java에서 C의 Native Lib를 접근하기 위해 이용하는 인터페이스입니다.
JNI는 Java에서 Native 영역으로 들어가 호출 하거나 혹은 그 반대로 Native 에서 Java 로 호출하는 Interface로 C / C++ 로 만든 라이브러리 또는 솔루션을 Java 에서 바로 사용할 수 있도록 돕습니다.
실행 과정은 아래와 같습니다.
- Native Method 선언을 위한 Class 작성
- Java Compile
- Javah 사용 Native 함수가 구현할 Header 파일 생성
- Native 언어 ( C , C++ ) 이용 Native 함수 구현 혹은 기존 라이브러리 연결
- 구현 Native 소스 Compile
- Native Method를 선언한 Java Class 실행
JNA (Java Native Access)
JNI를 API로 구현한 라이브러리입니다.
JNA 라이브러리는 JNI 코드 작성 없이 기본 라이브러리에 액세스 하기 위해 사용합니다. 추가적인 연결 코드를 작성하지 않아도 된다는 장점을 가지게 되는 것이죠.
또한 libffi (Foreign function interface library)라 불리는 native library를 사용하여 dynamic 하게 쓸 수 있게 하며 dependency 추가로 사용이 가능합니다.
다만 C++ 은 사용이 불가합니다.
실행 과정은 다음과 같습니다.
- 구현한 Native Source Compile (gcc)
- Native Method 선언 Java Class 작성
- Native Method 선언 Java Class 실행
- Java Compile
728x90
'Java > About Java' 카테고리의 다른 글
[Java] 생성자 (2) | 2023.01.31 |
---|---|
[Java] Java Memory Leak (0) | 2023.01.11 |
[Java] Primitive Type & Reference Type (0) | 2023.01.09 |
[Java] Java Memory (1) | 2022.12.28 |
[Java] JDK, JVM, JRE (0) | 2022.12.27 |