자바 JNI란? (네이티브 코드와의 연결)

자바로 개발한 소프트웨어 설치셋에서 JNI라는 폴더를 본적이 있으신가요? 자바 개발의 한계를 극복시켜주는 JNI에 대해 설명드리겠습니다.

Java의 장점과 한계

자바 코드의 장점은 플랫폼으로부터 독립적이라는 것입니다. 쉽게 말해, 자바로 코딩한 소프트웨어는 리눅스에서도 동작하고, 윈도우에서도 동작합니다. 왜냐하면 두 OS 모두 JVM(Java Virtual Machine)을 사용할 수 있기 때문입니다. JVM은 플랫폼에 상관없이 자바 코드를 읽고 실행합니다. 구체적으로 말하면 자바 언어로 코딩해 만든 .java 파일을 컴파일한 .class 파일을 읽습니다.

 

그러나 자바로 개발한 소프트웨어일지라도 네이티브 코드(native code) 사용이 필요한 순간이 있습니다. 네이티브 코드란 C, C++처럼 (JVM 같은)인터프리터 없이 운영체제가 읽을 수 있는 형태로 컴파일해 사용 가능한 코드를 말합니다. 

 

네이티브 코드가 사용되는 경우는 언제일까요? 예를 들면, 하드웨어 자체 기능을 동작시켜야 하는 경우, 프로세스의 성능을 향상해야 하는 경우, 이미 네이티브 코드로 작성된 라이브러리를 사용하고 싶은 경우 등이 있을 수 있습니다.

 

이런 필요를 충족시키기 위해 JVM은 자바 코드와 네이티브 코드를 연결할 수 있는 인터페이스를 제공하고 있습니다. 그게 바로 JNI입니다.

JNI

JNI는 Java Native Interface의 약자입니다. 네이티브와의 접촉점(?)이라고 해석할 수 있겠죠. 위에서 언급한 것처럼 JNI는 자바 코드를 C, C++ 같은 코드로 만들어진 애플리케이션이나 라이브러리와 함께 사용할 수 있도록 연결해주는 역할을 합니다. 이런 방법을 통해 자바로 개발한 소프트웨어는 유연한 플랫폼 활용도를 유지하면서도 자바만으로는 구현하기 어려운 것들을 구현할 수 있습니다.

반응형

댓글

Designed by JB FACTORY