이펙티브 자바, 쉽게 정리하기 - item 66. 네이티브 메서드는 신중히 사용하라
네이티브 메서드란?
- C, C++ 같은 네이티브 프로그래밍 언어로 작성한 메서드이다.
- 자바 네이티브 인터페이스(JNI)라는 기술에 의해 호출된다.
네이티브 메서드의 쓰임
- 레지스트리와 같이 플랫폼 특화 기능을 사용한다.
- 네이티브 코드로 작성된 기존의 라이브러리를 활용한다.
- 성능 개선 목적으로 성능에 중요한 부분만 네이티브 메서드를 쓴다.
- 다만 성능을 개선할 목적으로 네이티브 메서드를 사용하는 것조차 거의 권장하지 않는다.
네이티브 메서드를 쓴다면?
- 성능 개선 목적으로 쓰지말자. JVM은 빠른 속도로 발전해왔고, 현재는 특수한 경우가 아니면 네이티브 메서드가 필요 없을 정도로 많이 빨라졌다.
- 단, 다중 정밀 연산 라이브러리(GMP)의 경우는 많은 개선이 있어와서 네이티브 메서드를 쓰는 것을 고려할 수 있다.
- 네이티브 메서드는 플랫폼도 많이 타서 이식성도 많이 떨어진다. 디버깅하기도 어렵다. 가비지 컬렉터에 의해 네이티브 메모리가 회수되지도 않는다.
- 자바 코드와 네이티브 코드의 경계를 넘어다니면서 생기는 비용도 있다. 일명 접착 코드 (glue code) 라고 불리는데 다루기 귀찮고 가독성도 떨어진다.
핵심 정리
- 네이티브 메서드가 생각보다 성능을 개선해주지 않는다.
- 어쩔 수 없을 때 최소한으로 사용하고 철저히 테스트하자.
- 네이티브 코드 안의 단 하나의 버그가 전체 애플리케이션을 망칠 수도 있다.
반응형
'Java > 이펙티브 자바' 카테고리의 다른 글
이펙티브 자바, 쉽게 정리하기 - item 68. 일반적으로 통용되는 명명 규칙을 따르라 (0) | 2023.06.28 |
---|---|
이펙티브 자바, 쉽게 정리하기 - item 67. 최적화는 신중히 하라 (0) | 2023.06.27 |
이펙티브 자바, 쉽게 정리하기 - item 65. 리플렉션보다는 인터페이스를 사용하라 (0) | 2023.06.26 |
이펙티브 자바, 쉽게 정리하기 - item 64. 객체는 인터페이스를 사용해 참조하라 (0) | 2023.06.26 |
이펙티브 자바, 쉽게 정리하기 - item 63. 문자열 연결은 느리니 주의하라 (0) | 2023.06.26 |