아이템 66. 네이티브 매서드는 신중히 사용하라.
이펙티브 자바
아이템 66. 네이티브 매서드는 신중히 사용하라.
자바 네이티브 인터페이스(JNI)는 자바 프로그램이 C나 C++ 같은 네이티브 언어로 작성한 메소드를 말한다.
자바 네이티브 인터페이스의 주요 쓰임세
-
레지스터리 같은 플랫폼 특화 기능을 사용한다.
-
네이티브 코드로 작성된 기존 라이브러리를 사용한다.
-
성능 개선을 목적으로 성능에 결정적인 영향을 주는 부분만 네이티브 코드로 작성한다.
성능을 개선을 목적으로 네이티브 메서드를 사용하는 것은 권장하지 않는다.
네이티브 메서드의 단점
- 네이티브 메서드가 안전하지 않으므로(아이템 50) 네이티브 메서드를 사용하는 애플리케이션도 메모리 회손 오류로 부터 안전하지 않다.
- 네이티브 언어는 자바보다 플랫폼을 많이 타 이식성이 어렵다.
- 디버깅도 어렵다.
- 주의하지 않으면 속도가 더 느릴수 있다.
- 가비지 컬렉터가 메모리를 회수 하지 못하고 심지어 추적할수도 없다.(아이템 8)
- 자바와 네이티브 메서드를 넘나들때 비용이 발생한다.
- 네이티브 메서드와 자바코드 사이에 접착코드(glue code)를 작성 해야 하는데 귀찮은 작업이다.