문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 JNI (문서 편집) [목차] Java Native Interface. == 개요 == [[Java]]의 [[FFI]]로 Java 언어/JVM에서 [[C언어|C]]/[[C++]] 언어의 함수를 호출하기 위한 [[API]]이다. JDK10 미만은 {{{javah}}} 명령으로 C/C++ 헤더 파일을 생성할 수 있다. 그러나 JDK9 부터는 {{{javah}}} 명령이 Deprecated 되어, 소스 코드를 {{{javac}}} 로 컴파일 할 때 {{{-h}}} 옵션을 주면 헤더 파일을 자동 생성해준다. 이렇게 나온 헤더 파일에 맞춰 C/C++ 코드를 작성하게 된다. == 사용 목적 == 주로 사용되는 목적은 다음과 같다. * 이미 존재하는 방대한 C/C++ 코드를 활용하기 위해. * [[Java]]로 구현하면 너무 느린 기능의 속도 향상을 위해. * [[자바 가상 머신|JVM]]에서 지원하지 않는 운영체제의 기능을 호출하기 위해. == 예제 == == JNA == 유사 기술로 JNA(Java Native Access)가 있다. JNI가 자바 소스코드로 부터 헤더파일을 생성해 주는 것과 달리 {{{libffi}}}라 불리는 Native Library를 사용하여 동적으로 Native 함수를 호출해 준다. [[분류:Java]]저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기