강좌
클라우드/리눅스에 관한 강좌입니다.
프로그램 분류

JNI ( JAVA Native Interface )

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문






JNI ( JAVA Native Interface )








ㅇ 제작 : 리눅스포털(www.superuser.co.kr) 수퍼유저코리아 개발팀 이재석


SULINUX 홈페이지 : www.sulinux.net


ㅇ 리눅스포털 홈페이지 : www.superuser.co.kr


  1. JNI ( JAVA Native Interface ) ?

자바로 만들어진 프로그램에서 특정 플랫폼에서만 실행되는 코드

(Native Code)에 접근하기 위한 API이다.


Native code를 생성하는 다른 언어와 함께 공동작업을 하거나

하드웨어어 보다 깊게 접근하여 컨트롤도 가능하지만

플랫폼이 제한된다는 단접이 있다.


  1. 사용방법 및 코드 작성법


1단계 : Native Method를 선언하는 자바 클래스 작성

2단계 : 1단계에서 작성한 클래스 컴파일

3단계 : javah를 사용해서 Native Method가 사용할 헤더 파일 생성

4단계 : C언어로 Native Method 실제 구현

5단계 : C 코드와 헤더 파일을 컴파일

6단계 : 자바 프로그램 실행



위에서 보는것 처럼 6단계로 나누어 작업을 하게 된다.



1단계 : Native Method를 선언하는 자바 클래스 작성



public class tt {

  static {
      //
시스템 라이브러리 로드(so,dll)
      System.loadLibrary("tt");

      System.out.println("=== library was loaded");

  }

  //native method 선언
  public native String main1();
  public native String main2();

  public static void main(String[] args)  throws Exception {

      mains1();
      mains2();

  }

  public static String mains1()  throws Exception {

      return new tt().main1();

  }

  public static String mains2()  throws Exception {

      return new tt().main2();

  }

}





2단계 : 1단계에서 작성한 클래스 컴파일



javac tt.java





3단계 : javah를 사용해서 Native Method가 사용할 헤더 파일 생성



javah tt





4단계 : C언어로 Native Method 실제 구현



#include <jni.h>
#include "tt.h"
#include <stdio.h>

JNIEXPORT jstring JNICALL Java_tt_main1(JNIEnv *, jobject)
{
   printf("Hello, world ");

   return 0;
}

JNIEXPORT jstring JNICALL Java_tt_main2(JNIEnv *, jobject)
{
   printf("Hello, world1 ");

   return 0;
}





5단계 : C 코드와 헤더 파일을 컴파일



vc   : cl -Ic:jdk1.3.1include -Ic:jdk1.3.1includewin32 -LD HelloWorld.c


gcc  : cc –G –I/usr/local/java/include –I/usr/local/java/include/solaris HelloWorld.c –o libhelloworld.so



6단계 : 자바 프로그램 실행



java tt

=== library was loaded
Hello, world
Hello, world1





3. JAVA에서 Native code로 파라메타 넘겨주기


JAVA SOURCE



  

    
        
    


NATIVE SOURCE











    
    
    
    
    



            
            
            
            


       

           
           

           
           
 
            

           
           
           
           
           
                       

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,806 개
  • 현재 접속자 :  90 명