JNI 는 기존 C/C++ 함수를 호출하는데 사용한다고 하면서, 왜?

rui 17.***.221.234

“이미 존재하는 방대한 C/C++ 함수들이 이렇게 정의된게 아닐텐데,
왜 모든 예제는 자바에서 호출할 것을 가정하고 함수를 정의하는 것만
보여주는 걸까요?”

예를 들어 C++로 된 SDK가 있는데 100개 함수가 있다고 가정해 봅시다. (보통은 클래스로 되어 있겠지만, 일단 그냥 함수들이라 가정하고)
그 중에 님이 Java 쓰고 싶은 함수가 5개면, 그 5개 함수를 호출하는 JNIExport 함수들을 님이 작성해야 합니다.
그리고 님의 Java 프로그램은 님이 정의한 그 함수들을 호출해서, 결과적으로 C++ SDK에 접금하는 거죠.

님이 붙힌 예를 들어 생각해 보면, 자바에 스크린으로 프린트하는 함수가 없다고 가정해 보시죠. 그럴 경우에, C++ STL 에 정의된 std::out 함수를 위와 같이 JNIExport 로 wrap 하면, 님은 자바에서도 프린트를 할 수 있게 되죠.