³×Æ®¿öÅ©°¡ ÄÄÇ»ÆÃ ȯ°æÀÇ ±â¹ÝÀ» ÀÌ·ç°Ô µÇ¸é¼ À̱âÁ¾ ÄÄÇ»ÅͰ£ ºÐ»ê ÄÄÇ»ÆÃÀÇ Á߿伺ÀÌ ºÎ°¢µÇ°í ÀÖÀ¸³ª, À̰ÍÀº °¢ ÄÄÇ»ÆÃ ȯ°æÀ» ±¸¼ºÇÏ´Â Ç÷§ÆûÀÇ ´Ù¾ç¼º ¶§¹®¿¡ ¸Å¿ì º¹ÀâÇÏ°í ¾î·Á¿î ÀÛ¾÷ÀÌ´Ù. Java ¿£ÅÍÇÁ¶óÀÌÁî Ç÷§ÆûÀº ºÐ»ê ÄÄÇ»ÆÃÀ» À§ÇÑ ´Ù¾çÇÑ API¸¦ Á¦°øÇÏ¿© ÀÀ¿ëÇÁ·Î±×·¥ÀÇ »ý»ê¼º Çâ»ó ¹× Ç÷§Æû µ¶¸³¼ºÀ» Á¦°øÇÑ´Ù. CORBA¿Í JavaÀÇ ¿¬µ¿À» À§ÇÑ JavaIDL, ¿ø°Ý Java ¸Þ½îµå È£ÃâÀ» À§ÇÑ RMI, °ü°èÇü µ¥ÀÌÅͺ£À̽º¿ÍÀÇ ¿¬°áÀ» À§ÇÑ JDBC µîÀÇ API¸¦ ÀÌ¿ëÇÏ¿© °³¹ßÀÚ´Â Java¶ó´Â ´ÜÀÏ Ç÷§ÆûÇÏ¿¡¼ ºÐ»ê ÀÀ¿ëÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù. º» °í¿¡¼´Â Java ºÐ»ê ÄÄÇ»ÆÃ API ¹× °ü·Ã ±â¼ú µ¿Çâ¿¡ ´ëÇØ ¾Ë¾Æº¸°í Java ºÐ»ê ÄÄÇ»ÆÃ ±â¼úÀÇ ¹Ì·¡¿¡ ´ëÇØ Àü¸ÁÇØ º»´Ù.
¡¡
I. Java ºÐ»ê ÄÄÇ»ÆÃ ±â¼úÀÇ °³¿ä
ÀÎÅÍ³Ý ¹× ÀÎÆ®¶ó³ÝÀÇ º¸±ÞÀÌ È®»êµÇ¸é¼ ³×Æ®¿öÅ©´Â ÄÄÇ»ÆÃ ȯ°æÀÇ ±â¹ÝÀ» ÀÌ·ç°Ô µÇ¾úÀ¸¸ç À̱âÁ¾ ÄÄÇ»ÅͰ£ ºÐ»ê ÄÄÇ»ÆÃÀÇ Á߿伺ÀÌ ºÎ°¢µÇ°í ÀÖ´Ù. ±×·¯³ª À̱âÁ¾ ÄÄÇ»ÅͰ£ÀÇ ºÐ»ê ÄÄÇ»ÆÃÀº °¢ ÄÄÇ»ÆÃ ȯ°æÀ» ±¸¼ºÇÏ´Â Ç÷§ÆûÀÇ ´Ù¾ç¼º ¶§¹®¿¡ ¸Å¿ì º¹ÀâÇÏ°í ¾î·Á¿î ÀÛ¾÷À¸·Î ¿©°ÜÁö°í ÀÖ´Ù. °ü·Ã ¾÷ü ¹× Ç¥ÁØÈ ´Üü¿¡¼ ºÐ»ê ÄÄÇ»ÆÃÀ» À§ÇÑ Ç¥ÁØÀ» Á¦¾ÈÇϰí ÀÖÁö¸¸ ºÐ»ê ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ¿ä±¸°¡ Á¡Â÷ ´Ù¾çÈ µÊ¿¡ µû¶ó º¸´Ù ÀϰüÀûÀ̰í Ç÷§Æû¿¡ µ¶¸³ÀûÀÎ °³¹ß ȯ°æÀ» ÇÊ¿ä·Î ÇÏ°Ô µÇ¾ú´Ù. ½ã¸¶ÀÌÅ©·Î½Ã½ºÅÛÁî(ÀÌÇÏ ½ã)¿¡ ÀÇÇØ °³¹ßµÈ Java°¡ µîÀåÇÏ¸é¼ ºÐ»ê ÀÀ¿ëÇÁ·Î±×·¥ °³¹ßÀÚµéÀº ÀÌ·¯ÇÑ °³¹ß ȯ°æÀ» Á¦°ø ¹ÞÀ» ¼ö ÀÖ´Â ±âȸ¸¦ °®°Ô µÇ¾ú´Ù. Java°¡ Á¦½ÃÇÏ´Â ¿£ÅÍÇÁ¶óÀÌÁî Ç÷§Æû[4][EJ]Àº ºÐ»ê ÄÄÇ»ÆÃÀ» À§ÇÑ ´Ù¾çÇÑ API(Application Program Interface)¸¦ Á¦°øÇϸç ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ »ý»ê¼º Çâ»ó ¹× Ç÷§Æû µ¶¸³¼ºÀ» Á¦°øÇÑ´Ù(±×¸² 1 ÂüÁ¶).

¡¡
ºÐ»ê ÄÄÇ»ÆÃ ȯ°æÇÏ¿¡¼ Java´Â ÀÀ¿ëÇÁ·Î±×·¥ °³¹ßÀÚ¿¡°Ô ¼¹ö µ¶¸³¼º »Ó ¾Æ´Ï¶ó Æ®·£Àè¼Ç ½Ã½ºÅÛ ¹× µ¥ÀÌÅͺ£À̽º µî ÇϺα¸Á¶¿ÍÀÇ µ¶¸³¼ºÀ» Á¦°øÇÑ´Ù. Java ¿£ÅÍÇÁ¶óÀÌÁî API[EJ]¸¦ ÅëÇÏ¿© °³¹ßÀÚ´Â ±âÁ¸ÀÇ ´Ù¾çÇÑ ºÐ»ê ÄÄÇ»ÆÃ Ç÷§Æû°ú ÇÁ·ÎÅäÄÝÀ» À§ÇÑ ÀϰüµÈ °³¹ß ȯ°æÀ» Á¦°ø ¹Þ´Â´Ù. CORBA(Common Object Request Broker Architecture)[CORBA]¿Í JavaÀÇ ¿¬µ¿À» À§ÇÑ JavaIDL(Java Interface Definition Language)[JIDL], ¿ø°Ý Java ¸Þ½îµå È£ÃâÀ» À§ÇÑ RMI(Remote Method Invocation)[RMI], Java¿Í °ü°èÇü µ¥ÀÌÅͺ£À̽º¿ÍÀÇ ¿¬°áÀ» À§ÇÑ JDBC(Java DataBase Connectivity)[JDBC] µîÀÇ API¸¦ ÀÌ¿ëÇÏ¿© °³¹ßÀÚ´Â Java¶ó´Â ´ÜÀÏ Ç÷§ÆûÇÏ¿¡¼ ºÐ»ê ÀÀ¿ëÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù. ±×¸² 2´Â Java ºÐ»ê ÄÄÇ»ÆÃ API°£ÀÇ °ü°è¸¦ º¸¿©ÁÖ¸ç, Ç¥ 1Àº °¢ API°£ÀÇ ºñ±³¸¦ ³ªÅ¸³½´Ù.

¡¡
Ç¥
1 ºÐ»ê °ËÇ»ÆÃÀ» À§ÇÑ Java APIÀÇ ºñ±³
| ±¸ºÐ |
|
|
|
|
|
|
|
|
|
º¹À⼺ |
|
||
|
|
|
|
|
À¯¿¬¼º |
|
||
|
|
¡¡ |
|
2. Java ºÐ»ê ÀÀ¿ëÇÁ·Î±×·¥ ¸ðµ¨
Java ºÐ»ê ÀÀ¿ëÇÁ·Î±×·¥À» ÀÛ¼ºÇϱâ À§ÇÑ ¸ðµ¨·Î´Â ÀϹÝÀûÀΠŬ¶óÀ̾ðÆ®/¼¹ö ¸ðµ¨·Î ¾Ë·ÁÁ® ÀÖ´Â 2-°èÃþ ±¸Á¶¿Í ¼¹öÃøÀ» ºñÁî´Ï½º ³í¸® °èÃþ°ú µ¥ÀÌÅͺ£À̽º °èÃþÀ¸·Î ºÐ¸®ÇÑ 3-°èÃþ ±¸Á¶°¡ ÀÖ´Ù[2][6]. ÇöÀç ´ëºÎºÐÀÇ ºÐ»ê ÀÀ¿ëÇÁ·Î±×·¥ÀÌ Ã¤ÅÃÇϰí ÀÖ´Â 2-°èÃþ ±¸Á¶ÀÇ °æ¿ì, ºñÁî´Ï½º ³í¸® °èÃþÀº Ŭ¶óÀ̾ðÆ®Ãø¿¡¼ ½ÇÇàµÇ´Â ÀÀ¿ëÇÁ·Î±×·¥¿¡ Æ÷ÇԵǾî ÀÖÀ¸¸ç ƯÁ¤ ¾÷¹« ¼öÇàÀ» À§ÇØ ¼¹öÃø µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇÑ Á¢±Ù ¹× ÀÌÈÄÀÇ Ã³¸®¸¦ ¼öÇàÇÏ°Ô µÈ´Ù. ±×·¯³ª Àüü ½Ã½ºÅÛÀÇ Å©±â°¡ Ä¿Áö°í Ŭ¶óÀ̾ðÆ®ÀÇ ¼ö°¡ ¸¹¾ÆÁö¸é °¢ ÀÀ¿ëÇÁ·Î±×·¥°£¿¡ µ¿ÀÏÇÑ ¿ªÇÒÀ» ¼öÇàÇÏ´Â ºñÁî´Ï½º ³í¸® °èÃþÀ» Æ÷ÇÔÇÏ°Ô µÇ´Â Áߺ¹ ¹®Á¦°¡ ¹ß»ýÇÏ°Ô µÉ °ÍÀÌ´Ù. ¹Ù²Ù¾î ¸»Çؼ ºñÁî´Ï½º ³í¸®°¡ ¹Ù²î°Ô µÈ´Ù¸é °ü·ÃµÈ ¸ðµç ÀÀ¿ëÇÁ·Î±×·¥ÀÇ ¼öÁ¤ÀÌ ºÒ°¡ÇÇÇÏ°Ô µÈ´Ù. Àß ¼³°èµÈ 3-°èÃþ ±¸Á¶ ½Ã½ºÅÛÀÇ °æ¿ì ÀÌ¿Í °°Àº Áߺ¹ÀÌ ¹ß»ýÇÏÁö ¾ÊÀ¸¸ç ´Ù¸¥ °èÃþ¿¡ ¿µÇâÀ» ÁÖÁö ¾Ê°í ºñÁî´Ï½º ³í¸® °èÃþÀ» º¯°æÇÒ ¼ö ÀÖ´Ù. Java ºÐ»ê ÄÄÇ»ÆÃ API¸¦ ÀÌ¿ëÇÏ¿© ÀÀ¿ëÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¶§´Â ±¸¼ºÇϰíÀÚ ÇÏ´Â ½Ã½ºÅÛ¿¡ ÀûÀýÇÑ ºÐ»ê ÄÄÇ»ÆÃ ¸ðµ¨°ú API¸¦ ¼±ÅÃÇÏ´Â °ÍÀÌ È¿°úÀûÀÎ °á°ú¸¦ ¾òÀ» ¼ö ÀÖ´Â ±âº»ÀÌ µÈ´Ù. ±×¸² 3°ú ±×¸² 4´Â °¢°¢ Java ºÐ»ê ÄÄÇ»ÆÃ API¸¦ ÀÌ¿ëÇÏ¿© ±¸¼º °¡´ÉÇÑ 2-°èÃþ ¹× 3-°èÃþ ½Ã½ºÅÛÀ» º¸¿©ÁØ´Ù.

¡¡

¡¡
º» °íÀÇ ±¸¼ºÀº ´ÙÀ½°ú °°´Ù. II Àå¿¡¼´Â CORBAÀÇ °³¿ä¿Í JavaIDLÀ» ÀÌ¿ëÇÑ Java-CORBA°£ÀÇ ¿¬µ¿¿¡ ´ëÇØ ¼³¸íÇÑ´Ù. III Àå¿¡´Â RMI¿¡ ´ëÇØ¼ ¼³¸íÇϰí IV Àå¿¡¼´Â JDBC¿¡ ´ëÇØ ¾Ë¾Æº¸±â·Î ÇÑ´Ù. ¸¶Áö¸·À¸·Î V Àå¿¡¼´Â Java ºÐ»êÄÄÇ»ÆÃ ±â¼úÀÇ µ¿Çâ°ú ¾ÕÀ¸·ÎÀÇ Àü¸Á¿¡ ´ëÇØ ¼³¸íÇÑ´Ù.
¡¡
II. CORBA¿ÍÀÇ ¿¬µ¿À» À§ÇÑ JavaIDL
À̹ø Àå¿¡¼´Â OMA(Object Management Architecture) ¹× CORBA¿¡ ´ëÇØ ¾Ë¾Æº¸°í Java¿Í ¿¬µ¿Çϱâ À§ÇÑ JavaIDL¿¡ ´ëÇØ¼ ¼³¸íÇÑ´Ù. ±×¸®°í ÇöÀç ÆÇ¸ÅµÇ°í ÀÖ´Â CORBA-Java »ó¿ë Á¦Ç°µé¿¡ ´ëÇØ¼ ¾Ë¾Æº¸±â·Î ÇÑ´Ù.
¡¡
1989³â 4¿ù¿¡ ±âÁ¸ÀÇ ±â¼úÀ» ¹ÙÅÁÀ¸·Î ÀÀ¿ëÇÁ·Î±×·¥µéÀ» °áÇÕÇÑ °´Ã¼ÁöÇâ Ç¥ÁØÀ» Á¦Á¤Çϱâ À§ÇØ OMG(Object Management Group)¶ó´Â ºñ¿µ¸® ´Üü°¡ ź»ýÇß´Ù. Java¸¦ °³¹ßÇÑ ½ãÀº OMGÀÇ Ã¢¸³ ȸ¿øÀ̸ç IDL(Interface Definition Language)°³¹ßÀ» ÁÖµµÇß´Ù. ÇöÀç ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®¸¦ Æ÷ÇÔÇØ 700¿© °³ÀÇ È¸¿ø»ç¸¦ °¡Áö°í ÀÖ´Â OMG´Â 1990³â¿¡ °´Ã¼ÁöÇâ ±â¼úÀ» ±â¹ÝÀ¸·Î À̱âÁ¾ÀÇ ºÐ»ê ȯ°æÇÏ¿¡¼ ÀÀ¿ëÇÁ·Î±×·¥°£ÀÇ ÅëÇÕÀ» À§ÇÑ Ç¥ÁØ ±â¼úÀÎ OMA[5]¸¦ ¹ßÇ¥Çß´Ù. ±×¸² 5´Â OMAÀÇ ±¸Á¶¸¦ ³ªÅ¸³½´Ù. OMA´Â ºÐ»ê ÀÀ¿ëÇÁ·Î±×·¥°£ÀÇ °áÇÕ, °´Ã¼ÀÇ »ý¼º, ¼Ò¸ê ¹× ÀúÀå, Æ®·£Àè¼Ç ±â´É¿¡ À̸£±â±îÁö ºÐ»ê °´Ã¼ ȯ°æ¿¡¼ ÇÊ¿äÇÑ ¼ºñ½º¸¦ Á¦°øÇÑ´Ù. OMAÀÇ ±¸¼º ¿ä¼ÒÁß ÇϳªÀÎ CORBA´Â ¼·Î ´Ù¸¥ ºÐ»ê ÀÀ¿ëÇÁ·Î±×·¥°£À» ¿¬°áÇÏ´Â ¼ÒÇÁÆ®¿þ¾î ¹ö½ºÀÇ ¿ªÇÒÀ» ÇÏ´Â ¸ðµâ·Î¼ OMA ȯ°æ¿¡¼ °¡Àå ÇÙ½ÉÀÌ µÇ´Â ºÎºÐÀ̶ó ÇÒ ¼ö ÀÖÀ¸¸ç ÇöÀç CORBA 2.0ÀÌ ¹ßÇ¥µÇ¾î ÀÖ´Ù. ºÐ»ê ÀÀ¿ëÇÁ·Î±×·¥Àº IDL·Î Á¤ÀÇµÈ ÀÎÅÍÆäÀ̽º¸¦ ÀÌ¿ëÇÏ¿© CORBA¸¦ ÅëÇØ ºÐ»ê °´Ã¼¿¡ Á¢±ÙÇÑ´Ù.

¡¡
CORBAÀÇ ±¸Á¶[5][CORBA]´Â ±×¸² 6°ú °°À¸¸ç ±× ±¸¼º ¿ä¼Ò·Î´Â IDL Stub, µ¿Àû È£Ãâ ÀÎÅÍÆäÀ̽º(Dynamic Invocation Interface), ÄÚ¾î¿Í ÀÎÅÍÆäÀ̽º·Î ÀÌ·ç¾îÁø ORB(Object Request Broker), °´Ã¼ ¾î´ðÅÍ(Object Adapter), Skeleton µîÀÌ ÀÖ´Ù. IDL StubÀº Ŭ¶óÀÌ¾ðÆ®·ÎºÎÅÍ ¼ö½ÅµÈ Á¤Àû È£ÃâÀ» ó¸®Çϸç, µ¿Àû È£Ãâ ÀÎÅÍÆäÀ̽º´Â Ŭ¶óÀ̾ðÆ®ÀÇ ½ÇÇàÁß¿¡ ¿øÇÏ´Â ¸Þ½îµå¸¦ È£ÃâÇÒ ¼ö ÀÖ°Ô ÇØÁÖ´Â µ¿Àû È£ÃâÀ» ó¸®ÇÑ´Ù. ORB´Â Ŭ¶óÀ̾ðÆ®ÀÇ È£ÃâÀÌ ¹ß»ýÇϸé Åë½Å ±â´ÉÀ» ÀÌ¿ëÇÏ¿© ±¸Çö °´Ã¼¿¡°Ô Àü´ÞÇÑ´Ù. È£Ãâ¿¡ µû¶ó °´Ã¼ ¾î´ðÅÍ´Â ÇØ´ç °´Ã¼¸¦ È£Ãâ °¡´ÉÇÏ°Ô »ý¼ºÇϰí SkeletonÀ» ÅëÇØ ¿øÇϴ ȣÃâ¿¡ ÇØ´çÇÏ´Â ¸Þ½îµå¸¦ ½ÇÇà½ÃŲ´Ù. ÀÌÈÄ Ã³¸®µÈ °á°ú´Â È£Ãâ°ú ¿ª¼øÀ¸·Î ´Ù½Ã Ŭ¶óÀÌ¾ðÆ®¿¡°Ô ¹ÝȯµÈ´Ù.

¡¡
CORBA¿¡¼ ¼ºñ½º°¡ È£ÃâµÇ´Â ¿ø¸®´Â ±×¸² 7°ú °°´Ù. ÀϹÝÀûÀÎ °´Ã¼ÁöÇâ Äڵ忡¼´Â ¸Þ½îµå È£ÃâÀÚ(caller)¿Í ÀÌ¿¡ ´ëÇÑ È£Ãâó¸®ÀÚ(callee)°¡ ÇϳªÀÇ ÇÁ·Î¼¼½º¿¡ Á¸ÀçÇÑ´Ù. ±×·¯³ª CORBA¿Í DCE(Distributed Computing Environment)°°Àº ºÐ»ê °´Ã¼ ȯ°æ ¿¡¼´Â È£ÃâÀÚ¿Í È£Ãâó¸®ÀÚ°¡ ³×Æ®¿öÅ©¸¦ »çÀÌ¿¡ µÎ°í ºÐ»êµÇ¾î Á¸ÀçÇÑ´Ù. È£ÃâÀÚÀΠŬ¶óÀÌ¾ðÆ® ÂÊ¿¡¼´Â ³×Æ®¿öÅ©¸¦ ÅëÇØ ¼ºñ½º¸¦ È£ÃâÇÏ°í ±× °á°ú¸¦ Àü´Þ ¹Þ´Â Äڵ尡 ÇÊ¿äÇѵ¥ À̸¦ Stub ¶ó°í Çϰí, È£Ãâó¸®ÀÚÀÎ ±¸Çö °´Ã¼ ÂÊ¿¡¼´Â ³×Æ®¿öÅ©¸¦ ÅëÇØ Àü´Þ ¹ÞÀº ¼ºñ½º È£ÃâÀ» ó¸®ÇÏ°í ±× °á°ú¸¦ ´Ù½Ã Ŭ¶óÀÌ¾ðÆ®¿¡°Ô Àü´ÞÇØ ÁÖ´Â Äڵ尡 ÇÊ¿äÇϸç À̸¦ SkeletonÀ̶ó ÇÑ´Ù. Stub ¹× Skeleton ÄÚµå´Â IDL ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ »ý¼ºµÇ¸ç ½ÇÇà¿¡ ÇÊ¿äÇÑ ¸ðµç ±â´ÉÀÇ ÄÚµå´Â CORBA¿¡ ÀÇÇØ ÀÚµ¿À¸·Î Á¦°øµÈ´Ù..

¡¡
ºÐ»ê ȯ°æÇÏ¿¡¼ IDL[5]Àº C, C++, Ada µî°ú °°Àº ÇÁ·Î±×·¡¹Ö ¾ð¾î³ª ÄÄÆÄÀÏ·¯¿¡ »ó°ü¾øÀÌ CORBA ÀÀ¿ë ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù(±×¸² 8 ÂüÁ¶). IDL·Î ÀÛ¼ºµÈ CORBA ÀÀ¿ë ÇÁ·Î±×·¥Àº IDL ÄÄÆÄÀÏ·¯¸¦ ÅëÇØ ¿øÇÏ´Â ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡ ÀûÇÕÇÑ ÄÚµå·Î º¯È¯µÈ´Ù. °³¹ßÀÚ´Â »ý¼ºµÈ Äڵ带 ÀÌ¿ëÇØ ¿øÇÏ´Â ¾ð¾î·Î ÀÀ¿ë ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ¸é µÈ´Ù. IDLÀÇ Æ¯Â¡Àº ƯÁ¤ ¾ð¾î¿Í ÄÄÆÄÀÏ·¯¿¡ µ¶¸³ÀûÀ̰í, ´ÙÁß »ó¼Ó µî ´ëºÎºÐÀÇ °´Ã¼ÁöÇâ °³³äÀ» Áö¿øÇϸç, µ¿Àû È£Ãâ ¸ÞÄ¿´ÏÁòÀ» Á¦°øÇÑ´Ù´Â °ÍÀÌ´Ù. ±×·¯³ª IDLÀº ±¸ÇöÀ» À§ÇÑ ¾ð¾î°¡ ¾Æ´Ï¸ç °´Ã¼ÀÇ ±¸ÇöÀº C, C++ µîÀÇ ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ ÅëÇÏ¿© ÀÌ·ç¾îÁø´Ù. ÇöÀç IDLÀº Ç¥ÁØÀ¸·Î C ¾ð¾î·ÎÀÇ ¸ÅÇÎÀ» Áö¿øÇϰí ÀÖÀ¸¸ç Á¦Ç°¿¡ µû¶ó ´Ù¸¥ ¾ð¾îµµ Áö¿øµÈ´Ù. ´ÙÀ½¿¡´Â CORBA¿Í JavaÀÇ ¿¬µ¿°ú IDLÀÇ Java ¸ÅÇο¡ °üÇØ¼ »ìÆìº¸±â·Î ÇϰڴÙ.

¡¡
CORBA¿Í JavaÀÇ ¿¬µ¿À» À§Çؼ´Â CORBAÀÇ IDL¾ð¾î·Î Á¤ÀÇµÈ ¿ø°Ý °´Ã¼ ÀÎÅÍÆäÀ̽º¸¦ Java¾ð¾î·Î ¸ÅÇνÃŰ´Â °úÁ¤ÀÌ ÇÊ¿äÇϸç, ºÐ»ê °´Ã¼¸¦ È£ÃâÇϱâ À§ÇÑ Java ORB Ŭ·¡½º°¡ ÇÊ¿äÇÏ´Ù. ´ÙÀ½¿¡´Â ÀÌ·¯ÇÑ ¸ÅÇÎ °úÁ¤°ú CORBA¿Í JavaÀÇ ¿¬µ¿À» À§ÇÑ JavaIDL ȯ°æ¿¡ ´ëÇØ »ìÆìº¸±â·Î ÇϰڴÙ.
¡¡
CORBA¿Í Java°£ÀÇ ¸ÅÇÎ[2][5][JIDLM]À̶õ CORBA IDL ¾ð¾îÀÇ ÀÚ·áÇü, Modules, Interfaces, Attributes µîÀ» Java ¾ð¾î·Î º¯È¯½ÃŰ´Â °ÍÀ̶ó°í ÇÒ ¼ö ÀÖ´Ù(Ç¥ 2 ÂüÁ¶). ÀÌ¿Í ´õºÒ¾î ORB¿¡¼ Á¦°øÇÏ´Â ±â´ÉÀ» »ç¿ëÇϱâ À§ÇÑ ±âº»ÀûÀÎ Java Ŭ·¡½ºµéÀÌ Á¦°øµÇ¾î¾ß ÇÑ´Ù. ±×¸² 9´Â ¾çÃø ¸ðµÎ Java·Î ÀÛ¼ºµÈ Ŭ¶óÀ̾ðÆ®/¼¹ö ¸ðµ¨À» CORBA¿Í Java°£ÀÇ ¸ÅÇÎÀ» ÅëÇØ ±¸ÇöÇÑ ±¸Á¶µµ ÀÌ´Ù. IDL·Î ÀÛ¼ºµÈ Stub ÄÚµå¿Í Skeleton ÄÚµå´Â IDL ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ Java Ŭ·¡½ºÀÇ ÇüÅ·Πº¯È¯µÈ´Ù. ¾Õ¼ CORBA¿¡ ´ëÇØ »ìÆìº» ¹Ù¿Í °°ÀÌ Stub ÄÚµåÀÇ ¿ªÇÒÀº Ŭ¶óÀÌ¾ðÆ®¿¡°Ô ¿ø°ÝÁö¿¡ Á¸ÀçÇÏ´Â ±¸Çö °´Ã¼¿¡ ´ëÇÑ ¸Þ½îµå È£ÃâÀ» ÇÒ ¼ö ÀÖµµ·Ï ÇÁ·Ï½Ã °´Ã¼¸¦ Á¦°øÇÏ´Â °ÍÀÌ´Ù. À̸¦ À§ÇÏ¿© Stub ÄÚµå´Â Åë½Å ±â´ÉÀ» Á¦°øÇÏ´Â ORB Ŭ·¡½º¸¦ È£ÃâÇÑ´Ù. Skeleton ÄÚµå´Â ¼¹ö¿¡ Á¸ÀçÇÏ´Â ±¸Çö °´Ã¼¿Í ORB »çÀÌÀÇ ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÏ¸ç ¼¹ö·Î µé¾î¿À´Â È£Ãâ ¿äû¿¡ µû¶ó ÇØ´ç ±¸Çö °´Ã¼ÀÇ ¸Þ½îµå¸¦ Á÷Á¢ È£ÃâÇÏ´Â ¿ªÇÒÀ» ÇÑ´Ù.

¡¡
Ç¥ 2 JavaIDL 1.1 EA ¹öÀüÀÇ CORBA-Java ¸ÅÇÎ
½ãÀº CORBA-Java ¸ÅÇÎÀ» À§ÇÑ °ø°³ ¼ÒÇÁÆ®¿þ¾î·Î JavaIDL[JIDL]À» Á¦°øÇϰí ÀÖ´Ù. JavaIDLÀº IDL Äڵ带 Java ÄÚµå·Î º¯È¯ÇØÁÖ´Â ÄÄÆÄÀÏ·¯ÀÎ idltojava, ORB ·±Å¸ÀÓ(Portable ORB Core), COS(CORBA Object Service) naming ¼ºñ½º¸¦ À§ÇÑ nameserv µîÀ» Æ÷ÇÔÇϰí ÀÖ´Ù[JIDLG]. ºÐ»ê ÀÀ¿ëÇÁ·Î±×·¥ °³¹ßÀÚ´Â IDL·Î ÀÛ¼ºµÈ Äڵ带 idltojava·Î ÄÄÆÄÀÏÇÏ¿© Java Ŭ¶óÀÌ¾ðÆ® Stub ÄÚµå ¹× ¼¹ö Skeleton Äڵ带 ¾òÀ» ¼ö ÀÖ´Ù. À̶§ »ý¼ºµÈ Stub ÄÚµå´Â º¹¼ö°³ÀÇ ORB ÇÁ·ÎÅäÄÝÀ» Áö¿øÇϱâ À§ÇØ °³¹ßµÈ Portable ORB Core »ó¿¡¼ ¼öÇàµÈ´Ù[JIDLA]. ±×¸² 10Àº JavaIDLÀÇ Å¬¶óÀ̾ðÆ®Ãø ½ÇÇà ȯ°æÀ» ³ªÅ¸³½´Ù.

¡¡
´Ù. JavaIDLÀ» ÀÌ¿ëÇÑ ºÐ»ê ÀÀ¿ëÇÁ·Î±×·¥ °³¹ß
¾Õ¿¡¼ CORBAÀÇ °³¿ä¿Í CORBA-JavaÀÇ ¿¬µ¿ ±â¼ú¿¡ °üÇÏ¿© »ìÆìº¸¾Ò´Ù. ÀÌ¹Ì ±â¼úÇßµíÀÌ CORBA¿Í JavaÀÇ ¿¬µ¿À» À§Çؼ´Â Java ÀÀ¿ë ÇÁ·Î±×·¥°ú CORBA°£ÀÇ ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÏ´Â IDL ÇÁ·Î±×·¡¹ÖÀÌ ÇÊ¿äÇÏ´Ù. °´Ã¼ ÁöÇâ °³³äÀ» ±â¹ÝÀ¸·Î ÇÏ´Â IDLÀº ±× ¹®¹ýµµ C++À̳ª Java¿Í ¸Å¿ì À¯»çÇÏ´Ù. IDL·Î ÀÛ¼ºµÈ ¼¹ö °´Ã¼¿¡ ´ëÇÑ ÀÎÅÍÆäÀ̽º´Â JavaIDL ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ Stub ¹× Skeleton ÄÚµå·Î ¸ÅÇεȴÙ. »ý¼ºµÈ Stub °ú Skeleton Äڵ带 ±â¹ÝÀ¸·Î Ŭ¶óÀÌ¾ðÆ®¿Í ¼¹ö Äڵ带 ÀÛ¼ºÇÑ ÈÄ Java ÄÄÆÄÀÏ·¯¸¦ ÅëÇØ ¹ÙÀÌÆ® ÄÚµå·Î º¯È¯ÇÏ¸é µÈ´Ù. ºÐ»ê ÀÀ¿ë ÇÁ·Î±×·¥À» À§ÇÑ »ó±âÀÇ JavaIDL ÇÁ·Î±×·¡¹Ö °úÁ¤À» Á¤¸®ÇÏ¸é ´ÙÀ½°ú °°´Ù[2][5].
ÇöÀç CORBA¿Í JavaÀÇ ¿¬µ¿À» À§ÇÑ »ó¿ë Á¦Ç° ½ÃÀåÀº ¾ÆÁ÷ Ãʱ⠴ܰ迡 ÀÖ´Ù. ´ëºÎºÐÀÇ CORBA ¾÷üµéÀº ÀÚ»çÀÇ CORBA-Java ¿¬µ¿ Á¦Ç°À» CORBA 2.0 ¹× ORB °£ÀÇ Åë½Å ÇÁ·ÎÅäÄÝÀÎ IIOP(Internet Inter ORB Protocol) ¸¦ Áö¿øÇϵµ·Ï ¾÷±×·¹À̵åÇϱ⿡ ºÐÁÖÇÏ¸ç ¶ÇÇÑ ¸î¸î ¾÷üµéÀº ÀÚ»ç Á¦Ç°¿¡ Àû¿ëÇϱâ À§ÇØ Á¦Ç° ÃâÇÏ Àü¿¡ OMGÀÇ CORBA-Java ¸ÅÇΠǥÁؾÈÀÌ ³ª¿À±â¸¦ ±â´Ù¸®°í ÀÖ´Ù. µû¶ó¼ Çö »óȲ¿¡¼ ¾î¶°ÇÑ Á¦Ç°ÀÌ ½ÃÀåÀ» ¼®±ÇÇÒÁö ¿¹ÃøÇϱâ´Â ¾ÆÁ÷ À̸¥ °¨ÀÌ ÀÖÀ¸¸ç IonaÀÇ OrbixWeb, ½ãÀÇ JOE, VisigenicÀÇ VisiBroker for Java, DigitalÀÇ ObjectBroker, IBMÀÇ SOM, OracleÀÇ Web Request Broker, HPÀÇ ORB Plus µîÀÌ °æÀï¿¡ Âü¿©Çϰí ÀÖ´Ù. ´ÙÀ½¿¡´Â ´ëÇ¥ÀûÀÎ CORBA-Java ¿¬µ¿ Á¦Ç°ÀÎ OrbixWeb, JOE ¹× VisiBroker for Java¿¡ ´ëÇØ »ìÆìº¸°í À̵éÀÇ CORBA Áö¿ø ±â´ÉÀ» ºñ±³ÇØ º¸±â·Î ÇÑ´Ù.
¡¡
CORBA ±â¼úÀÇ ¼±µµ ¾÷üÀÎ IonaÀÇ OrbixWeb[2][OW]Àº Java·Î ±¸ÇöÇÑ Å¬¶óÀ̾ðÆ®ÃøÀÇ CORBA ORB ÀÌ´Ù. À̰ÍÀº ³×Æ®¿öÅ©¸¦ ÅëÇØ ¹ÙÀÌÆ® ÄÚµå ÇüÅ·Π´Ù¿î·Îµå ¹ÞÀ» ¼ö ÀÖ´Â °æ·® ORBÀ̸ç CORBA IIOP ÇÁ·ÎÅäÄÝ ¹× ÀÌÀü ¹öÀüÀÇ Orbix IIOP ÇÁ·ÎÅäÄÝÀ» Áö¿øÇÑ´Ù. µû¶ó¼ ´Ù¸¥ Ç÷§Æû»óÀÇ IIOP ÇÁ·ÎÅäÄÝ ±â¹Ý ORB¿Í Åë½ÅÀÌ °¡´ÉÇÏ´Ù. OrbixWeb V1¿¡¼´Â C++·Î ÀÛ¼ºµÈ ¼¹ö °´Ã¼¸¸À» Áö¿øÇÑ´Ù´Â Á¦¾àÀÌ ÀÖ¾úÀ¸³ª ¼¹öÃø¿¡¼ Java¸¦ Áö¿øÇÒ ¼ö ÀÖ°Ô µÈ OrbixWeb V2°¡ ¹ßÇ¥µÇ¸é¼ ÀÌ·¯ÇÑ Á¦¾àÀº ÇØ°áµÇ¾ú´Ù. ¶ÇÇÑ ´ëºÎºÐÀÇ Java ORB Á¦Ç°ÀÌ ¾÷ü¿¡ µû¶ó ´Ù¸¥ CORBA-Java ¸ÅÇÎ ¹æ½ÄÀ» äÅÃÇϰí Àִµ¥ ¹ÝÇØ OrbixWeb V2´Â OMG¿¡¼ °ËÅäÁß¿¡ ÀÖ´Â CORBA-Java ¸ÅÇο¡ ´ëÇÑ Ç¥ÁؾÈÀ» ±â¹ÝÀ¸·Î ±¸ÇöÇÏ´Â °ÍÀ» ¸ñÀûÀ¸·Î Çϰí ÀÖ´Ù.
¡¡
JOE(Java Object Environment)[2][JOE]´Â Ŭ¶óÀÌ¾ðÆ®¸¦ À§ÇÑ Java ORB¸¦ Á¦°øÇÑ´Ù(±×¸² 11 ÂüÁ¶). Ŭ¶óÀ̾ðÆ®Ãø¿¡¼´Â Java ¾ÖÇø´(Applet)°ú ÇÔ²² JOE ORBletÀ» ´Ù¿î·Îµå ¹Þ¾Æ ºÐ»ê °´Ã¼ ÇϺα¸Á¶¸¦ Á¦°øÇÏ´Â ½ãÀÇ 3-°èÃþ Ŭ¶óÀ̾ðÆ®/¼¹ö ±¸Á¶ÀÎ NEO[2][NEO]ÀÇ ORB¿Í Åë½ÅÇÏ¿© ¼¹ö»óÀÇ ±¸Çö °´Ã¼¸¦ È£ÃâÇÑ´Ù. ¹Ýº¹ÀûÀÎ ORBletÀÇ ´Ù¿î·Îµå¸¦ ¸·±âÀ§ÇØ JOE´Â ·ÎÄà ½Ã½ºÅÛ¿¡ ¼³Ä¡µÉ ¼öµµ ÀÖ´Ù. JOE´Â ORB»Ó ¾Æ´Ï¶ó °¢Á¾ °³¹ß µµ±¸¿Í ¶óÀ̺귯¸®, Java·Î ÀÛ¼ºµÈ °ü¸® µµ±¸ ¹× IDL ÄÄÆÄÀÏ·¯µµ Á¦°øÇϴµ¥ JOEÀÇ IDL ÄÄÆÄÀÏ·¯´Â Ç¥ÁØ CORBA IDL ÆÄÀÏÀ» Ŭ¶óÀÌ¾ðÆ® Stub Ŭ·¡½º·Î º¯È¯ÇØÁØ´Ù. JOE 1.0¿¡¼´Â NEO ORB Ç÷§Æû¸¸À» ¼¹ö·Î Áö¿øÇÑ´Ù. NEO°¡ ´ÜÁö Soloaris ¿î¿µÃ¼Á¦¸¸À» Áö¿øÇϰí C³ª C++·Î ÀÛ¼ºµÈ ¼¹ö °´Ã¼¸¸À» Áö¿øÇÑ´Ù´Â °Í ¶§¹®¿¡ ¼¹ö Ç÷§ÆûÀÇ Á¦¾à°ú ¼¹öÂÊ¿¡ Java °´Ã¼¸¦ »ç¿ëÇÒ ¼ö ¾ø´Ù´Â °ÍÀÌ JOE 1.0ÀÇ ´ÜÁ¡ À̾ú´Ù. ±×·¯³ª IIOP¸¦ Áö¿øÇÏ´Â JOE 2.0ÀÌ ¹ßÇ¥µÇ¾î ´Ù¸¥ Ç÷§ÆûÀÇ ORB¸¦ Áö¿øÇÏ°Ô µÇ¸é¼ ÀÌ·¯ÇÑ ¹®Á¦Á¡Àº ´Ù¼Ò ÇØ°áµÇ¾ú´Ù.

¡¡
´Ù. VisigenicÀÇ VisiBroker for Java
VisiBroker[2][VB]ÀÇ Àü½ÅÀÎ PostModernÀÇ Black Widow ORB´Â Ŭ¶óÀÌ¾ðÆ®¿Í ¼¹öÃø ¸ðµÎ¿¡ Java °´Ã¼¸¦ Áö¿øÇÏ´Â ÃÖÃÊÀÇ Á¦Ç°À̾ú´Ù(±×¸² 12 ÂüÁ¶). VisiBroker ORB´Â ¿ÏÀüÇÑ Java ÄÚµå·Î µÇ¾î ÀÖ¾î ´Ù¿î·Îµå °¡´ÉÇÑ ORBletÀ» Á¦°øÇÑ´Ù. Netscape»ç´Â ±×µéÀÇ °³¹æÇü ³×Æ®¿öÅ© Ç÷§ÆûÀÎ Netscape ONE(Open Network Environment)¿¡ Java Ŭ¶óÀÌ¾ðÆ®¿Í ¼¹ö¸¦ ÅëÇÕÇϱâ À§ÇÑ ¹æÆíÀ¸·Î CORBA¸¦ äÅÃÇϰí VisiBroker ORB¸¦ »ç¿ëÇϰí ÀÖ´Ù. VisiBroker ORB´Â ¾ÖÇø´ ºê¶ó¿ìÀúÀÇ Áö¿ø ¿©ºÎ¿¡ µû¶ó Secure Socket Àü¼ÛÀ» »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç IIOP¸¦ Áö¿øÇÏ´Â À̱âÁ¾ Ç÷§Æû»óÀÇ ORB¿Í Åë½ÅÇÒ ¼ö ÀÖ´Ù. VisiBroker IDL ÄÄÆÄÀÏ·¯´Â Ŭ¶óÀÌ¾ðÆ® Stub°ú ¼¹ö Skeleton Äڵ带 »ý¼ºÇØÁÖ¸ç, CORBA-Java ¸ÅÇÎÀº ½ãÀÇ IDL ¸í¼¼¿¡ ±â¹ÝÀ» µÎ°í ÀÖÀ¸³ª OMGÀÇ CORBA ¸ÅÇξÈÀÌ ¹ßÇ¥µÇ´Â ´ë·Î À̸¦ Àû¿ëÇÒ ¿¹Á¤ÀÌ´Ù. VisiBrokerÀÇ ¶Ç ´Ù¸¥ Ư¡Àº Caffeine[2]À» Áö¿øÇÑ´Ù´Â °ÍÀε¥ À̸¦ ÅëÇØ IDL ÇÁ·Î±×·¡¹Ö ¾øÀÌ ºÐ»ê °´Ã¼¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù. Netscape¿Í Visigenic¿¡ ÀÇÇØ °øµ¿ °³¹ßµÈ CaffeineÀº CORBA/IIOP »óÀÇ ¼ø¼ö Java °³¹ß ¼Ö·ç¼ÇÀ¸·Î½á CORBA IDL¿¡ ´ëÇÑ ¿ÏÀüÇÑ Åõ¸í¼ºÀ» Á¦°øÇÔÀ¸·Î½á VisiBrokerÇÏ¿¡¼ RMI¿Í À¯»çÇÑ ÇÁ·Î±×·¡¹Ö ȯ°æÀ» Á¦°øÇÑ´Ù. CaffeineÀº Java ÀÎÅÍÆäÀ̽º ÆÄÀϷκÎÅÍ IIOP ȣȯ Stub°ú Skeleton Äڵ带 »ý¼ºÇϰųª Java ÄÚµå·ÎºÎÅÍ CORBA IDL Äڵ带 »ý¼ºÇØÁÖ´Â µµ±¸¸¦ Á¦°øÇϸç, URL(Uniform Resource Locator) ±â¹ÝÀÇ CORBA naming ¼ºñ½º¸¦ Á¦°øÇÑ´Ù.

¡¡
Ç¥ 3Àº ¾Õ¼ »ìÆìº» OrbixWeb, JOE ¹× VisiBroker for JavaÀÇ CORBA Áö¿ø ±â´ÉÀ» ºñ±³ÇÑ °ÍÀÌ´Ù. Ç¥¿¡¼ º¸µíÀÌ ÇöÀç VisiBroker for Java°¡ ±â´É»óÀÇ ¿ìÀ§¸¦ ¼±Á¡Çϰí´Â ÀÖÁö¸¸ OrbixWebÀÇ Â÷±â ¹öÀüÀ̳ª ½ãÀÇ JOE 2.0ÀÌ ¹ßÇ¥µÇ°í ³ª¸é °æÀïÀº ´õ¿í Ä¡¿ÇØÁú Àü¸ÁÀÌ´Ù.
¡¡
Ç¥
3 ´ëÇ¥ÀûÀÎ CORBA-Java ¿¬µ¿ Á¦Ç°°£ÀÇ ºñ±³
¡¡
III. ¿ø°Ý Java ¸Þ½îµå È£ÃâÀ» À§ÇÑ RMI
º» Àå¿¡¼´Â Java °´Ã¼¸¸À¸·Î ±¸¼ºµÈ µ¿Á¾ÀÇ ºÐ»ê ÄÄÇ»ÆÃ ȯ°æÇÏ¿¡¼ ¿ø°Ý °´Ã¼ È£ÃâÀ» À§ÇÑ ¼ø¼ö Java ȯ°æÀ» Á¦°øÇÏ´Â RMI¿¡ ´ëÇØ »ìÆìº¸±â·Î ÇÑ´Ù.
¡¡
1. RMIÀÇ °³¿ä
¾ÕÀå¿¡¼ »ìÆìº¸¾Ò´ø JavaIDLÀº À̱âÁ¾ ºÐ»ê ÄÄÇ»ÆÃ ȯ°æÀ» Áö¿øÇÏ´Â CORBA¿ÍÀÇ ¿¬µ¿À» À§ÇÑ ±â¼ú·Î¼ CORBA±â¹Ý ºÐ»ê ÄÄÇ»ÆÃ ȯ°æÇÏ¿¡¼ ±âÁ¸ ½Ã½ºÅÛÀÇ º¯°æ ¾øÀÌ À¯¿¬ÇÏ°Ô Java ºÐ»ê ÀÀ¿ëÇÁ·Î±×·¥À» ÅëÇÕÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù. ±×·¯³ª Java °´Ã¼¸¸À¸·Î ±¸¼ºµÈ µ¿Á¾ÀÇ ºÐ»ê ȯ°æÀ̶ó¸é ORB ¹× °´Ã¼ ¾î´ðÅ͸¦ ÅëÇÑ CORBAÀÇ ¿À¹öÇìµå¸¦ °¨¼öÇØ¾ß ÇÏ´Â JavaIDL º¸´Ù ¼ø¼ö Java °´Ã¼°£ÀÇ ÅëÇÕÀ» ¸ñÇ¥·Î ¼³°èµÇ¾îÁø RMI[6][RMI] ±â¼úÀÌ º¸´Ù ºü¸£°í È¿°úÀûÀÎ ÇØ°áÃ¥À» Á¦°øÇÑ´Ù(±×¸² 13 ÂüÁ¶). RMI¿Í À¯»çÇÑ ±â¼ú·Î½á C ³ª C++ µî ´Ù¸¥ ¾ð¾î¿¡¼ Á¦°øµÇ´Â ºÐ»ê ÄÄÇ»ÆÃ ±â¼úÀÎ RPC(Remote Procedure Call)°¡ ÀÖ´Ù. RMI¿Í RPCÀÇ ¿ø°Ý °´Ã¼ È£Ãâ ¸ÞÄ¿´ÏÁòÀº È£ÃâÀÚ °´Ã¼°¡ ¿ø°ÝÁö¿¡ Àִ ȣÃâó¸®ÀÚ °´Ã¼¿¡°Ô ¿äûÀ» º¸³»°í ÀÀ´äÀ» ¹Þ´Â´Ù´Â °Í°ú È£Ãâó¸®ÀÚ °´Ã¼°¡ È£ÃâÀü¿¡ ¸ÕÀú »ý¼ºµÇ¾î ½ÇÇàÁßÀ̾î¾ß ÇÑ´Ù´Â °øÅëÁ¡À» °¡Áö°í ÀÖ´Ù.

¡¡
RMIÀÇ ±¸Á¶[3]´Â ±×¸² 14¿Í °°ÀÌ Stub ¹× Skeleton °èÃþ, ¿ø°Ý ÂüÁ¶(Remote Reference) °èÃþ, Àü¼Û(Transport) °èÃþÀ¸·Î ÀÌ·ç¾îÁ® ÀÖ´Ù. RMI¸¦ ±¸¼ºÇÏ´Â ¿ä¼ÒÀÇ Çϳª·Î¼ Stub °ú Skeleton °èÃþÀº JavaIDLÀÇ ±×°Í°ú À¯»çÇÑ ±â´ÉÀ» Á¦°øÇÑ´Ù. Stub ¹× Skeleton °èÃþ°ú Àü¼Û °èÃþÀ» ¿¬°áÇØÁÖ´Â ¿ø°Ý ÂüÁ¶ °èÃþÀº µÎ °¡Áö ±â´ÉÀ» ¼öÇàÇϴµ¥, ù¹øÂ°´Â Stub°ú Skeleton °èÃþÀ¸·ÎºÎÅÍÀÇ Àü¼Û ¿äûÀ» È£½ºÆ® ½Ã½ºÅÛÀÇ Àü¼Û È£Ãâ·Î º¯È¯ÇØ ÁÖ´Â °ÍÀ̸ç, µÎ ¹øÂ°´Â ¿ø°Ý °´Ã¼¸¦ È£ÃâÇÒ ¼ö ÀÖ°Ô ÇÏ´Â ¿ø°Ý ÂüÁ¶ ÇÁ·ÎÅäÄÝÀ» ¼öÇàÇÏ´Â ±â´ÉÀÌ´Ù. °¡Àå ÇÏ´Ü¿¡ Á¸ÀçÇÏ´Â Àü¼Û °èÃþÀº ¿ø°Ý °´Ã¼°£ÀÇ È£ÃâÀ» À§ÇÑ ¿¬°áÀÇ ¼³Á¤, ÇØÁ¦ ¹× °ü¸®¸¦ ¼öÇàÇÑ´Ù.

¡¡
3. RMI¸¦ ÀÌ¿ëÇÑ ºÐ»ê ÀÀ¿ëÇÁ·Î±×·¥ °³¹ß
RMI¸¦ ÀÌ¿ëÇÑ ºÐ»ê ÀÀ¿ëÇÁ·Î±×·¥ °³¹ß °úÁ¤Àº JavaIDLÀÇ °³¹ß °úÁ¤°ú ¸Å¿ì À¯»çÇÏ´Ù. ´Ù¸¸ RMIÀÇ °æ¿ì ¿ø°Ý °´Ã¼¸¦ Á¤ÀÇÇÒ ¶§µµ Java ¾ð¾î¸¦ ÀÌ¿ëÇÑ´Ù´Â °ÍÀÌ ¿ø°Ý °´Ã¼ Á¤Àǽà IDLÀ» »ç¿ëÇÏ´Â JavaIDL°ú Å©°Ô ´Ù¸¥ Á¡À̶ó°í ÇÒ ¼ö ÀÖ´Ù. ¿ø°Ý °´Ã¼¸¦ Á¤ÀÇÇÑ ÈÄ RMI ÄÄÆÄÀÏ·¯¸¦ ÅëÇÏ¿© Stub°ú Skeleton Äڵ带 »ý¼ºÇس»´Âµ¥ ÀÌÈÄÀÇ °úÁ¤Àº JavaIDL ÀÀ¿ëÇÁ·Î±×·¥ °³¹ß °úÁ¤°ú µ¿ÀÏÇÏ´Ù. °³¹ßÀÇ Àü °úÁ¤À» Á¤¸®ÇÏ¸é ¾Æ·¡¿Í °°´Ù[3].
¡¡
¡¡
IV. µ¥ÀÌÅͺ£À̽º Á¢¼ÓÀ» À§ÇÑ JDBC
À̹ø Àå¿¡¼´Â °ü°èÇü µ¥ÀÌÅͺ£À̽º ½Ã½ºÅÛ°ú Java ÀÀ¿ëÇÁ·Î±×·¥°£ÀÇ ¿¬°áÀ» Á¦°øÇÏ´Â JDBC¿¡ ´ëÇØ¼ ¼³¸íÇϱâ·Î ÇÑ´Ù. JDBC¸¦ ÅëÇÏ¿© ÇÁ·Î±×·¡¸Ó´Â Java ȯ°æÇÏ¿¡¼ ¿ø°Ý µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇÑ ÁúÀǸ¦ ¼öÇàÇÏ´Â ÀÀ¿ëÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù.
¡¡
1. JDBCÀÇ °³¿ä
JDBC[3][JDBC]´Â Java Ŭ¶óÀÌ¾ðÆ®¿Í °ü°èÇü µ¥ÀÌÅͺ£À̽º ¼¹ö¿ÍÀÇ ¿¬µ¿À» À§ÇÑ ÇØ°áÃ¥À» Á¦°øÇÑ´Ù(±×¸² 15 ÂüÁ¶). ´Ù½Ã ¸»Çؼ Java¸¦ ÀÌ¿ëÇÑ µ¥ÀÌÅͺ£À̽º Á¢¼Ó°ú SQL(Structured Query Language) ¹®ÀåÀÇ ½ÇÇà ±×¸®°í ½ÇÇà °á°ú·Î ¾ò¾îÁø µ¥ÀÌÅ͸¦ ´Ù·ç´Â ¹æ¹ý°ú ÀýÂ÷¸¦ Á¦°øÇÑ´Ù. JDBCÀÇ Å« Ư¡Àº ÅëÇÕÀûÀÎ SQL µ¥ÀÌÅͺ£À̽º¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖ´Â ÇÁ·¹ÀÓ¿öÅ©·Î¼ µ¥ÀÌÅͺ£À̽º¿¡ ºñÁ¾¼ÓÀûÀÎ ºÐ»ê ÀÀ¿ëÇÁ·Î±×·¥À» ±¸ÇöÇÒ ¼ö ÀÖµµ·Ï ÇØÁشٴ °ÍÀÌ´Ù. Áï, JDBC¿Í ¿¬µ¿ °¡´ÉÇÑ µå¶óÀ̹ö ¹× ¸ðµâÀ» ¸ðµÎ »ç¿ëÇÏ¿© µ¥ÀÌÅͺ£À̽º¿¡ Á¢±ÙÇÒ ¼ö Àִµ¥, ¼ø¼ö Java·Î ÀÛ¼ºµÈ µå¶óÀ̹ö¿Í È£½ºÆ® ½Ã½ºÅÛ¿¡¼ Á¦°øÇÏ´Â µå¶óÀ̹ö¸¦ ¸ðµÎ »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀÌ´Ù. Java Ŭ·¡½º ÇüÅ·ΠÁ¦°øµÇ´Â JDBC API´Â ODBC(Open DataBase Connectivity)³ª ±âÁ¸ÀÇ µ¥ÀÌÅͺ£À̽º Á¢±ÙÀ» À§ÇÑ ÀÎÅÍÆäÀ̽ºÀÇ »óÀ§ °èÃþÀ» ±¸ÇöÇÒ ¸ñÀûÀ¸·Î °í¾ÈµÇ¾ú´Ù. ¶ÇÇÑ À¥ ºê¶ó¿ìÀú»óÀÇ º¸¾È¿¡ À§¹èµÇÁö ¾Ê´Â Á¶°ÇÇÏ¿¡ ´Ù¾çÇÑ µ¥ÀÌÅͺ£À̽º Á¢±Ù ¹æ½ÄÀ» Á¦°øÇÔÀ¸·Î½á CGI(Common Gateway Interface)¸¦ ÀÌ¿ëÇÑ ¼öµ¿ÀûÀÎ ¹æ½ÄÀ» ¹þ¾î³ª º¸´Ù ´Éµ¿ÀûÀÎ µ¥ÀÌÅͺ£À̽ºÀÇ ÀÌ¿ëÀÌ °¡´ÉÇÏ´Ù.

¡¡
JDBCÀÇ ±¸Á¶[2]´Â ±×¸² 16¿¡¼ º¸µíÀÌ JDBC °ü¸®ÀÚ, ÀÀ¿ëÇÁ·Î±×·¥À» À§ÇÑ JDBC API ¹× 3 °¡Áö ÇüÅÂÀÇ JDBC µå¶óÀ̹ö¿Í À̸¦ À§ÇÑ µå¶óÀ̹ö API·Î ÀÌ·ç¾îÁ® ÀÖ´Ù. JDBC µå¶óÀ̹öÀÇ »óÀ§¿¡ ÀÖ´Â JDBC °ü¸®ÀÚ´Â ÀÀ¿ëÇÁ·Î±×·¥ÀÌ ¿ä±¸ÇÏ´Â µ¥ÀÌÅͺ£À̽º¿¡ Á¢±ÙÇϵµ·Ï Çϱâ À§ÇÏ¿© ÀûÀýÇÑ µå¶óÀ̹ö¸¦ ¼±ÅÃÇØÁÖ°í µ¥ÀÌÅͺ£À̽º¿ÍÀÇ ¿¬°áÀ» °ü¸®Çϸç ÀÛ¾÷µµÁß ¹ß»ýÇÏ´Â ¸Þ½ÃÁö ¹× ·Î±×¸¦ °ü¸®ÇÑ´Ù. ƯÁ¤ µ¥ÀÌÅͺ£À̽º¿ÍÀÇ ¿¬°áÀ» À§ÇÑ JDBC µå¶óÀ̹ö¿¡´Â 3 °¡Áö ÇüŰ¡ Àִµ¥, ³×Æ®¿öÅ© ÇÁ·ÎÅäÄÝÀ» ÅëÇØ Á÷Á¢ µ¥ÀÌÅͺ£À̽º¿¡ Á¢¼ÓÇÏ´Â JDBC ³×Æ®¿öÅ© µå¶óÀ̹ö, ODBC¿ÍÀÇ ¿¬µ¿À» Á¦°øÇÏ´Â JDBC-ODBC ºê¸®Áö µå¶óÀ̹ö, µ¥ÀÌÅͺ£À̽º Á¦Á¶ ¾÷ü¿¡¼ Á¦°øÇÏ´Â Àü¿ë JDBC µå¶óÀ̹ö(Direct JDBC Driver) µîÀÌ ±×°ÍÀÌ´Ù. Java ÀÀ¿ëÇÁ·Î±×·¥¿¡¼´Â JDBC °ü¸®ÀÚ¿ÍÀÇ ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÏ´Â JDBC API¸¦ ÅëÇÏ¿© ¿øÇÏ´Â µå¶óÀ̹ö¸¦ µî·ÏÇÏ°í µ¥ÀÌÅͺ£À̽º¿¡ Á¢¼ÓÇÒ ¼ö ÀÖ´Ù.

¡¡
3. ±âŸ À¥-µ¥ÀÌÅͺ£À̽º°£ ¿¬µ¿ ±â¼ú
À¥°ú µ¥ÀÌÅͺ£À̽º¸¦ ¿¬µ¿Çϱâ À§ÇÑ ±â¼ú¿¡´Â JDBCÀ̿ܿ¡µµ CGI[3], À¥ ¼¹ö API, µ¥ÀÌÅͺ£À̽º Á¢¼ÓÀ» À§ÇÑ ¹Ìµé¿þ¾î(middleware) µîÀ» ÀÌ¿ëÇÏ´Â ¹æ¹ýµéÀÌ ÀÖ´Ù. À¥ÀÇ ÃʱâºÎÅÍ ³Î¸® ¾²¿©Áö´ø CGI´Â °¡Àå ÀϹÝÀûÀÎ ¹æ¹ýÀ¸·Î ¸ðµç À¥ ºê¶ó¿ìÀú¸¦ Áö¿øÇÏ¸ç ºü¸¥ ÇÁ·ÎÅäŸÀÌÇΰú Ç¥ÁØÈµÈ ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÏÁö¸¸ ´ëÈÇü ÇÁ·Î±×·¥ÀÇ ÀÛ¼ºÀÌ ¾î·Æ°í ¼¹ö ½Ã½ºÅÛÀÇ ¿À¹öÇìµå°¡ Å©¸ç º¸¾ÈÀÌ Ãë¾àÇÏ´Ù´Â ´ÜÁ¡À» °¡Áö°í ÀÖ´Ù. À¥ ¼¹ö API´Â À¥ ¼¹ö¸¦ °³¹ßÇÏ´Â ¾÷ü³ª µ¥ÀÌÅͺ£À̽º¸¦ °³¹ßÇÏ´Â ¾÷ü¿¡¼ ƯÁ¤ÇÑ È¤Àº ÀÚ»çÀÇ µ¥ÀÌÅͺ£À̽º Á¢±ÙÀ» À§ÇØ Á¦°øÇÏ´Â Àü¿ë API ÀÌ´Ù. ÀÌ Àü¿ë API¸¦ ÀÌ¿ëÇÏ¸é °³¹ßÀÌ ¿ëÀÌÇϸç CGIº¸´Ù ÈξÀ ¼¹öÀÇ ºÎ´ãÀ» ÁÙÀÏ ¼ö ÀÖÀ¸³ª, ƯÁ¤ ¼¹ö³ª µ¥ÀÌÅͺ£À̽º¿¡ Á¾¼ÓÀûÀ̶ó´Â ¹®Á¦Á¡À» ¾È°í ÀÖ´Ù. Java API³ª CGI ½ºÅ©¸³Æ® ÇüÅ·ΠÁ¦°øµÇ´Â ¹Ìµé¿þ¾î´Â HTML(HyperText Markup Language)¿¡¼ ¹Ù·Î ÀÌ¿ëÇÒ ¼ö ÀÖÀ¸¸ç ¹Ìµé¿þ¾î°¡ Á¦°øÇÏ´Â OLTP(OnLine Transaction Processing)¼ºñ½º µîÀ» ¹ÞÀ» ¼ö ÀÖ´Ù´Â ÀåÁ¡À» °¡Áö°í ÀÖ´Ù. ±×·¯³ª °¡°ÝÀÌ ºñ½Î¸ç ȯ°æ ¼³Á¤ ¹× °ü¸®°¡ ¸Å¿ì ±î´Ù·Ó´Ù. ÀÌ¿Í ºñ±³ÇØ JDBCÀÇ °æ¿ì ´Ù¾çÇÑ ½Ã½ºÅÛ ±¸¼ºÀÌ °¡´ÉÇÏ¸ç ¼¹öÀÇ ºÎ´ãÀ» ´ëÆø ÁÙÀÌ°í °æ·® Ŭ¶óÀ̾ðÆ®ÀÇ ±¸¼ºÀÌ °¡´ÉÇÏ´Ù´Â ÀåÁ¡À» °¡Áö°í ÀÖ´Ù. ¶ÇÇÑ ¾Õ¼ ¼³¸íÇÑ RMI³ª JavaIDLÀ» ÀÌ¿ëÇÏ¿© 3-°èÃþ ºÐ»ê ½Ã½ºÅÛÀ» ±¸¼ºÇÑ´Ù¸é º¸´Ù È¿°úÀûÀÎ ºÐ»ê ȯ°æÀ» ±¸ÃàÇÒ ¼ö ÀÖ´Ù.
V. Java ºÐ»ê ÄÄÇ»ÆÃ ±â¼úÀÇ Àü¸Á
Áö±Ý±îÁö CORBA¿Í Java°£ÀÇ ¿¬µ¿À» À§ÇÑ JavaIDL, JavaÀÇ ¿ø°Ý ¸Þ½îµå È£ÃâÀ» À§ÇÑ RMI, µ¥ÀÌÅͺ£À̽º Á¢¼ÓÀ» À§ÇÑ JDBC µîÀÇ Java ºÐ»ê ÄÄÇ»ÆÃ ±â¼ú¿¡ ´ëÇÏ¿© »ìÆìº¸¾Ò´Ù. ³¡À¸·Î ¾ÕÀ¸·ÎÀÇ ºÐ»ê ÀÀ¿ëÇÁ·Î±×·¥ ȯ°æ¿¡ ÀÖ¾î¼ Java ºÐ»ê ÄÄÇ»ÆÃ ±â¼úÀÌ ¿ì¸®ÀÇ ±â´ë¸¸ÅÀÇ ¿ªÇÒÀ» ÇØ³¾ °ÍÀÎÁö Á¶½É½º·´°Ô ¿¹ÃøÇÏ¸ç °á·ÐÀ» ¸Î±â·Î ÇϰڴÙ.
OMG¿¡ ÀÇÇØ °³¹ßµÈ CORBA´Â °´Ã¼ÁöÇâ ±â¼úÀ» ±â¹ÝÀ¸·Î ÇÏ´Â À̱âÁ¾ ºÐ»ê ÄÄÇ»ÆÃ ±¸Á¶ÀÌ´Ù. CORBA¸¦ ÅëÇÏ¿© °³¹ßÀÚµéÀº ¼·Î ´Ù¸¥ Ç÷§Æû»ó¿¡¼ ÀÛ¼ºµÈ ºÐ»ê ÀÀ¿ëÇÁ·Î±×·¥À» ÇϳªÀÇ Å¬¶óÀ̾ðÆ®/¼¹ö ½Ã½ºÅÛÀ¸·Î ÅëÇÕÇÒ ¼ö ÀÖ°Ô µÇ¾úÀ¸¸ç °´Ã¼ÁöÇâ °³³äÀ» ¹ÙÅÁÀ¸·Î ³×Æ®¿öÅ©»ó¿¡ ºÐ»êµÈ ´Ù¾çÇÑ °´Ã¼µéÀ» ¼Õ½±°Ô È£ÃâÇÒ ¼ö ÀÖ°Ô µÇ¾ú´Ù. ÀÌ¿Í °°Àº ÀåÁ¡µé ¶§¹®¿¡ CORBA´Â »ê¾÷°è Ç¥ÁØÀÌ µÇ¾úÀ¸¸ç ´Ù¾çÇÑ CORBA »ó¿ë Á¦Ç°µéÀÌ °³¹ßµÇ¾î °æÀïÇϰí ÀÖ´Ù. À¥ÀÇ µ¹Ç³À» µî¿¡ ¾÷°í Àü¸é¿¡ µîÀåÇÑ °´Ã¼ÁöÇâ ¾ð¾îÀÎ Java´Â Ç÷§Æû µ¶¸³¼ºÀ̶ó´Â Ư¡À» ±â¹ÝÀ¸·Î ´ëÇ¥Àû ³×Æ®¿öÅ© ÇÁ·Î±×·¡¹Ö ¾ð¾î·Î ÀÚ¸®Àâ¾Æ °¡°í ÀÖ´Ù. À̱âÁ¾ ºÐ»ê ÄÄÇ»ÆÃ ȯ°æÀ» Á¦°øÇÏ´Â CORBA¿Í Ç÷§Æû µ¶¸³¼ºÀ» ÁöÇâÇÏ´Â ÀÎÅÍ³Ý ÇÁ·Î±×·¡¹Ö ¾ð¾î Java¸¦ ÅëÇÕÇϱâ À§ÇÑ ±â¼úÀÎ JavaIDLÀ» ÀÌ¿ëÇÏ¿© ÇÁ·Î±×·¡¸Ó´Â ÀÎÅÍ³Ý»ó¿¡ Á¸ÀçÇÏ´Â CORBA ºÐ»ê °´Ã¼µéÀ» ½±°Ô ÅëÇÕÇÒ ¼ö ÀÖÀ¸¸ç, »ç¿ëÀÚ´Â Java ½ÇÇà ȯ°æ¸¸ ±¸ÃàµÈ´Ù¸é UNIX ±â¹ÝÀÇ ¿öÅ©½ºÅ×À̼ǿ¡¼ºÎÅÍ ½Ç½Ã°£ ¿î¿µÃ¼Á¦¸¦ »ç¿ëÇÏ´Â PDA(Personal Digital Assistant)¿¡ À̸£±â±îÁö Çϵå¿þ¾î ¹× ¿î¿µÃ¼Á¦¿¡ »ó°ü¾øÀÌ CORBA ÀÀ¿ë ÇÁ·Î±×·¥À» ¼öÇàÇÒ ¼ö ÀÖ°Ô µÈ´Ù. ¶ÇÇÑ JavaIDL°ú ´õºÒ¾î µ¿Á¾ÀÇ Java ȯ°æÇÏ¿¡¼ ¿ø°Ý °´Ã¼ »çÀÌÀÇ ¸Þ½îµå È£ÃâÀ» ÅëÇÑ ºÐ»ê ÄÄÇ»ÆÃ ±â´ÉÀ» Á¦°øÇÏ´Â RMI ±â¼ú°ú ´ÙÁ¾ÀÇ °ü°èÇü µ¥ÀÌÅͺ£À̽º¿ÍÀÇ ¿¬°áÀ» À§ÇÑ JDBC ±â¼úÀº ºÐ»ê ÀÀ¿ëÇÁ·Î±×·¥ÀÌ ¿ä±¸ÇÏ´Â ´Ù¾çÇÑ ±â´ÉÀ» ¸¸Á· ½ÃŰ±â¿¡ ÃæºÐÇÒ °ÍÀÌ´Ù. µû¶ó¼ Java ºÐ»ê ÄÄÇ»ÆÃ ±â¼úÀº ¾ÕÀ¸·Îµµ ÀÎÅͳÝÀ» ±â¹ÝÀ¸·Î ÇÏ´Â ºÐ»ê ȯ°æÇÏ¿¡¼ ÃÖÀûÀÇ ºÐ»ê ½Ã½ºÅÛ °³¹ß ±â¼ú·Î ÀÚ¸®¸Å±èÇÒ °ÍÀ¸·Î ¿¹ÃøµÈ´Ù
¡¡
¡¡
API Application Program Interface
CGI Common Gateway Interface
CORBA Common Object Request Broker Architecture
DB DataBase
HTML HyperText Markup Language
IDL Interface Definition Language
IIOP Internet Inter-ORB Protocol
JavaIDL Java Interface Definition Language
JDBC Java DataBase Connectivity
JOE Java Object Environment
JVM Java Virtual Machine
ODBC Open DataBase Connectivity
OLTP OnLine Transaction Processing
OMA Object Management Architecture
OMG Object Management Group
ONE Open Network Environment
ORB Object Request Broker
PDA Personal Digital Assistant
RMI Remote Method Invocation
RPC Remote Procedure Call
SQL Structured Query Language
URL Uniform Resource Locator
¡¡
[2] Orfali, R. and Harkey, D., ¡°Client/Server Programming with Java and CORBA¡±, pp. 1~64, pp. 239~286, pp. 409~466, Wiley Computer Publishing, 1997.
[3] Sridharan, P., ¡°Advanced Java Networking¡±, pp. 95~231, Prentice Hall PTR, 1997.
[4] Sun Microsystems, ¡°Java Enterprise Computing¡±, pp. 2~50, Sun Microsystems, 1997.
[5] Vogel, A. and Duddy, K., ¡°Java Programming with CORBA¡±, pp. 1~116, pp. 243~307, Wiley Computer Publishing, 1997.
[6] Wutka, M., ¡°Hacking Java: The Java Professional¡¯s Resource Kit¡±, pp. 281~408, QUE Corporation, 1997.
¡¡
[CORBA] CORBA, http://www.omg.org/news/begin.htm
[EJ] Enterprise Java, http://java.sun.com/marketing/enterprise/index.html
[JIDL] JavaIDL, http://java.sun.com/products/jdk/idl/index.html
[JIDLA] JavaIDL API Document, http://java.sun.com/products/jdk/idl/docs/apidocs/packages.html
[JIDLG] JavaIDL Guide, http://java.sun.com/products/jdk/idl/docs/JavaIDLspecification.html
[JIDLM] JavaIDL Mapping Specification, http://java.sun.com/products/jdk/idl/docs/idl-java.html
[JDBC] JDBC, http://java.sun.com/products/jdbc/index.html
[JOE] JOE, http://www.sun.com/software/neo/joe/index.html
[NEO] NEO, http://www.sun.com/solaris/neo/index.html
[OW] OrbixWeb, http://www-usa.iona.com/Products/Orbix/OrbixWeb/index.html
[RMI] RMI, http://java.sun.com/products/rmi/index.html
[VBJ] VisiBroker for Java, http://www.visigenic.com/prod/vbrok/vbjDS.html
¡¡