View

반응형

자바 네이티브 인터페이스는 자바 프로그램이 C나 C++같은 네이티브 프로그래밍 언어로 작성한 메서드를 호출하는 기술이다. 이러한 네이티브 메서드를 사용하려면 한번 더 생각하고 신중히 사용해야 한다.

 

네이티브 메서드가 주로 사용된 경우

1. 윈도우 레지스트리 같은 플랫폼 특화 기능을 사용한다.

 

2. 네이티브 코드로 작성된 기존 라이브러리를 사용한다.

 

3. 성능 개선을 목적으로 성능에 결정적 영향을 주는 부분만 따로 네이티브 언어로 작성한다.

 

네이티브 메서드를 권장하지 않는 이유

1. 자바가 성숙해지면서 플랫폼의 기능들을 흡수하고 있다.

플랫폼 특화 기능을 사용하려면 네이티브 메서드가 필요하다. 하지만 자바 언어가 발전해가면서 OS와 같은 하부 플랫폼의 기능들을 점차 흡수하고 있다. 따라서 네이티브 메서드를 사용하기 전, 자바 라이브러리가 제공하고 있는 기능인지 먼저 확인해보자. 단, 자바에서 제공하지 않는 기능이라면 네이티브 메서드를 사용해야 한다.

 

2. 성능 개선을 목적으로 사용해왔지만, 이제 자바도 충분히 빠르다.

자바 초기 시절에는 네이티브 메서드와 비교했을 때 엄청난 성능 차이를 보였지만, JVM이 발전해오면서 이 간극이 좁혀졌다. 즉, 이제 네이티브 메서드로 볼 수 있는 성능 개선 효과가 줄어들었다. 다만, 고성능의 다중 정밀 연산이 필요하다면 네이티브 메서드를 통해 GMP를 사용하는 걸 고려해도 좋다.

 

네이티브 메서드의 단점

1. 네이티브 언어가 안전하지 않기 때문에 메모리 훼손 오류로부터 안전하지 않다.

 

2. 플랫폼을 많이 타는 특징 때문에 이식성이 낮다.

 

3. 디버깅이 어렵다.

 

4. 잘못 사용하면 속도가 오히려 떨어진다.

 

5. 네이티브 메서드의 메모리를 가비지 컬렉터가 회수하지 못하고 추적할 수도 없다.

 

6. 자바와 네이티브 사이의 경계를 오 갈 때마다 비용이 발생한다.

 

7. 자바 코드와 네이티브 사이의 '접착 코드'를 작성하는 비용이 발생한다.

 

이렇듯 네이티브 메서드는 꼭 필요한 부분에만 사용해야 한다. 자칫 잘못 사용하면 오히려 성능이 떨어지고 버그 하나가 애플리케이션 전체를 망가트릴 수도 있다.

 

핵심 정리

  • 네이티브 메서드를 사용하기 전 한번 더 생각하자.
  • 네이티브 메서드가 성능을 개선해주는 경우는 많지 않다.
  • 어쩔 수 없이 사용해야 한다면 최소한으로, 철저히 테스트해야 한다.
반응형
Share Link

인기 글

최신 글

전체 방문자

Today
Yesterday