item 66) 네이티브 메서드는 신중히 사용하라
JNI란?
자바 네이티브 인터페이스
자바 프로그램이 네이티브 메서드를 호출하는 기술이다.
네이티브 메서드: C, C++ 같은 네이티브 언어로 작성한 메서드
사용하는 이유
레지스트리 같은 플랫폼 특화 기능을 사용하기 위함
네이티브 코드로 작성된 기존 라이브러리를 사용하기 위함 ex) 레거시 데이터를 사용하는 레거시 라이브러리
성능 개선을 목적으로 성능에 결정적인 영향을 주는 영역만 따로 네이티브 언어로 작성하기 위함 (JVM의 발전으로 인해 대부분 작업에서 다른 플랫폼에 견줄만한 성능을 보이기 때문에 권장하지는 않는다.)
자바가 하부 플랫폼의 기능들을 흡수하여(ex. OS 프로세스 접근 등) 네이티브 메서드의 필요성이 점점 줄고 있다.
네이티브 메서드 단점
자바보다 플랫폼을 많이 타서 이식성이 낮고, 디버깅이 어렵다.
GC가 네이티브 메모리를 추적도 못하고 회수도 못한다.
자바, 네이티브 코드의 경계를 넘나 들때마다 비용이 추가된다.
네이티브 메서드와 자바 코드 사이의 '접착 코드'를 작성해야 하는데, 이는 귀찮고 가독성도 떨어진다.
Last updated