가비지 컬렉터: 더 이상 참조되지 않는 객체를 메모리에서 제거하여 메모리 누수를 방지합니다.
자바 네이티브 인터페이스(JNI)
자바 애플리케이션이 C, C++ 같은 네이티브 코드와 상호작용할 수 있게 해주는 인터페이스입니다. JNI를 통해 네이티브 라이브러리를 호출할 수 있으며, 시스템 레벨의 기능을 사용할 수 있습니다.
네이티브 라이브러리? 시스템 레벨의 기능?
네이티브 라이브러리(Native Library)
정의
네이티브 라이브러리: C, C++ 등의 언어로 작성된 라이브러리로, 자바 애플리케이션에서 JNI(Java Native Interface)를 통해 호출할 수 있습니다. 네이티브 라이브러리는 자바가 기본적으로 제공하지 않는 저수준의 기능이나 최적화된 성능을 제공합니다.
용도
성능 최적화: 일부 연산이나 처리가 자바보다 C/C++에서 더 빠르게 실행될 수 있기 때문에 성능을 최적화하기 위해 네이티브 라이브러리를 사용합니다.
플랫폼 종속 기능: 자바가 추상화한 기능 외에 특정 운영체제나 하드웨어에서만 사용할 수 있는 기능을 접근하기 위해 사용됩니다.
기존 코드 재사용: 이미 존재하는 C/C++ 라이브러리를 재사용하여 개발 시간을 절약하고 기능을 확장할 수 있습니다.
시스템 레벨의 기능(System-Level Functions)
정의
시스템 레벨의 기능: 운영체제의 핵심 기능에 직접 접근하거나 제어하는 저수준 기능을 의미합니다. 이러한 기능들은 일반적으로 시스템 콜(System Call)을 통해 접근하며, 파일 시스템, 메모리 관리, 하드웨어 제어 등과 관련된 작업을 포함합니다.
예시
파일 시스템 접근: 파일 생성, 읽기, 쓰기, 삭제 등의 작업을 수행합니다.
네트워크 통신: 소켓 프로그래밍을 통해 네트워크 인터페이스를 직접 제어하고 통신을 수행합니다.
메모리 관리: 동적 메모리 할당, 해제, 메모리 맵핑 등을 수행합니다.
프로세스 관리: 프로세스 생성, 종료, 프로세스 간 통신(IPC) 등을 제어합니다.
하드웨어 제어: 특정 하드웨어 장치(예: 프린터, 센서, 그래픽 카드 등)를 제어하고, 직접 상호작용합니다.
네이티브 메서드 라이브러리(Native Method Library)
JNI를 통해 호출되는 네이티브 코드 라이브러리입니다. 성능 최적화 및 하드웨어 접근을 위해 사용됩니다.
자바 네이티 인터페이스 & 네이티브 메서드 라이브러리
JNI는 Java 애플리케이션이 네이티브 메서드 라이브러리에 정의된 네이티브 코드를 호출할 수 있도록 하는 인터페이스입니다. 네이티브 메서드 라이브러리는 실제 네이티브 함수들을 포함하고 있으며, 이 함수들은 시스템 콜을 사용하여 하드웨어 접근이나 성능 최적화를 수행할 수 있습니다. Java 애플리케이션이 네이티브 메서드를 호출하면, JNI는 네이티브 메서드 라이브러리에서 해당 함수의 주소를 찾아 호출을 수행합니다.