자바의 네이티브 인터페이스는 C나 C++ 등의 네이티브 프로그래밍 언어로 작성된 네이티브 메서드를 호출하는 데 이용되는 기능이다. 네이티브 메서드가 수행하는 임의의 계산은 네이티브 언어로 실행되며, 자바 언어로 전달된다.
네이티브 메소드는 3가지 용도로 사용되었었다.
- 레지스트리나 파일 락 같은, 특정 플랫폼에 고유한 기능을 이용할 수 있다.
- 이미 구현되어 있는 라이브러리를 이용할 수 있으므로, 기존 데이터를 활용
- 성능이 중요한 부분의 처리를 네이티브 언어로 처리.
위의 용도 중 네이티브 메서드를 통해 성능을 개선하는 것은 추천하지 않는다. 자바 플랫폼이 발전하면서, 네이티브 메서드 없이도 그에 필적하는 성능을 내는 것이 가능해졌기 때문이다.
네이티브 메서드에는 여러가지 심각한 문제가 있다. 네이티브 언어는 방어적 복사를 하지 않기때문에 프로그램은 메모리 훼손 문제로부터 자유로울 수 없다. 게다가 플랫폼 종속적이라 이식성도 낮으며, 네이티브 코드를 사용하는 프로그램은 디버깅이 어렵다. 게다가 네이티브 코드를 넘나드는 비용때문에 특별히 할 일이 없는 호출은 오히려 성능을 떨어뜨릴 수 있다.
요약
네이티브 메서드를 사용하는 것은 재고하라. 굳이 그래야 한다면, 성능 개선 용도로만 써야한다. 저수준 자원이나 기존 라이브러리를 이용하기 위해 네이티브 메서드를 사용해야 한다면, 네이티브 코드는 가능하면 줄이고 광범위한 테스트를 거쳐야 한다. 네이티브 코드의 작은 오류라도 시스템 전체를 훼손시킬 수 있기 때문이다.
'개발서적 > 이펙티브자바' 카테고리의 다른 글
[일반적인 프로그래밍 원칙즐]규칙56. 일반적으로 토용되는 작명 관습을 따르라 (0) | 2017.05.06 |
---|---|
[일반적인 프로그래밍 원칙들]규칙55. 신중하게 최적화하라 (0) | 2017.05.06 |
[일반적인 프로그래밍 원칙들]규칙53.리플렉션 대신 인터페이스를 이용하라 (0) | 2017.05.06 |
[일반적인 프로그래밍 원칙들]규칙52. 객체를 참조할 때는 그 인터페이스를 사용하라 (0) | 2017.05.06 |
[일반적인 프로그래밍 원칙들]규칙51. 문자열 연결시 성능에 주의하라 (0) | 2017.05.05 |