상위 질문
타임라인
채팅
관점
자바 네이티브 액세스
자바 프로그램이 네이티브 공유 라이브러리에 쉽게 접근케 해주는 라이브러리 위키백과, 무료 백과사전
Remove ads
자바 네이티브 액세스(Java Native Access, JNA)는 자바 네이티브 인터페이스(JNI)를 직접 사용하지 않고도 자바 프로그램이 네이티브 공유 라이브러리에 쉽게 접근할 수 있도록 해주는 커뮤니티가 개발한 라이브러리이다. JNA의 디자인은 최소한의 노력으로 자연스러운 방법으로 네이티브한 접근을 가능케 하는 것이다. JNI와 달리 보일러플레이트나 글루 코드 생성이 필요하지 않다.
Remove ads
매핑 타입
다음의 표는 자바와 네이티브 코드간 매핑 유형, 그리고 JNA 라이브러리가 지원하는 유형의 개요를 나타낸 것이다.[2]
Remove ads
예시
다음 프로그램은 C 표준 라이브러리 구현체를 불러와서 printf 함수를 호출한다.
다음 코드는 이식이 가능하며 마이크로소프트 윈도우, POSIX(리눅스, 유닉스, macOS) 플랫폼에서 모두 동일하게 동작한다.
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
/** Simple example of native library declaration and usage. */
public class HelloWorld {
public interface CLibrary extends Library {
CLibrary INSTANCE = (CLibrary) Native.loadLibrary(
(Platform.isWindows() ? "msvcrt" : "c"), CLibrary.class);
void printf(String format, Object... args);
}
public static void main(String[] args) {
CLibrary.INSTANCE.printf("Hello, World\n");
for (int i = 0; i < args.length; i++) {
CLibrary.INSTANCE.printf("Argument %d: %s\n", i, args[i]);
}
}
}
Remove ads
성능
같이 보기
각주
외부 링크
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads