일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- oracle
- 유닉스
- 자바
- GPT-4's answer
- 데이터베이스
- write by GPT-4
- 자바네트워크
- 소프트웨어공학
- jpa
- 파이썬
- 역학
- 고전역학
- python
- 시스템
- android
- spring integration
- chatGPT's answer
- NIO
- write by chatGPT
- 인프라
- 웹 크롤링
- JVM
- spring data jpa
- 코틀린
- 자바암호
- kotlin
- 리눅스
- flet
- Database
- Java
- Today
- Total
기억을 지배하는 기록
JNI Hello World Program 본문
JNI?
JNI는Java Native Interface의 약어입니다.Java의 프로그램으로부터 다른 언어(C언어나 C++언어등)로 개발된 native code의 프로그램을 이용하기 위한 API입니다.
gcc가 인스톨되어 있지 않은 경우는 인스톨 CD 혹은http://gcc.gnu.org/로부터 다운로드해 인스톨 해 주세요.
Sample 작성
Java file
public class HelloWorldJNI { static { // 라이브러리를 로드합니다 System.loadLibrary("HelloWorldJNI"); } // 네이티브 메소드를 선언합니다 public native String sayHelloWorld(); public static void main(String[] args) { HelloWorldJNI hello = new HelloWorldJNI(); // 메소드를 실행해 표시합니다 System.out.println(hello.sayHelloWorld()); } } |
위 파일을 compile한다.
C++언어의 헤더 파일의 생성
헤더 파일은 이하와 같이javah라고 하는 커멘드로 생성할 수 있습니다. 옵션에는-jni를 지정해, 인수에는 위에서 컴파일 한 클래스의 확장자(extension)를 제외한 것을 지정합니다.
“javah -jni HelloWorldJNI”
생성된 HelloWorldJNI.h 파일 내용
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class HelloWorldJNI */ #ifndef _Included_HelloWorldJNI #define _Included_HelloWorldJNI #ifdef __cplusplus extern "C" { #endif /* * Class: HelloWorldJNI * Method: sayHelloWorld * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_HelloWorldJNI_sayHelloWorld (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif ~ |
C++언어의 원시 파일의 작성
HelloWorldJNI.cpp
#include "HelloWorldJNI.h" JNIEXPORT jstring JNICALL Java_HelloWorldJNI_sayHelloWorld (JNIEnv *env, jobject obj ) { return env->NewStringUTF("Hello World"); } |
C++ 컴파일
“gcc -shared -I/usr/java/include/ -I/usr/java/include/linux/ HelloWorldJNI.cpp -o libHelloWorldJNI.so”
실행
java HelloWorldJNI
'오래된글 > Java' 카테고리의 다른 글
Lessons learned from getting .NET to REST with Java (0) | 2018.04.09 |
---|---|
JUnitParams (0) | 2018.04.09 |
JMX-Communication with Notifications (0) | 2018.04.09 |
JMS - 기초 (0) | 2018.04.09 |
자바 nio - 14 (0) | 2018.04.09 |