이펙티브 자바/9장 일반적인 프로그래밍 원칙

아이템 66 네이티브 메서드는 신중히 사용하라

말랑공룡 2023. 12. 14. 20:03

 

- 자바의 네이티브 인터페이스(Java Native Interface, JNI)는 자바 프로그램이 네이티브 메서드를 호출하는 기술이다.

- 네이티브 메서드란 C나 C++같은 네이티브 프로그래밍 언어로 작성한 메서드를 말한다.

- 즉, 자바 애플리케이션에서 C나 C++언어로 된 파일을 읽어들여 메소드 형태로 호출할 수 있게 하는 것이다.

 

public class NativeExample {
    // 네이티브 메서드 선언
    public native void nativeMethod();

    // 정적 블록에서 라이브러리 로드
    static {
        System.loadLibrary("NativeLibrary");
    }

    // 메인 메서드
    public static void main(String[] args) {
        NativeExample example = new NativeExample();
        // 네이티브 메서드 호출
        example.nativeMethod();
    }
}

 

<단점>

- 네이티브 언어는 자바보다 플랫폼을 많이 타서 이식성이 낮고 디버깅도 더 어렵다.

- 가비지 컬렉터가 네이티브 메모리는 자동 회수하지 못하고 심지어 추적조차 할 수 없다.

- 네이티브 메서드와 자바 코드 사이에 접착 코드(glue code)를 작성해야 하는데, 이는 귀찮을뿐더러 가독성도 떨어진다.

 

<결론>

- 네이티브 메서드가 성능을 개선해 주는 일은 많지 않다.

- 최소한만 사용하고 철저히 테스트 하라.