Search

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

“사용하지 마라!”

 네이티브 인터페이스(Java Native Interface, JNI)

자바 프로그램에서 네이티브 메서드를 호출하는 기술이다.
네이티브 메서드는 C, C++ 같은 네이티브 프로그래밍 언어로 작성한 메서드를 말한다.

 네이티브 메서드는 언제 쓰일까?

1.
레지스트리 같은 플랫폼 특화 기능을 사용할 때
플랫폼 특화 기능을 활용할 때, 네이티브 메서드를 사용한다.
그러나 자바는 점점 하부 플랫폼(OS 같은)의 기능들을 흡수하고 있다.
따라서 네이티브 메서드를 사용할 필요가 줄어들고 있다.
2.
네이티브 코드로 작성된 기존 라이브러리를 사용할 때
3.
성능 개선 목적으로 사용할 때
성능 개선 목적으로 성능에 결정적인 영향을 주는 영역만 따로 네이티브 언어로 작성할 수 있다.
성능 목적이라면 권장하지 않는다.
JVM은 엄청난 속도로 발전하면서 다른 플랫폼에 견줄만한 성능을 보이고 있다.

 네이티브 메서드의 심각한 단점들

네이티브 언어가 안전하지 않아 애플리케이션도 메모리 훼손 오류로부터 더 이상 안전하지 않다.
자바보다 이식성이 낮다.
디버깅이 힘들다.
주의하지 않으면 속도가 오히려 느릴 수 있다.
GC가 네이티브 메모리는 자동 회수하지 못하고, 추적조차 못할 수 있다.
자바 코드와 네이티브 코드의 경계를 넘어들 때마다 비용이 추가된다.
네이티브 메서드와 자바 코드 사이 접착 코드를 작성해야 하는데 번거롭다.
가독성이 떨어진다.

 핵심 정리

네이티브 메서드는 사용하지 마라!