오늘 알아볼 것
- JNI는 뭘까?
- NDK는 뭘까?
JNI는 뭘까?
JNI(Java Native Interface)
- JVM위에서 실행되고 있는 자바코드가 네이티브 응용 프로그램 그리고 C,C++ 그리고 어셈블리와 같은 다른언어로 작성된 라이브러리들을 호출하거나, 자바가 호출 당하는것을 가능하게 하는 프로그래밍 프레임 워크라고 한다.
즉, JAVA가 실행속도가 느린편인데 이를 통해 프로세스의 성능을 향상시킬 수 있다고 한다.
++ 자바에서 지원되지 않는 특정 운영체제 서비스도 실행할 수 있게 만들어준다고 한다.
JNI가 구현(필요 구성요소)되려면?
- 자바코드
- 네이티브(C, C++와 같이 운영체제자체에서 돌아가는 언어파일들)코드
- JNI 헤더 파일
- C/C++ 컴파일러
가 필요하다 한다.
JNI가 작동되는 원리.
1. 네이티브 메소드를 선언하는 자바 클래스를 작성해야 한다고 한다.
2. 1단계에서 작성한 클래스를 먼저 컴파일한다.
3. JAVA.h를 사용해서 네이티브 메소드가 사용할 헤더 파일을 생성하게 된다고 한다.
4. C언어로 네이티브 메소드를 실제로 구현한다고한다.(실제는 이미 만들어진 코드에 헤더파일 추가?)
5. C 코드와 헤더 파일을 컴파일하게 된다고 한다.
6. 자바 프로그램을 실행한다.
NDK는 뭘까?
- NDK(Native Development Kit)는 Android에서 C와 C++코드를 사용할 수 있게끔 해주는 일련의 툴 모음집이라고 한다.
이거 말고도 비슷한 개념인, SDK, PDK도 있다고 한다.
그저, JNI가 만들어질 수 있도록 하게끔 도와주는 툴인 것 같다.
근데 위에서 말했던 SDK와 다른점은, NDK는 C/C++를 사용할 수 있게 해준다고 한다.
= HAL(Hardware Abstraction Layer)의 구성/형태에 따라 굉장히 민감할 수 밖에 없다.
(PDK = platform developer's kit / SDK, NDK를 포괄하는 개념이라고 한다.)
여기서 얻을 수 있는 장점
- 기존에 C로 만들어진 대규모 코드를 JAVA에서 다시 만들 필요없이 재사용이 가능하다고 한다.
- 시스템 디바이스 접근과 JAVA성능을 넘어선 작업이 필요할때 유용하다.
- 속도 및 성능을 향상시킬 수 있다.
기본 빌드도구
- CMAKE
- Android 네이티브 개발 키트(NDK)
- LLDB(이건 위에 두개에 들어가있는 디버거?)
출처 및 참고 -
JAVA - JNI 사용하기
오늘 포스팅은 Java JNI ( Java Native Interface) 입니다. 자바는 특정 운영체제에 종속되지 않도록, JVM이라는 가상머신 위에서 실행되게끔 만들어진 언어입니다. 운영체제에 맞는 JVM이 각기 존재하기
mommoo.tistory.com
https://cishome.tistory.com/174
[안드로이드] NDK 란?
NDK(Native Development Kit)는 Android에서 C 및 C++ 코드를 사용할 수 있게 해주는 일련의 도구 모음입니다. NDK는 다음과 같은 작업을 하나 이상 수행해야 하는 경우 유용할 수 있습니다. 기기에서 최대한
cishome.tistory.com
'Android' 카테고리의 다른 글
안드로이드 부팅시 작동 순서 찾아보기 (0) | 2023.03.27 |
---|---|
안드로이드에서 사용하는 자바는 뭐가 다를까? (0) | 2023.03.15 |
apk tool이란 무엇일까? (0) | 2023.03.15 |
Android에 대한 간단한 고찰. (0) | 2023.03.11 |