Effective Java 66. 네이티브 메서드는 신중히 사용하라

eversong·2020년 8월 26일
0

EffectiveJava

목록 보기
21/35
post-thumbnail

Native Method

자바 네이티브 인터페이스(Java Native Interface)는 자바 프로그램이 네이티브 메서드를 호출하는 기술이다. 여기서 네이티브 메서드란 C나 C++ 같은 네이티브 프로그래밍 언어로 작성한 메서드를 말한다.

네이티브 메서드의 주요 쓰임

  1. 레지스트리 같은 플랫폼 특화 기능을 사용한다.
  2. 네이티브 코드로 작성된 기존 라이브러리를 사용한다.(레거시 라이브러리)
  3. 성능 개선을 위해 사용한다.

플랫폼 특화 기능을 활용하려면 네이티브 메서드를 사용해야 한다. 하지만 자바가 성숙해가면서 하부 플랫폼의 기능들을 점차 흡수하고 있다. 대체할 만한 자바 라이브러리가 없는 경우에 네이티브 메서드를 사용해야 한다.

성능을 개선할 목적으로 네이티브 메서드를 사용하는 것은 거의 권장하지 않는다 자바 초기 시절 이라면 이야기가 다르지만 JVM은 그동안 엄청난 속도로 발전 했다. 지금의 자바는 다른 플랫폼에 견줄만한 성능을 보인다.

네이티브 메서드의 단점

네이티브 메서드는 심각한 단점이 있다. 네이티브 언어가 안전하지 않으므로, 사용하는 애플리케이션도 메모리 훼손 오류로부터 더 이상 안전하지 않다. 디버깅도 더 어렵고 주의하지 않으면 속도가 오히려 느려질 수도 있다. 가비지 컬렉터가 네이티브 메모리는 자동 회수하지 못하고, 심지어 추적조차 할 수 없다.

정리

네이티브 메서드를 사용하려거든 한번 더 생각하라, 정말 필요한지 고민해보자

profile
책, 글, 개발

0개의 댓글