[이펙티브 자바] 아이템 66. 네이티브 메서드는 신중히 사용하라

June·2022년 3월 31일
0

[이펙티브자바]

목록 보기
60/72

정의

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

주로 아래와 같은 경우 사용한다.

  1. 레지스트리 같은 플랫폼 특화 기능
  2. 네이티브 코드로 작성된 기존 라이브러리 사용
  3. 성능 개선 목적

불필요성

하지만 자바가 성숙해지면서 OS 같은 하부 플랫폼들의 기능들을 점차 흡수하고 있다. 예를들어 자바9부터 새로 process API를 추가해 OS 프로세스에 접근하는 길을 열어주었다.

성능을 개선할 목적으로 네이티브 메서드를 사용하는 것은 거의 권장되지 않는다. JVM이 잘 발전해서 지금의 자바는 다른 플랫폼에 견줄만하다.

단점

네이티브 언어가 안전하지 않으므로 (아이템 50), 네이티브 메서드를 이용하는 애플리케이셔ㅑㄴ도 메모리 훼손 가능성이 있다. 또한 플랫폼을 많이 타 이식성도 낮고 디버깅도 어렵다.

가비지 컬렉터가 네이티브 메모리는 자동 회수하지 못하고, 심지어 추적초자 할 수 없다.

자바 코드와 네이티브 코드의 경계를 넘나들 때 비용이 추가된다.

네이티브 메서드와 자바 코드 사이 접착 코드를 작성해야하는데 이는 귀찮고 가독성도 떨어진다.

0개의 댓글