요약
•
네이티브 메서드는 고려해야하는 단점들이 많고 자바의 개선으로 크게 성능이 뒤쳐지지 않으니, 성능 개선이 목적이라면 네이티브 메서드는 사용하지 말자.
네이티브 인터페이스
•
자바 네이티브 인터페이스(JNI, Java Native Interface)는 자바 프로그램이 C나 C++ 같은 네이티브 프로그래밍 언어로 작성된 메서드(네이티브 메서드)를 호출하는 기술이다.
•
네이티브 메서드는 주로 세 가지 경우에 사용된다.
◦
자바에서 제공하지 않는 레지스트리 같은 플랫폼 특화 기능을 사용하는 경우
◦
네이티브 코드로 작성된 기존 라이브러리를 사용하는 경우
◦
성능 개선 목적으로, 성능에 결정적인 영향을 주는 영역만 네이티브 언어로 작성하는 경우
네이티브 메서드의 단점
•
하지만 성능 개선할 목적으로 네이티브 메서드를 사용하는 것은 거의 권장되지 않는다.
•
자바는 꾸준히 개선되어 왔고, 그로 인해 원래의 네이티브 구현에 성능이 크게 뒤쳐지지 않고 오히려 더 좋아진 부분들도 있다.
•
뿐만 아니라 네이티브 메서드는 안전하지 않은 언어를 사용하므로, 네이티브 메서드를 사용하는 어플리케이션도 메모리 훼손 오류로부터 안전하지 않게 된다.
•
또한 네이티브 언어는 플랫폼을 많이 타기 때문에 이식성도 낮고, 디버깅도 더 어렵다.
•
가비지 컬렉터가 네이티브 메모리는 자동회수하지 못하고, 추적할 수 없다. 또한 주의해서 사용하지 않으면 성능도 더 안 좋아질 수 있다.
•
자바 코드와 네이티브 코드 경계를 넘나들 때마다 오버헤드가 발생한다.
•
네이티브 코드와 자바 코드 사이에 접착 코드(glue code)를 작성해야 하는데, 귀찮고 가독성이 떨어진다.