¼Ò¼³°°Àº ÀÚ¹Ù 4ºÎ  Á¦20Àå J N I  20.2 3´Ü°è  

    3´Ü°è : javah¸¦ »ç¿ëÇØ¼­ Native Method°¡ »ç¿ëÇÒ Çì´õ ÆÄÀÏ »ý¼º

 

ÀÚ¹Ù°¡»ó¸Ó½ÅÀÌ printHelloWorld()¸Þ¼­µå¸¦ helloworld.dll¾È¿¡¼­ ã¾Æ ½ÇÇà ÇÏ·Á¸é, helloworld.dllÀº ÀϹÝÀûÀÎ C¿¡¼­ ¸¸µå´Â °Í°ú °°Àº ¹æ¹ýÀ¸·Î ¸¸µé ¼ö ¾ø½À´Ï´Ù. ¹Ì¸® Á¤ÇØÁø ±ÔÄ¢¿¡ µû¶ó ¸¸µé¾îÁ®¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. ±× ÀÛ¾÷ Áß ÇѰ¡Áö°¡ ¹Ù·Î helloworld.dll¿¡¼­ »ç¿ëÇÒ Çì´õÆÄÀÏÀ» javah¸¦ ÀÌ¿ëÇØ¼­ ¸¸µå´Â °ÍÀÔ´Ï´Ù. ÀÌ·¸°Ô helloworld.dllÀÇ Çì´õÆÄÀÏÀ» ÀÚ¹Ù¿¡¼­ ¸¸µé°í ¸öüÀÎ helloworld.dllÀ» C¿¡¼­ ¸¸µé°Ô µÊÀ¸·Î ÀÚµ¿ ¿¬°á µÇ´Â °ÍÀÔ´Ï´Ù.

 

Çì´õ ÆÄÀÏÀº JDK¿¡ Æ÷ÇԵǾî ÀÖ´Â javah¶ó´Â Åø·Î ¸¸µé ¼ö ÀÖ½À´Ï´Ù. °£´ÜÈ÷ javah¶ó°í ¾²°í ÀÚ¹Ù ÆÄÀϸíÀ» Àû¾îÁÖ¸é µÇÁÒ. ¿ª½Ã ¾î·Á¿ï °ÍÀÌ Çϳªµµ ¾ø½À´Ï´Ù.

 

C:\JavaExample\20> javah HelloWorld

 

C:\JavaExample\20> dir

¡¦

HelloWorld.class

HelloWorld.h

¡¦

 

 À§Ã³·³ javah¸¦ ½ÇÇà½ÃŲ ÈÄ µð·ºÅ͸® ³»¿ëÀ» È®ÀÎÇØ º¸½Ã¸é HelloWorld.h¶ó´Â Çì´õ ÆÄÀÏÀÌ »ý¼ºµÈ °ÍÀ» º¸½Ç ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ÀÌ Çì´õ ÆÄÀÏ ¾È¿¡´Â HelloWorld Ŭ·¡½º¿¡¼­ ¼±¾ðÇÑ printHelloWorld()¸Þ¼­µåÀÇ ¿øÇüÀÌ CÀÇ ¹®¹ýÀ¸·Î Á¤ÀÇ µÇ¾î ÀÖ½À´Ï´Ù. ±×·³ ½ÇÁ¦·Î HelloWorld.h Çì´õ ÆÄÀÏÀ» ¿­¾î¼­ »ìÆì º¸°Ú½À´Ï´Ù.

 

HelloWorld.h(¸Þ¼­µåÀÇ ¿øÇüÀÌ Á¤ÀǵǾîÀÖ´Â Çì´õ ÆÄÀÏ)

/* DO NOT EDIT THIS FILE - it is machine generated */

#include <jni.h>

/* Header for class HelloWorld */

 

#ifndef _Included_HelloWorld

#define _Included_HelloWorld

#ifdef __cplusplus

extern "C" {

#endif

/*

 * Class:     HelloWorld

 * Method:    printHelloWorld

 * Signature: ()V

 */

JNIEXPORT void JNICALL Java_HelloWorld_printHelloWorld (JNIEnv *, jobject);

 

#ifdef __cplusplus

}

#endif

#endif

 

 À§´Â »ý¼ºµÈ Çì´õ ÆÄÀÏÀ» Á¤¸®ÇÑ ¼Ò½ºÀÔ´Ï´Ù. À¯½ÉÈ÷ »ìÆì º¸½Ã¸é Áß°£ ºÎºÐ¿¡ ¿ì¸®°¡ HelloWorld Ŭ·¡½º¿¡¼­ ¼±¾ðÇÑ printHelloWorld()¸Þ¼­µå°¡ ¾à°£ ÀÌ»óÇÑ ¸ð½ÀÀ¸·Î Á¤ÀÇ µÇ¾î ÀÖ´Â °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù.

 

±×¸² 20-2 Çì´õÆÄÀÏ ³»ÀÇ Native Method ¿øÇüÀÇ Á¤ÀÇ

 

 ÀÚ¹Ù °¡»ó¸Ó½ÅÀÌ ½Äº° °¡´ÉÇϵµ·Ï Native MethodÀÇ À̸§Àº ´ÙÀ½°ú °°Àº ±ÔÄ¢¿¡ ÀÇÇØ¼­ ¸¸µé¾î Áý´Ï´Ù. À̰ÍÀº javah°¡ ÀÚµ¿À¸·Î º¯È¯ÇØ ÁÖ´Â °ÍÀÌ´Ï±î ±×³É ÀÐ¾î º¸½Ã°í Âü°íÇϽñ⠹ٶø´Ï´Ù.

 

n        ¸Þ¼­µå À̸§ ¾Õ¿¡ Java_ ¶ó´Â Á¢µÎ»ç°¡ ºÙ´Â´Ù

n        Ŭ·¡½º¿Í ¸Þ¼­µå¸¦ ±¸ºÐÇØÁÖ´Â ¡®.¡¯ (period)´Â ¡®_¡¯ (under scope)·Î ¹Ù²ï´Ù

n        Ŭ·¡½º´Â ÆÐŰÁö¸¦ Æ÷ÇÔÇÏ¿© Àüü À̸§À» ½áÁØ´Ù (¿¹ : com_jabook_HelloWorld)

 

 À§ ±×¸²À» ´Ù½Ã º¸½Ã¸é, ¸Å°³ º¯¼ö ÀÚ¸®¿¡ HelloWorldŬ·¡½º¿¡¼­´Â ¼±¾ðÇÏÁö ¾Ê¾Ò´ø JNIEnv *, jobject ¶ó´Â ¸Å°³ º¯¼öµéÀÌ ÀÚ¸®Àâ°í ÀÖ½À´Ï´Ù. À̰ÍÀº javah¿¡ ÀÇÇØ¼­ ÀÚµ¿À¸·Î »ðÀԵǴ µðÆúÆ® ¸Å°³ º¯¼ö·Î, ÀÚ¹Ù¿Í C¾ð¾î°£ÀÇ »óÈ£ÀÛ¿ëÀ» À§ÇØ JNI°¡ Native Method¿¡°Ô Á¦°øÇÏ´Â °ÍÀÔ´Ï´Ù. °£·«È÷ ¼³¸íÇϸé, JNIEnv *Àº ½ÇÇà ȯ°æÀÌ ÀÚ¹Ù°¡»ó¸Ó½ÅÀ̶ó´Â °ÍÀ̰í, jobject´Â Ŭ·¡½º ÀÚü¸¦ ¸»ÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ¿Í °°Àº ¹Ì¸® Á¤ÀÇµÈ ÇÔ¼öµéÀ» »ç¿ëÇÒ ¼ö ÀÖµµ·Ï. JNI°¡ Á¦°øÇÏ´Â ÇÔ¼ö´Â 20.4Àý¿¡¼­ »ìÆìº¼ °ÍÀÔ´Ï´Ù.

 

¢Ñ 3 ´Ü°è

javah »ç¿ëÇØ¼­ Çì´õ ÆÄÀÏÀ» »ý¼ºÇÑ´Ù



jabookÀúÀÚ¸íÇÔ
Á¦¸ñ:¼Ò¼³°°ÀºÀÚ¹Ù4ºÎ
ÀúÀÚ:ÃÖ¿µ°ü