[Item 66] 네이티브 메서드는 신중히 사용하라
2022. 8. 21. 11:36ㆍJAVA/Effective Java
자바 네이티브 인터페이스(java Native Interface, JNI) 는 자바 프로그램이 네이티브 메서드를 호출하는 기술이다.
여기서 네이티브 메서드란 C나 C++ 같은 네이티브 프로그래밍 언어로 작성한 메서드를 말한다.
전통적인 네이티브 메서드의 쓰임
- 레지스트리 같은 플랫폼 특화 기능을 사용한다.
- 네이티브 코드로 작성된 기존 라이브러리를 사용한다. 레거시 데이터를 사용하는 레거시 라이브러리가 그 예다.
- 성능 개선을 목적으로 성능에 결정적인 영향을 주는 영역만 따로 네이티브 언어로 작성한다.
성능을 개선할 목적으로 네이티브 메서드를 사용하는 것은 거의 권장하지 않는다.
고성능의 다중 정밀 연산이 필요한 자바 프로그래머라면 네이티브 메서드를 통해 GMP를 사용하는 걸 고려하면 된다.
네이티브 메서드 단점
- 네이티브 언어가 안전하지 않으므로 네이티브 메서드를 사용하는 애플리케이션도 메모리 훼손 오류로부터 더 이상 안전하지 않다.
- 자바보다 플랫폼을 많이 타서 이식성도 낮다.
- 디버깅도 어렵다.
- 주의하지 않으면 속도가 더 느려질 수 있다.
- 가비지 컬렉터가 네이티브 메모리는 자동 회수하지 못하고, 심지어 추적조차 할 수 없다.
.. 등이 있다.
핵심정리
- 고성능의 다중 정밀 연산이 필요하지 않고서는 네이티브 메서드를 사용하는 것은 권하지 않는다.
참고자료
이펙티브 자바 3/E - 교보문고
프로그래밍인사이트 | 자바 6 출시 직후 출간된 『이펙티브 자바 2판』 이후로 자바는 커다란 변화를 겪었다. 그래서 졸트상에 빛나는 이 책도 자바 언어와 라이브러리의 최신 기능을 십분 활용
www.kyobobook.co.kr
'JAVA > Effective Java' 카테고리의 다른 글
[Item 68] 일반적으로 통용되는 명명 규칙을 따르라 (0) | 2022.08.21 |
---|---|
[Item 67] 최적화는 신중히 하라 (0) | 2022.08.21 |
[Item 65] 리플렉션보다는 인터페이스를 사용하라 (0) | 2022.08.21 |
[Item 64] 객체는 인터페이스를 사용해 참조하라 (0) | 2022.08.14 |
[Item 63] 문자열 연결은 느리니 주의하라 (0) | 2022.08.14 |