Integrating Java and Native Programs

 JNI������ �����ϴ� ����� ȣ���ϴ� ����� ���ؼ� ǥ���� ������ ���� �ִ�. ���⿡���� �̷��� ����� ���ؼ� ������ �ϰ� �ȴ�. �� Ÿ���� �����ϴ� ����� ���ؼ��� ������ �Ѵ�.

Declaring Native Methods

 Java �ʿ����� native Ű���带 ����ؼ� native �ڵ带 ����ϰڴٴ� ���� �˸���, native ����ʿ����� ������ ������ �ϰ� �Ǵµ�, �� �� ���̿� ���踦 �� �� �ִ� �ڵ� ����� �̿��ؾ� �Ѵ�. javah�� �� ����� ������ ������Ÿ���� ���������ְ� �ȴ�.

Mapping between Java and Native Types

 JNI�� Java�� Ÿ�԰� native ����� Ÿ���� ������ �� �ִ� Ÿ���� �����Ѵ�. �� �忡���� �Ϲ����� int�� double�� ���� primitive Ÿ���� �����ϴ� ����Ӹ� �ƴ϶� Java ��ü�� ������ �� �ִ� ����� ���ؼ� �����Ѵ�.

Declaring Native Methods

 ���⿡���� Java������ native �޼ҵ��� ���� ����� C/C++ �Լ� ������Ÿ���� ������Ű�� ����� ���ؼ� �����Ѵ�.

The Java side

 ������ ���� Java �ҽ��� ������ ����.

 native �޼ҵ�� getLine() �̴�. native �޼ҵ带 �����ϴ� ����� ������ ����.

  1. native Ű���带 ����ؾ� �Ѵ�.
  2. �����ڵ尡 ���� �ʰ�, ���� �����ݷи����� ������.

The Native Language Side

 �������ϴ� ����� ��������� ������Ű�� ����� ���ؼ� �̹� �տ��� ������ �Ǿ���. javah�� ������ ���� ������ ����� ������Ÿ���� ������ ����.

 �����ϴ� ����� ���ؼ��� �տ��� �̹� ������ �Ǿ���, JNIEXPORT�� JNICALL�� �÷����� ���� Ű�����̴�.

Mapping Between Java and Native Types

 ���⿡�� �����Ǵ� ������ native �ڵ忡�� ���� ���۷��� Java Ÿ���̴�. �� Ÿ���� ������ ���� �뵵�� ����ϱ� ���ؼ� �ʿ��ϴ�.

Java Primitive Types

 Java primitive Ÿ�԰� �̿� �����Ǵ� native Ÿ���� ���� ǥ�� ����.

 

Java Type

Native Type

Size in bits

boolean

jboolean

8, unsigned

byte

jbyte

8

char

jchar

16, unsigned

short

jshort

16

int

jint

32

long

jlong

64

float

jfloat

32

double

jdouble

64

void

void

n/a

 

Java Object Types

 Java ��ü�� ���۷����� �Ѱ�����. ���������� �μ��� �Ѱ����� ��ü�� jobject�� ����Ŭ������ �ȴ�. ���� �׸��� �� ������ ��Ÿ���� ���̴�.

 ���� �׸������� ���������� getLine() �Լ��� ��� ������ �Ǵ����� ��Ÿ����.