반응형
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다.
아이템 66. 네이티브 메서드는 신중히 사용하라
자바 네이티브 인터페이스(Java Native Interface, JNI)
- 자바 프로그램이 네이티브 메서드를 호출하는 기술
- 네이티브 메서드란? C나 C++ 같은 네이티브 프로그래밍 언어로 작성한 메서드를 의미함
- 네이티브 메서드의 주요 쓰임
- 레지스트리 같은 플랫폼 특화 기능을 사용한다.
- 네이티브 코드로 작성된 기존 라이브러리를 사용한다.
- 성능 개선을 목적으로 성능에 결정적인 영향을 주는 영역만 따로 네이티브 언어로 작성한다.
- 자바가 발전해가면서 하부 플랫폼의 기능들을 점차 흡수해 네이티브 메서드를 사용할 필요가 점점 줄고 있다.
- 성능을 개선할 목적으로 네이티브 메서드를 사용하는 것은 거의 권장하지 않는다.
- 네이티브 메서드의 단점
- 네이티브 언어가 안전하지 않으므로 네이티브 메서드를 사용하는 애플리케이션도 메모리 훼손 오류로부터 안전하지 않다.
- 네이티브 언어는 자바보다 플랫폼을 많이 타서 이식성이 낮고 디버깅이 어렵다.
- 주의하지 않으면 속도가 더 느려질 수 있다.
- GC(Garbage Collector)가 네이티브 메모리를 자동으로 회수하지 못하고, 추적조차 할 수 없다.
- 자바 코드와 네이티브 코드의 경계를 움직일 때 비용이 발생하며, 접착 코드를 작성해야 한다.
정리
- 네이티브 메서드 사용에 대해서 신중히 사용하자.
- 네이티브 메서드가 성능을 개선해주는 일은 적다.
- 네이티브 코드를 사용해야할 때 최소한만 사용하고 테스트를 철저히 하자.
반응형
'BE > Java' 카테고리의 다른 글
[Effective Java] 아이템 68. 일반적으로 통용되는 명명 규칙을 따르라 (0) | 2022.12.06 |
---|---|
[Effective Java] 아이템 67. 최적화는 신중히 하라 (0) | 2022.12.05 |
[Effective Java] 아이템 65. 리플렉션보다는 인터페이스를 사용하라 (0) | 2022.12.01 |
[Effective Java] 아이템 64. 객체는 인터페이스를 사용해 참조하라 (0) | 2022.11.30 |
[Effective Java] 아이템 63. 문자열 연결은 느리니 주의하라 (0) | 2022.11.30 |