네이티브 메서드
네이티브 메서드란, C나 C++같은 네이티브 프로그래밍 언어로 작성한 메서드를 말한다.
자바 네이티브 인터페이스(JNI)는 자바 프로그램이 그런 네이티브 메서드를 호출하는 기술이다.
네이티브 메서드의 주요 쓰임
1. 레지스트리 같은 플랫폼 특화 기능을 사용할 때
└ 필요성 줄어드는 중임: 자바가 성숙해가면서 하부 플랫폼(OS 등)의 기능들을 점차 흡수중
2. 네이티브 라이브러리(네이티브 코드로 작성된)를 사용할 때
└ 네이티브 라이브러리는 특히 GNU 다중 정밀 연산 라이브러리(GMP)를 필두로 개선 작업 계속되어옴
└ 고성능 다중 정밀 연산이 필요하다면, 네이티브 메서드를 통해 GMP를 사용하는 것을 고려해도 좋음
3. 성능 개선을 목적으로 사용함
└ 비권장: 요즘 자바는 다른 플랫폼에 견줄만한 성능을 보인다.
네이티브 메서드 단점
네이티브 메서드를 사용하려거든 한번 더 생각하라. 네이티브 메서드가 성능 개선해 주는 일은 많지 않다. 저수준 자원이나 네이티브 라이브리를 사용해야만 할 때도 코드를 최소화하라.
1. 네이티브 언어가 안전하지 않음(Item50)
└ 메모리 훼손 오류 등
2. 이식성이 낮음
└ 네이티브 언어는 자바보다 플랫폼을 많이 탄다.
3. 디버깅 어려움
└ 주의하지 않으면 속도가 오히려 느려질 수도
4. 가비지 컬렉터가 네이티브 메모리를 자동 회수하지 못하며 추적도 할 수 없음(Item8)
5. 자바 코드와 네이티브 코드의 경계를 넘나들 때의 비용
6. 자바 코드와 네이티브 메서드 사이 '접착 코드(glue code)'를 작성하는 것도 귀찮고 가독성이 떨어짐
'JAVA > Effective Java' 카테고리의 다른 글
[이펙티브 자바] 클래스와 멤버의 접근 권한을 최소화하라 ─ 4장:클래스와 인터페이스:Item15 (1) | 2023.10.24 |
---|---|
[이펙티브 자바] 최적화는 신중히 사용하라 ─ 9장:일반적인 프로그래밍 원칙:Item67 (0) | 2023.10.22 |
[이펙티브 자바] 리플렉션보다는 인터페이스를 사용하라 ─ 9장:일반적인 프로그래밍 원칙:Item65 (0) | 2023.10.21 |
[이펙티브 자바] 객체는 인터페이스를 사용해 참조하라 ─ 9장:일반적인 프로그래밍 원칙:Item64 (0) | 2023.10.21 |
[이펙티브 자바] 문자열 연결은 느리니 주의하라 ─ 9장:일반적인 프로그래밍 원칙:Item63 (0) | 2023.10.21 |