몰입하며 나아가는 개발이란

Framework

JNA(Java Native Access)란?

류하을 2022. 3. 31. 10:00

JNA(Java Native Access)란?

JNI(Java Native Interface)를 API로 구현해 놓은 JAVA 라이브러리 입니다. JNI는 Java 에서 native 영역(c, c++)으로 들어가 호출을 하거나 또는 native에서 java로 호출하는 interface로 java에서 c또는 c++언어로 만든 라이브러리 또는 솔루션을 JAVA에서 바로 사용하게 해줍니다. 즉, JNA는 JNI에 번거로운 부분을 쉽게 해준 API입니다.

Spring 또는 Spring Boot JNA 적용 방법

pom.xml에 dependency 추가.

<dependency>
    <groupId>net.java.dev.jna</groupId>
    <artifactId>jna</artifactId>
    <version>4.1.0</version>
</dependency>
<dependency>
    <groupId>net.java.dev.jna</groupId>
    <artifactId>jna-platform</artifactId>
    <version>4.1.0</version>
</dependency>

windows registry 읽기 쓰기 삭제 api 실행 및 사용방법

import com.sun.jna.platform.win32.Advapi32Util;
import com.sun.jna.platform.win32.WinReg;


class JNAwindowsRegistry {

    public static void main(String[] args) {
        // Read a string 읽기
        String productName = Advapi32Util.registryGetStringValue(
            WinReg.HKEY_CURRENT_USER, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", "GochigoAlimi");
        System.out.printf("Product Name: %s\n", productName);

        // Read an int (& 0xFFFFFFFFL for large unsigned int) 읽기
        int timeout = Advapi32Util.registryGetIntValue(
            WinReg.HKEY_CURRENT_USER, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Windows", "ShutdownWarningDialogTimeout");
        System.out.printf("Shutdown Warning Dialog Timeout: %d (%d as unsigned long)\n", timeout, timeout & 0xFFFFFFFFL);

        // Create a key and write a string 생성
        Advapi32Util.registryCreateKey(WinReg.HKEY_CURRENT_USER, "SOFTWARE\\~~");
        Advapi32Util.registrySetStringValue(WinReg.HKEY_CURRENT_USER, "", "", "");

        // Delete a key 삭제
        Advapi32Util.registryDeleteKey(WinReg.HKEY_CURRENT_USER, "SOFTWARE\\~~");

    }

}

'Framework' 카테고리의 다른 글

Spring Security  (0) 2022.04.04
Javadoc 작성방법  (0) 2022.03.30
Logback 이란?  (0) 2022.03.29
Javadoc이란? Javadoc 사용방법  (0) 2022.03.28