티스토리 뷰
Item66에서 네이티브 메서드는 신중히 사용하라 말한다
네이티브 메서드란 무엇이고 언제 사용하는가?
오라클의 문서를 보자
자바만으로는 프로그램을 작성할 수 없는 경우에 사용한다고 하는데 JNI가 필요한 상황은 다음과 같다
1. 언어 자체가 특정 기능을 지원하지 않는 경우
2. 다른 언어로 된 라이브러리를 사용하고 싶은 경우
3. C, C++에 비해 구린 성능
내 경험에서만 비추어보자면 일반적인 개발자가 JNI를 사용할 일은 거의 없을 것 같다
platform-dependent한 레벨까지 내려갈 일이 없다
메서드 선언 부에 native 키워드를 가지고 있는 놈들이 네이티브 메서드인데 많은 라이브러리를 뒤져봐도 흔히 보이지 않는다
또한 책에서 나온 GNU 다중 정밀 연산 라이브러리 같이
정말 특별한 라이브러리가 아닌 이상에야 대부분의 라이브러리가 자바도 지원하고 있다
책 쓴 시점하고 차이가 좀 있으니 혹시 자바 버전도 있을까 해서 찾아봤는데
개인이 만든 java-gmp만 보이고 나머지는 gnu-gmp를 wrapping한 버전만 있었다
gnu-gmp가 네이티브 메서드를 써야하는 상황을 정확히 보여주는 것 같다
성능은 그간 H/W, JVM이 미친듯이 발전해왔고 GraalVM이 나오며 native image로 만들어서
boot startup 시간도 줄일 수 있는 요즘에야 큰 문제는 아닐 것이다
GraalVM, Spring Cloud Native 등의 최첨단 기술로 자바가 다시 날개를 달 수 있지 않을까 생각한다
글과 영상으로만 봤는데 언제쯤 쉽게 사용해볼 수 있으려나?
미니 사이드 프로젝트 중인데 data.sql로 데이터 좀 넣어줬다고 부트 뜨는 시간이 11초나 걸린다
서버로 사용할 컴퓨터는 사양이 더 좋을 테니 11초 보다는 빨리 되겠지만 열받는 건 어쩔 수 없다
GraalVM 관련해 재밌게 본 영상 두 개를 소개하고 마친다
'Java > Effective Java' 카테고리의 다른 글
[Item68] 컨벤션 따르기 (1) | 2022.09.11 |
---|---|
[Item67] 최적화는 나중에 (0) | 2022.08.28 |
[Item65] 리플렉션 못 본 척 하기 (0) | 2022.08.02 |
[Item64] 인터페이스는 껍데기 (0) | 2022.07.26 |
[Item63] 문자열은 어떻게 다뤄야 하는가 (0) | 2022.07.24 |