Writing a Java Program with Native Methods

 �� �忡���� Java�� �ۼ��� ���α׷��� native �ڵ带 ���ս�Ű�� ����� �����Ѵ�. ������, ��Hello World�� ���α׷��� ���õȴ�.

Backgrounds

 Java ���α׷����� ����� native �޼ҵ带 �ۼ��ϴ� ����� ������ ����.

step 1 : Write the Java code

 Java Ŭ������ �ۼ��Ѵ�. �ٸ� ���̶�� Ŭ���� �߿� �޼ҵ�� native�� ����� ���� ���ȴٴ� ���̴�.

step 2 : Compile the Java code

 �Ϲ� ����� ���� javac�� �̿��ؼ� �������Ѵ�.

step 3 : Create the .h file

 javah�� �̿��ؼ� ?jni �ɼ��� �ָ� ��������� ������ �� �ִ�.

step 4 : Write the Native Method Implementation

 native ���α׷��� �ۼ��Ѵ�.

step 5 : Create a Shared Library

 native ���α׷��� ������ ��������� ��� ���̺귯���� ���鵵�� �������Ѵ�.

step 6 : Run the Program

 java(java interpreter)�� �̿��ؼ� java ���α׷��� �����Ų��.

 

Step 1 : Write the Java code

 ���� ��� �� Java �ڵ�� ������ ����.

Declare a Native Method

 native Ű���带 ����ϰ� �Ǹ�, �� �޼ҵ忡 ���� native �ڵ��� �Լ��� ����� �� �ְ� �ȴ�. �̰��� ���� Ŭ���� ���ο����� ���� �ϰ� �ȴ�.  ���� ���������� public ���̰�, ���ϰ��� �μ��� ����Ǿ� ���� �ʴ�. �̰��� ����ϴ� ����� �ڿ��� ������ �ȴ�.

Load the Library

 ������ native �ڵ带 ���̺귯���� �������ؾ� �Ѵ�. �� ���̺귯�� �̸��� System.LoadLibrary(library name)������ library name�� �����ؾ� �Ѵ�. ���� ���������� hello�� ������ �Ǿ� �ִµ�, win32������ hello.dll��, Solaris ������ libhello.so�� �ȴ�. static���� ����Ǿ �������� �ʱ�ȭ�ϰ� �Ǵ� �Ϳ� ������ �ʿ䰡 �ִ�.

Write the Main Method

 �Ϲ� �޼ҵ带 �����Ű�� �Ͱ� �������� ������� ������ �޼ҵ带 ȣ���ϸ� �ȴ�.

Step 2 : Compile the Java code

 �������ϴ� ����� �Ϲ������� �������ϴ� ����� �����ϴ�.
 ��������,

�� ���� ����ϸ� �ȴ�.

Step 3: Create the .h file

 javah�� ����ϸ� ���� ��������� ������ �� �ִ�. -jni �ɼ��� �ֵ��� �Ѵ�. -d �ɼ��� ����ϸ� �ٸ� ���丮�� ��������� ��ġ��ų ���� �ִ�.

The Function Definition

 ������ HelloWorld Ŭ�����κ��� ������ ��������� �����̴�.

 ���� ���뿡�� native �ڵ忡�� �ۼ��ؾ� �� �Լ��� ������Ÿ���� ����Ǿ� �ִ�. ������Ÿ���� �����Ǵ� ����� ���� �׸��� ����. 

 JNIEnv �Ķ���͸� ���ؼ� native �ڵ尡 Java ���α׷����� �Ѱ��� ���ڸ� ���� �� �ְ�, �ٽ� Java ���α׷����� ���ϰ��� �Ѱ��� �� �ְ� �ȴ�. jobject�� ������ ��ü�� �ǹ��Ѵ�. Java ���α׷����� ��this���� ���Ǵ� �Ͱ� ���ٰ� �� �� �ִ�.

Step 4 : Write the Native Method Implementation

 ������ ����� �ڵ带 C ���ν� �ۼ��� �� ����. �������� ���� �ڵ�� ������ ����.

 ���� ���������� �� ������ ��������� ���Եȴ�.

  1. jni.h : Java ���α׷��� native ���α׷� ���� interaction�� ���ؼ� �ʿ��� ������ ��� �ִ� �����̴�.
  2. HelloWorld.h : javah�� �̿��ؼ� ������ �����̴�. �� �Լ��� ������Ÿ���� ���ǵǾ� �ִ�.
  3. stdio.h : printf() �Լ��� ����ϱ� ���ؼ� ���Ե� �����̴�.

Step 5 : Create a Shared Library

 Java ���α׷����� ������ ���� �ڵ带 �ۼ��� �ߴ�.

 �׷��Ƿ�, �� hello��� ���̺귯���� ������ �־�� �Ѵ�. �̰��� �տ��� �ۼ��� C������ �����������ν� ���� �� �ִ�.

 Solaris�� ��쿡�� ������ ���� ������ �������� ������ �� �ִ�.

 Win32�� ��쿡�� ������ ���� ������ �������� ������ �� �ִ�.

Step 6 : Run the Program

 Java Interpreter�� �̿��ؼ� �ۼ��� ���α׷��� �����Ų��. ������ �����Ų�ٸ�,

��� �ϸ� �ȴ�.

 ������ ���� ���� �޽����� �߻��Ѵٸ� �н� ������ �߸��� �־��� �����̴�. �н� ������ �ٽ� Ȯ���ϰ� �����ؼ� �����ϸ� �ȴ�.