JHB의 프로그래밍 삽질기

[Android JNI/NDK] JNI와 NDK에 대한 대략적인 설명 본문

PROGRAMMING/Android/Java

[Android JNI/NDK] JNI와 NDK에 대한 대략적인 설명

roter 2015.09.17 23:23

Android JNI와 NDK 라는 말을 들어봤을 것이다.

나는 이 둘을 대충 안드로이드에서 JAVA가 아닌 C/C++로 개발 할 때 필요한 방법? 쯤으로 알고 있었다. 하지만 그 둘의 정확한 차이가 무엇인지는 정확히 알지 못했다.

일단 용어 설명부터 하자면

JNI

 

Java Native Interface의 약자. 자바에서 C/C++의 함수를 호출하거나, 반대로 C/C++에서 자바의 클래스와 메소드를 사용할 수 있게 해주는 인터페이스. 참고로 이게 Android를 위해 있는게 아니고 기본 Java에도 있음. 책방에 갔다가 1997년에 나온 JNI책을 보고 깜짝 놀란 기억이...

 

NDK

 

Android SDK 와 같은 개발 키트임. SDK가 Software Development Kit 이듯이, NDK는 Native Development Kit이다. 안드로이드 NDK는 안드로이드 환경에서 JNI를 구성하는데 도움을 주는 개발 키트다.

 

 

 

자바로 만든 Application은 DalvikVM이 해석할 수 있는 바이트코드가 포함된 실행파일이다. 애플리케이션이 실행될 때 이 실행파일은 Dalvik VM안에 있는 컴파일러(JIT)에 의해 네이티브 코드로 변환된 후 CPU에 의해 실행된다.(안드로이드 2.2 이후부터..)

 

NDK로 만들어진 라이브러리는 달빅VM을 거치지 않고, CPU가 직접 실행한다. 따라서 빠르다.

 

 

저작자 표시 비영리 변경 금지
신고
0 Comments
댓글쓰기 폼