✅ Natvie 키워드란?
Java의 native
키워드는 Java 언어로 작성된 코드에서 네이티브 코드(다른 언어로 작성된 코드)를 사용하기 위해 선언하는 키워드입니다. native
메서드는 Java 언어로 작성된 메서드가 아니라, 네이티브 코드로 작성된 메서드를 참조하고 호출할 수 있도록 합니다.
native
키워드가 사용된 메서드는 메서드의 구현부가 Java 코드가 아니라, 외부 언어로 작성된 네이티브 코드로 제공됩니다. 네이티브 코드는 주로 C, C++ 등의 언어로 작성되며, 특정 플랫폼 또는 하드웨어와 밀접하게 연관된 기능을 사용하기 위해 활용됩니다. 예를 들어, 운영체제의 API 호출, 하드웨어 접근, 외부 라이브러리와의 상호작용 등을 네이티브 코드를 통해 구현할 수 있습니다.
➡️ native 메서드는 다음과 같은 특징을 가지고 있습니다:
native
메서드는 선언만 하고 구현은 Java 코드 내에서 제공하지 않습니다. 대신에 네이티브 코드를 사용하여 외부에서 구현된 기능을 호출합니다.
native
메서드는native
키워드로 선언된 이후에 외부에서 구현된 네이티브 라이브러리와 연결될 때까지 호출할 수 없습니다.
native
메서드는 일반적인 Java 메서드와 마찬가지로 호출될 수 있으며, Java 코드 내에서는 일반적인 메서드처럼 사용됩니다.
- 네이티브 메서드는 성능 향상이나 특정 기능의 구현을 위해 사용될 수 있으며, Java의 기본 라이브러리에도 네이티브 메서드가 사용되고 있습니다.
native
키워드를 사용하여 선언된 네이티브 메서드는 Java Native Interface (JNI)를 통해 Java 코드와 네이티브 코드 간의 상호작용을 가능하게 합니다. JNI는 Java와 네이티브 코드 간의 데이터 전달 및 호출 인터페이스를 제공하여 상호 운용성을 지원합니다.
✅ 자바가 다른 언어로 작성된 코드를 사용할 수 있는 이유
Java에서 Native 키워드를 사용하여 다른 언어로 작성된 코드를 호출할 수 있는 이유는 Java Virtual Machine (JVM)과 Java Native Interface (JNI)라는 두 가지 주요 요소에 기인합니다. JVM은 Java 프로그램을 실행하기 위한 가상의 컴퓨터입니다. Java 언어로 작성된 코드는 JVM에서 실행되며, JVM은 운영체제와 하드웨어 사이에 추상화된 인터페이스 역할을 수행합니다. 이는 Java 코드가 플랫폼에 독립적으로 실행될 수 있게 해줍니다. JVM은 Java 바이트코드를 읽고 해석하여 해당 플랫폼에서 실행 가능한 기계어로 변환합니다.
JNI는 Java 언어와 다른 네이티브 언어 간의 상호 운영성을 제공하는 프레임워크입니다. JNI를 사용하면 Java 코드에서 네이티브(C, C++, Assembly 등) 언어로 작성된 함수를 호출할 수 있습니다. Native 키워드를 사용하여 선언된 메서드는 실제로 JVM에서 실행되는 Java 코드가 아니라, JNI를 통해 연결된 네이티브 함수를 호출합니다.
➡️ 일반적으로 JNI를 사용하여 네이티브 코드를 호출하는 과정은 다음과 같습니다:
- Java 소스 코드에서 Native 키워드를 사용하여 네이티브 메서드를 선언합니다.
- Java 컴파일러는 해당 메서드를 처리하지 않고, 네이티브 메서드에 대한 링크 정보를 생성합니다.
- Java 클래스 파일을 JVM에서 실행합니다.
- JVM은 네이티브 메서드에 대한 링크 정보를 사용하여 JNI를 통해 네이티브 라이브러리를 로드하고, 해당 함수를 실행합니다.
- 네이티브 라이브러리는 네이티브 코드를 실행하고 결과를 반환합니다.
- JVM은 결과를 다시 Java 코드로 전달하고, 프로그램의 실행이 계속됩니다.
JNI는 Java에서 네이티브 코드를 사용해야 하는 경우, 특히 하드웨어 접근이나 기존 C/C++ 라이브러리의 활용 등의 상황에서 유용합니다. 하지만 네이티브 코드와의 상호 운영성을 위해 사용해야 하므로, 신중한 사용이 필요합니다. 또한 JNI를 사용하는 경우에는 성능 저하가 있을 수 있으므로, 성능에 민감한 애플리케이션에서는 신중한 디자인과 테스트가 필요합니다.
Uploaded by N2T