본문 바로가기

카테고리 없음

안드로이드 JNI(Java Native Interface) 동작원리

이번 포스팅에서는 안드로이드 JNI(Java Native Interface) 동작원리에 대해서 알아보겠습니다.


JNI(Java Native Interface)는 기존 C/C++로 작성된 프로그램이나 시스템과의 연계를 위해 사용됩니다. JVM에 실행되고 있는 자바코드를 네이티브 응용 프로그램(특히 하드웨어와 운영 체제 플랫폼)들과 C, C++ 그리고 어셈블리와 같은 다른 언어들로 구현된 라이브러리에 의해 호출되거나 할 수 있는 프로그래밍 프레임워크입니다. 

간단히 말하면, C/C++로 작성한 API를 JAVA에서 호출하게 해주는 기능을 제공합니다. JNI는 그 자체가 중요한 솔루션이 될 수는 없지만, 기존 코드나 시스템과의 인터페이스에 사용되는 JAVA가 가진 아주 좋은 기능 중 하나입니다.



JAVA program은 SDK로 개발할 어플리케이션 계층이며, C/C+ Library는 NDK를 이용하여 컴파일 할 라이브러리 계층이라 보면 됩니다. OpenCV나 OpenGL 등의 라이브러리 등을 사용할 때 주로 사용되는 것이지요. 

NDK를 사용하여 컴파일한 C/C++ 라이브러리 API를 컴파일하고 여기서 제공되는 API를 호출하기 위한 JNI 매핑 소스를 작성하고 컴파일 해야 합니다. 컴파일 결과 생성된 공유 라이브러리가 .so 파일이 됩니다.


이로써 JNI란 무엇인지와 JNI의 구성, 그리고 활용방안에 대하여 알아보았습니다. 다음 포스팅에서는 안드로이드 NDK 개발환경 구축을 진행해보도록 하겠습니다.