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

wisdom·2023년 3월 8일
0

Effetctive Java

목록 보기
66/80
post-thumbnail

네이티브 메서드

자바 네이티브 인터페이스(Java Native Interface, JNI)는 자바 프로그램이 네이티브 메서드 를 호출하는 기술을 말한다.

네이티브 메서드 란 C나 C++ 같은 네이티브 프로그래밍 언어로 작성한 메서드를 말한다.

네이티브 메서드는 주로 다음과 같은 용도로 사용된다.

  1. 플랫폼 특화 기능 사용
  2. 네이티브 코드로 작성된 기존 라이브러리 (레거시 라이브러리가 그 예다)
  3. 성능 개선을 목적으로 성능에 결정적인 영향을 주는 영역만 따로 네이티브 언어로 작성

그러나 네이티브 메서드를 성능을 개선할 목적으로 사용하는 것은 권장하지 않는다.

네이티브 메서드의 단점

  1. 네이티브 언어가 안전하지 않으므로 네이티브 메서드를 사용하는 애플리케이션도 메모리 훼손 오류로부터 더 이상 안전하지 않다.
  2. 네이티브 언어는 자바보다 플랫폼을 많이 타기 때문에 이식성이 낮다.
  3. 디버깅이 더 어렵다.
  4. 주의하지 않으면 속도가 오히려 느려질 수도 있다.
  5. 가비지 컬렉터가 네이티브 메모리는 자동 회수하지 못한다. 심지어 추적조차 할 수 없다.
  6. 네이티브 메서드와 자바 코드 사이의 접착 코드(glue code)를 작성해야 한다. 이는 작업하기 귀찮을 뿐만 아니라 가독성도 떨어진다.

📌 핵심 정리

네이티브 메서드를 사용하려거든 더 생각해보자.
네이티브 메서드가 성능을 개선해주는 일은 많지 않다.
저수준 자원이나 네이티브 라이브러리를 사용해야만 해서 어쩔 수 없더라도 네이티브 코드는 최소한만 사용하고 철저히 테스트하자.
네이티브 코드 안에 숨은 단 하나의 버그가 애플리케이션 전체를 훼손할 수도 있다.

profile
백엔드 개발자

0개의 댓글