새소식

공부/안드로이드

NDK와 JNI란?

  • -

NDK와 JNI


NDK와 JNI의 용어 차이

NDK(Native Development Kit) : Android OS에서 C/C++ 언어를 사용하게 하기 위한 개발 도구

Android는 아키텍쳐, 버전별 기본적으로 환경구성(라이브러리 및 ls 와같은 명령어 등)이 다르다. 그래서 NDK를 통해 개발 해야 하는건데, NDK로 개발시 Android 아키텍쳐 및 버전에 따라 자동으로 컴파일 할 수 있으므로 매우 편하다.

JNI (Java Native Interface) : Java에서 C/C++로 작성한 로직을 사용하게 해주는 인터페이스

JNI는 말 그대로 저수준의 언어(C/C++)로 작성된 로직을 Java 코드에 로드하여 사용할 수 있게 도와주는 인터페이스(쉽게 말해서 문법)이다.

Android NDK(Native Development Kit)

Android NDK(Native Development Kit)는 개발자가 C 및 C++와 같은 기본 코드 언어를 사용하여 Android 앱의 일부를 작성할 수 있게 해주는 도구다. 이는 앱의 성능을 최적화해야 하거나 특정 장치별 기능에 액세스해야 하는 경우에 유용하다.

보통 NDK를 사용하여 개발할때 실제로 대부분의 앱은 성능이 중요한 특정 부분에만 네이티브 코드를 사용하고 앱의 나머지 부분은 ​​Java로 작성한다.

  • NDK는 프로그래밍 언어가 아니라 Android용 기본 코드를 더 쉽게 작성할 수 있게 해주는 도구 및 라이브러리 집합이다.
  • NDK를 사용하면 개발자가 자바 기반 Android 프레임워크와 상호작용할 수 있는 고성능 저수준 코드를 작성할 수 있다.
  • NDK는 기본 시스템 및 하드웨어에 대한 액세스를 제공하므로 Java만으로는 불가능한 기능을 가진 앱을 만들 수 있다.
  • Android NDK를 사용하려면 C 및 C++ 프로그래밍에 대한 기본적인 이해와 Android 앱 개발에 익숙해야 한다. 또한 개발 머신에 NDK를 설치하고 이를 사용하도록 개발 환경을 구성해야 한다.

Android JNI(Java Native Interface)

Android JNI(Java Native Interface)는 개발자가 Android 앱에 네이티브 코드(C/C++)를 작성하고 Java로 작성된 나머지 앱과 통합할 수 있는 강력한 도구다. 이를 통해 개발자는 대부분의 앱에 익숙하고 사용하기 쉬운 Java 프로그래밍 언어를 계속 사용하면서 네이티브 코드의 성능 이점을 활용할 수 있다.

 

  • JNI는 Java 코드와 네이티브 코드 사이의 브리지다.
  • Java 코드가 네이티브 코드를 호출하거나 그 반대로 호출할 수 있도록 하는 일련의 API를 제공한다.
  • C/C++로 고성능 저수준 코드를 작성하고 Java로 작성된 나머지 앱과 통합할 수 있어 앱의 성능을 최적화해야 하거나 특정 장치별 기능에 액세스해야 하는 경우에 유용하다.
  • JNI를 사용하려면 C/C++에서 구현될 네이티브 메서드를 선언하는 Java 클래스를 작성해야 한다. 그런 다음 이러한 메서드를 구현하는 네이티브 코드를 작성해야 한다. 마지막으로 네이티브 코드를 공유 라이브러리로 컴파일하고 런타임에 Java 코드에 로드해야 한다.
  • JNI를 사용할 때 염두에 두어야 할 한 가지 중요한 사항은 기본 코드가 기본 시스템 및 하드웨어에 직접 액세스할 수 있다는 것이다. 이는 버그 및 보안 취약성에 더 취약할 수 있음을 의미한다.

'공부 > 안드로이드' 카테고리의 다른 글

안드로이드가 부팅 될 때 동작 순서  (0) 2023.03.17
JVM이란?  (0) 2023.03.09
Decompile이란?  (0) 2023.03.09
안드로이드 JAVA, Kotlin  (0) 2023.03.09
안드로이드의 개념과 4대 구성 요소  (0) 2023.03.09
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.