네이티브 메소드는 신중히 사용하라

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

  1. 레지스트리 같은 플랫폼 특화 기능을 사용한다.
  2. 네이티브 코드로 작성된 기존 라이브러리를 사용한다.
  3. 성능 개선을 목적으로 성능에 결정적인 영향을 주는 영역만 따로 네이티브 언어로 작성한다.

플랫폼 특화 기능을 활용하려면 네이티브 메소드를 사용해야 한다. 자바가 성숙해지면서 점차 네이티브 메소드를 사용할 일이 줄어든다. 그 예시가 process api다. 그러나 성능을 개선할 목적으로 네이티브 메서드를 사용하는 것은 거의 권장하지 않는다. 이미 자바가 성숙됐다.

또한 네이티브 메소드에는 심각한 단점이 있다. 네이티브 언어가 안전하지 않으므로 네이티브 메소드를 사용하는 애플리케이션도 메모리 훼손 오류로부터 더 이상 안전하지 않다. 뿐만 아니라 CG 관장 영역이 아니므로 메모리를 자동으로 회수하거나 추적조차 불가하다. 마지막으로 네이티브 - 자바 간 접착 코드(glueCode)가 필요한데 번거로운 작업이다.