±¸±Û°ú ¿À¶óŬ, µÎ °ø·æÀÇ ÀüÀï, ÀÌÀ¯´Â?
  • Àμâ
  • |
  • ¸ñ·Ï
  • |
  • º¹»çÇϱâ
  • ÆäÀ̽ººÏ
  • Æ®À§ÅÍ
  • ¹êµå

2010³â ¿À¶óŬÀÌ ¼±À» Àμö·ÇÕº´ÇÏ¿´°í, ¿À¶óŬÀº ¼±¾ð ±¸¹®¿¡ ÇØ´çÇÏ´Â 7000ÁÙÀ» ±×´ë·Î »ç¿ëÇÑ °Í, ÆÐÅ°ÁöÀÇ ±¸Á¶, ¼ø¼­ ¹× Á¶Á÷À» ±×´ë·Î ÀÌ¿ëÇÑ °ÍÀÌ ÀúÀÛ¿ø ħÇضó¸ç ±¸±ÛÀ» »ó´ë·Î ¼Ò¼ÛÀ» Á¦±âÇÏ¿´´Ù.

ÀÚ¿¬ ´ÙÅ¥¸àÅ͸®¸¦ º¸¾Ò´Ù. ±â¸° µÎ ¸¶¸®°¡ ½Î¿ì´Â Àå¸éÀÌ ³ª¿Ô´Ù. ¿Â¼øÇØ º¸ÀÌ´Â ±â¸°ÀÌÁö¸¸ ÀÚ±â ÀÌÇØ°ü°è°¡ °É¸° ¹®Á¦¿¡¼­´Â ÀÚ½ÅÀÇ ¸ðµç °ÍÀ» °É°í ½Î¿î´Ù. »ç¶÷µµ ±×·¸´Ù. °³ÀÎÀº ¹°·ÐÀÌ°í, ±â¾÷µé »çÀÌ¿¡¼­µµ ¶§·Ð Ä¡¿­ÇÏ°Ô ¸ÂºÙ´Â´Ù. ¿ª¼³ÀûÀÌÁö¸¸ ÀÌ·¯ÇÑ ´ÙÅùÀ» ÅëÇØ ºÒ¸íÈ®Çß´ø °Íµé¿¡ ´ëÇÑ ±âÁØÀÌ »ý±â±âµµ ÇÑ´Ù.

¿À¶óŬ â¾÷ÀÚ ·¡¸® ¿¤¸®½¼/°æÇâ½Å¹® ÀÚ·á»çÁø

¿À¶óŬ â¾÷ÀÚ ·¡¸® ¿¤¸®½¼/°æÇâ½Å¹® ÀÚ·á»çÁø

API ÆÐÅ°Áö¸¦ À¯·á ¶Ç´Â ¹«·á·Î Á¦°ø

±¸±Û°ú ¿À¶óŬ, IT ¾÷°è¿¡¼­ÀÇ °Å´ë °ø·æÀÌ´Ù. °ø·æ µÎ ¸¶¸®°¡ 10³â °¡±îÀÌ Ä¡¿­ÇÏ°Ô ½Î¿ü´Ù. ¹«´ë´Â ¹ý¿øÀ̾ú´Ù. ±× ÀÌÀ¯´Â ¹«¾ùÀϱî?

‘ÀÚ¹Ù’¶ó´Â ÄÄÇ»ÅÍ ÇÁ·Î±×·¡¹Ö ¾ð¾î°¡ ÀÖ´Ù. 1996³â ¹Ì±¹ÀÇ ¼± ¸¶ÀÌÅ©·Î½Ã½ºÅÛÁî(Sun Microsystems, Inc.)°¡ °³¹ßÇß´Ù. ÀÚ¹ÙÀÇ ¸ðÅä´Â ‘write once, run anywhere(ÇÑ ¹ø Äڵ带 ÀÛ¼ºÇÏ¸é ¾î¶² °÷¿¡¼­µµ ÀÛµ¿µÈ´Ù)’¿´´Ù. ±âÁ¸ ÄÄÇ»ÅÍ ÇÁ·Î±×·¥Àº Ç÷§Æû¿¡ µû¶ó ÄÄÆÄÀÏ ¹æ½ÄÀÌ ´Þ¶óÁö±â ¶§¹®¿¡ °¢ ȯ°æ¿¡ ¸Â°Ô ÇÁ·Î±×·¡¹ÖÀ» ÇØ¾ß ÇßÁö¸¸, ÀÚ¹Ù´Â À§ ¸ðÅä´ë·Î Çϵå¿þ¾î Á¶°Ç µî¿¡ ±¸¾Ö ¹ÞÁö ¾Ê°í ÇÑ ¹ø ÇÁ·Î±×·¥À» ¸¸µé¸é ´Ù¾çÇÑ ±â±â¿¡¼­ ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ È£È¯ ÀÛµ¿ÇÒ ¼ö ÀÖ¾ú´Ù. ´öºÐ¿¡ ÀÚ¹Ù´Â ¸Å¿ì ÀαâÀÖ´Â ÇÁ·Î±×·¡¹Ö ¾ð¾î¿Í °³¹ß Ç÷§ÆûÀÌ µÆ´Ù.

‘¼±’Àº ÀÚ¹Ù¸¦ ÀÌ¿ëÇÏ´Â ÇÁ·Î±×·¡¸ÓµéÀÌ ¸ðµç ±â´ÉÀ» óÀ½ºÎÅÍ °³¹ßÇÒ ÇÊ¿ä°¡ ¾øµµ·Ï ƯÁ¤ÇÑ ±â´É¿¡ ´ëÇÏ¿©´Â API(Application Programming Interface)¶ó´Â ¼±ÀÌ ¹Ì¸® ¸¸µé¾î Á¦°øÇÏ´Â ÇÁ·Î±×·¥À» ÀÌ¿ëÇÒ ¼ö ÀÖµµ·Ï ÇÏ¿´´Ù. ‘ÆÐÅ°Áö(package)-Ŭ·¡½º(class)-¸Þ¼Òµå(method)’·Î ±¸¼ºµÈ API°¡ ÀÖÀ¸¸é ÇÁ·Î±×·¥ °³¹ßÀÚ´Â ÇÑ°á ÆíÇÏ°Ô ÀÚ½ÅÀÌ »ý°¢ÇÑ ±â´ÉÀ» ¸¸µé ¼ö ÀÖ´Ù. ÇÁ·Î±×·¥À» Â¥±â À§ÇØ ÀÌ·¯ÇÑ API¸¦ È°¿ëÇÏ´Â °úÁ¤À» µµ¼­°ü¿¡¼­ ¿øÇÏ´Â Á¤º¸¸¦ ã´Â °Í¿¡ ºñÀ¯ÇÏÀÚ¸é API´Â µµ¼­°ü¿¡ ÇØ´çÇÏ°í, °¢ ÆÐÅ°Áö´Â µµ¼­°üÀÇ Ã¥Àå, Ŭ·¡½º´Â Ã¥Àå¿¡ ²ÈÇô Àִ å, ¸Þ¼Òµå´Â ±¸Ã¼Àû ³»¿ëÀÌ ´ã°Ü ÀÖ´Â ‘Àå(how-to-chapter in a book)’¿¡ ÇØ´çÇϹǷÎ, ÀڱⰡ ÇÊ¿äÇÑ ±â´ÉÀÌ ÀÖÀ» ¶§ ÀÌ·¯ÇÑ °úÁ¤À» °ÅÃÄ º¸´Ù ½±°Ô ÇÁ·Î±×·¥À» ¸¸µé ¼ö ÀÖ´Â °ÍÀÌ´Ù. ¿¹¸¦ µé¾î 2°³ÀÇ ¼ö¸¦ ºñ±³ÇØ ´õ Å« ¼ö°¡ ¹«¾ùÀÎÁö¸¦ ã¾Æ³»´Â °ÍÀ» ÇÁ·Î±×·¡¸Ó°¡ Á÷Á¢ ¸¸µé ÇÊ¿ä ¾øÀÌ ‘java.lang.Math.max’¶ó´Â API¸¦ »ç¿ëÇÏ¸é µÇ´Â °ÍÀÌ´Ù. óÀ½ ¼±ÀÌ ÀÚ¹Ù¸¦ ³»³õ¾ÒÀ» ¶§´Â 8°³ÀÇ ÆÐÅ°Áö·Î API°¡ ±¸¼ºµÇ¾î ÀÖ¾úÀ¸³ª, 2008³â¿¡´Â ÆÐÅ°Áö°¡ 166°³·Î ´Ã¾ú´Ù.

¼±Àº ÀÚ¹Ù API ÆÐÅ°Áö¸¦ ¼¼ °¡Áö ¶óÀ̼±½º·Î ±¸ºÐÇÏ¿© À¯·á ¶Ç´Â ¹«·á·Î Á¦°øÇÏ¿© ¿Ô´Ù. ù ¹ø°´Â GPLÀ̾ú´Ù. GPLÀº ¿ÀǼҽº ¶óÀ̼±½ºÀε¥, GPL·Î ¹èÆ÷µÈ ¼ÒÇÁÆ®¿þ¾î¸¦ ÀÚ½ÅÀÌ ÀÚü °³¹ßÇÑ ¼Ò½ºÄÚµå¿Í °áÇÕÇÏ¿© »ç¿ëÇÒ °æ¿ì ÀÚ½ÅÀÌ ÀÚü °³¹ßÇÑ ¼Ò½ºÄڵ嵵 ¸ðµÎ °ø°³ÇÑ´Ù´Â Á¶°ÇÀ¸·Î ¹«·á·Î ÀÌ¿ëÇÏ´Â °ÍÀÌ´Ù. ´ÙÀ½À¸·Î ‘specification license’¶ó´Â °ÍÀ̾ú´Ù. ÀÚ¹Ù API ÆÐÅ°ÁöÀÇ ¼±¾ð ÄÚµå¿Í ±¸Á¶¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖÁö¸¸ ƯÁ¤ ±â´É¿¡ ´ëÇÑ ±¸Çö ÄÚµå(implementing code)´Â Á÷Á¢ ÀÛ¼ºÇØ¾ß ÇÏ´Â ¶óÀ̼±½ºÀÌ´Ù. ¸¶Áö¸·À¸·Î »ó¾÷¿ë ¶óÀ̼±½º°¡ Àִµ¥, À̸¦ ÀÌ¿ëÇϸé ÀÚ½ÅÀÌ ¼öÁ¤ÇÑ ºÎºÐÀÇ ¼Ò½ºÄڵ带 °ø°³ÇÒ ÇÊ¿ä°¡ ¾ø¾ú´Ù.

±¸±ÛÀº ¼±°ú ¶óÀ̼±½º Çù»óÀ» Çϸ鼭 ¾Èµå·ÎÀ̵å ÇÁ·Î±×·¥ÀÌ ÀÚ¹ÙÀÇ °¡»ó ¸Ó½Å ¹× ´Ù¸¥ ÇÁ·Î±×·¥°ú ȣȯµÇ¾î¾ß ÇÑ´Ù´Â ¼±ÀÇ ¿äûÀ» °ÅÀýÇÏ¿´°í, ÀÌ¿¡ ¼±Àº ‘ÀÏ´Ü ÇÑ ¹ø ÀÛ¼ºµÈ ÇÁ·Î±×·¥Àº ¸ðµç ȯ°æ¿¡¼­ ÀÛµ¿ÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù’´Â ÀÚ¹ÙÀÇ Ã¶Çп¡ ¸ÂÁö ¾Ê´Â´Ù¸ç ±¸±Û¿¡ ÀÚ¹Ù ¶óÀ̼±½º¸¦ ºÎ¿©ÇÏÁö ¾Ê¾Ò´Ù.

Çù»óÀÌ °á·ÄµÇÀÚ ±¸±ÛÀº ÀÚ¹ÙÀÇ °¡»ó¸Ó½Å°ú´Â ´Ù¸¥ ÀÚü °¡»ó¸Ó½Å(dalvik)À» °³¹ßÇÏ°í, ÀÚ¹Ù°¡ Á¦°øÇÏ´Â APIÀÇ ±â´ÉÀ» µ¶ÀÚÀûÀ¸·Î °³¹ßÇÏ¿´´Ù. ´Ù¸¸ 37°³ÀÇ ÆÐÅ°Áö¿¡¼­ 7000ÁÙ¿¡ À̸£´Â ¼±¾ð ÄÚµå(Ŭ·¡½º³ª ¸Þ¼ÒµåÀÇ À̸§)¸¦ ±×´ë·Î º¹Á¦ÇÏ¿´°í(ÀÌ´Â Àüü ÄÚµåÀÇ 3%¿¡ ÇØ´çÇÑ´Ù), ÇØ´ç ÆÐÅ°ÁöÀÇ ±¸Á¶, ¼ø¼­ ¹× Á¶Á÷(structure, sequence and organization)À» ±×´ë·Î º¹Á¦ÇÏ¿´´Ù.

±×·±µ¥ 2010³â ¿À¶óŬÀÌ ¼±À» Àμö·ÇÕº´ÇÏ¿´°í, ¿À¶óŬÀº ¼±¾ð ±¸¹®¿¡ ÇØ´çÇÏ´Â 7000ÁÙÀ» ±×´ë·Î »ç¿ëÇÑ °Í, ÆÐÅ°ÁöÀÇ ±¸Á¶, ¼ø¼­ ¹× Á¶Á÷À» ±×´ë·Î ÀÌ¿ëÇÑ °ÍÀÌ ÀúÀÛ¿ø ħÇضó¸ç ¼Ò¼ÛÀ» Á¦±âÇÏ¿´´Ù. Áï ÀÚ¹Ù¿¡¼­´Â ‘java.package.class.method()’ÀÇ Çü½ÄÀ» ÁöÄÑ¾ß Çϴµ¥ ÀÌ·¯ÇÑ ¸í·É Çü½ÄÀ» ±×´ë·Î µû¸¥ °ÍÀÌ ÀúÀÛ±Ç Ä§Çضó´Â °ÍÀÌ´Ù.

±¸Á¶, ¼ø¼­ µî¿¡ ´ëÇÑ ÀúÀÛ±Ç ÀÎÁ¤ ³í¶õ

ÀÌ ¼Ò¼ÛÀº °ú¿¬ ÄÄÇ»ÅÍ ÇÁ·Î±×·¥¿¡¼­ ±¸Á¶, ¼ø¼­ ¹× Á¶Á÷¿¡ ´ëÇÏ¿© ÀúÀÛ¹°¼ºÀ» ÀÎÁ¤ÇÏ´Â °ÍÀÌ Å¸´çÇÑÁö¿¡ ´ëÇÏ¿© ¸¹Àº ³íÀïÀ» ³º¾Ò´Ù. 1½É°ú 2½ÉÀÇ °á·ÐÀÌ ´Þ¶ú°í, ´ë¹ý¿ø±îÁö °¬´Ù°¡ ¶Ç ´Ù¸¥ ÀïÁ¡¿¡ ´ëÇÏ¿© ÆÇ´ÜÀ» ¹Þ´À¶ó°í ¿ÃÇØ 3¿ù¿¡¼­¾ß °á·ÐÀÌ ³µ´Ù.

¸ÕÀú 1½É¿¡¼± 7000ÁÙ¿¡ À̸£´Â ¼±¾ð ±¸¹®µéÀÌ ÂªÀº ¸í·É¾î·Î ±¸¼ºµÇ¾î ÀÖ°í, ƯÁ¤ÇÑ ±â´ÉÀ» ¼öÇàÇÏ´Â ¼±¾ð ±¸¹®À» ´Þ¸® Ç¥ÇöÇϱ⵵ ¾î·Æ´Ù¸ç, ÀÌ¿¡ ´ëÇÏ¿© ÀúÀÛ±ÇÀÇ º¸È£¸¦ ¹ÞÀ» ¼ö ¾ø´Ù°í ÇÏ¿´´Ù. ÀÌ´Â ÀúÀ۱ǹý¿¡¼­ ÀÎÁ¤µÇ´Â ‘ÇÕüÀÇ ¿øÄ¢(Merger Doctrine)’¿¡ µû¸¥ °ÍÀÌ´Ù. ÀúÀ۱ǹýÀÇ ±âº» À̳äÀº °°Àº ¾ÆÀ̵ð¾î¶óµµ ´Ù¸£°Ô Ç¥ÇöÇϵµ·Ï ÇÏ¿© ¹®È­¸¦ À¶¼ºÇÏ°Ô ÇÑ´Ù´Â °ÍÀÌ´Ù. µû¶ó¼­ ¾î¶°ÇÑ ¾ÆÀ̵ð¾îÀÇ Ç¥Çö¹æ¹ýÀÌ À¯ÀÏÇϰųª ¸Å¿ì Á¦ÇÑµÈ °æ¿ì¿¡´Â ÀúÀÛ±ÇÀÇ º¸È£´ë»ó¿¡¼­ Á¦¿ÜÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é ÀúÀÛ±ÇÀÇ º¸È£´ë»ó¿¡¼­ Á¦¿ÜÇÑ ¾ÆÀ̵ð¾î¸¦ º¸È£ÇÏ´Â °á°ú¸¦ ³º±â ¶§¹®ÀÌ´Ù.

ÀÌ »ç°ÇÀÇ 1½É¹ý¿øÀº ‘java.lang.Math.max’¶ó´Â ÀÚ¹ÙÀÇ Ç¥Çö¿¡¼­ Ŭ·¡½º À̸§À» ‘math, max, lang’À̶ó°í ÇÑ °ÍÀÌ ´©°¡ ÇÏ´õ¶óµµ °°°Å³ª ºñ½ÁÇÒ ¼ö¹Û¿¡ ¾ø´Â Ç¥ÇöÀ̶ó°í º¸¾Ò´Ù. ¶ÇÇÑ ±¸Á¶, ¼ø¼­ ¹× Á¶Á÷, Áï ÀÚ¹ÙÀÇ ¸Þ¼Òµå ºÐ·ùü°è´Â ½Ã½ºÅÛÀÇ ÀÛµ¿¹æ¹ýÀ¸·Î ¾ÆÀ̵ð¾î¿¡ ÇØ´çÇÏ¿© ÀúÀ۱ǹýÀÇ º¸È£´ë»óÀÌ ¾Æ´Ï°í, ¾Èµå·ÎÀ̵å Ãâ½Ã Àü ÀÌ¹Ì ¼ö¸¹Àº ÀÚ¹Ù ÀÀ¿ë ÇÁ·Î±×·¥µéÀÌ ÀÖ¾ú±â ¶§¹®¿¡ À̵é°ú ȣȯµÇ°Ô ÇÏ·Á¸é ÀÌ¿Í °°Àº º¹Á¦´Â ºÒ°¡ÇÇÇÏ¿´´Ù¸ç ÀúÀÛ¹°¼º ÀÚü¸¦ ºÎÁ¤ÇÏ¿´´Ù.

±×·¯³ª 2½ÉÀÇ ÆÇ´ÜÀº ´Þ¶ú´Ù. ¿À¶óŬÀº 2½É¿¡¼­ ¼±ÀÌ ÀÚ¹Ù¸¦ óÀ½ ¸¸µé¾úÀ» ¶§·Î µ¹¾Æ°¡ º¼ ¶§ À§ÀÇ Äڵ带 ‘Math.maximum’ ¶Ç´Â ‘Arith.larger’·Î ÇÒ ¼öµµ ÀÖ¾ú´Ù°í ÁÖÀåÇß°í, ¹ý¿øÀº ÀÌ ÁÖÀåÀ» ¹Þ¾Æµé¿´´Ù. Áï ±¸±ÛÀÌ º¹Á¦ÇÏ´Â ½ÃÁ¡¿¡¼­ º¸¸é ´Ù¸¥ ¼±ÅÃÁö°¡ ¾ø¾úÀ» ¼ö ÀÖÁö¸¸ ¼±ÀÌ Ã³À½ ¸¸µé¾ú´ø ½ÃÁ¡¿¡¼­ º¸¸é ´Ù¸¥ ¼±ÅÃÁö°¡ ¾ó¸¶µçÁö ÀÖ¾úÀ¸¹Ç·Î ´©°¡ ÇÏ´õ¶óµµ °°°Å³ª ºñ½ÁÇÒ ¼ö¹Û¿¡ ¾ø´Â Ç¥ÇöÀº ¾Æ´Ï¶ó´Â °ÍÀÌ´Ù.

¶Ç 2½É¹ý¿øÀº 1½É°ú °°ÀÌ ¸í·É±¸Á¶, µ¿À۽ýºÅÛ µîÀÌ ÀúÀÛ±ÇÀÇ º¸È£¸¦ ¹ÞÁö ¸øÇÑ´Ù¸é ÄÄÇ»ÅÍ ÇÁ·Î±×·¥Àº °á±¹ ÀúÀÛ±ÇÀÇ º¸È£¸¦ ¹ÞÀ» ¼ö ¾ø°Ô µÈ´Ù¸ç, ±¸Á¶, ¼ø¼­ ¹× Á¶Á÷µµ ÀúÀÛ±ÇÀÇ º¸È£´ë»óÀ̶ó°í ÇÏ¿´´Ù. ȣȯÀ» À§ÇØ ºÒ°¡ÇÇÇß´Ù´Â °ÍÀº °øÁ¤ÀÌ¿ë¿¡¼­ ÆÇ´ÜÇÏ¸é µÉ ÀÏÀÌÁö ÀúÀÛ±ÇÀÇ º¸È£´ë»óÀÎÁö¸¦ ÆÇ´ÜÇÒ ¶§ °í·ÁÇÒ ¿ä¼Ò´Â ¾Æ´Ï¶ó°í ÇÏ¿´´Ù. ÀÌó·³ ¹ý·üÀÇ º¸È£´ë»óÀÌ ¸Â´ÂÁö¿¡ ´ëÇÑ ³íÀïÀÌ Ä¡¿­Çߴµ¥, 2015³â 6¿ù²² ¹Ì±¹ ´ë¹ý¿øÀÌ ÀúÀÛ±ÇÀÇ º¸È£´ë»óÀÌ ¸Â´ÂÁö¿¡ ´ëÇÏ¿© ½É¸®ÇÏÁö ¾Ê°Ú´Ù°í °áÁ¤À» Çϸ鼭 ÀϴܶôÀÌ µÇ¾ú´Ù. ÀÌÁ¦ °øÀº °ú¿¬ ÀÌ·¯ÇÑ ÀÌ¿ëÀ» °øÁ¤ÀÌ¿ëÀ̶ó°í º¼ ¼ö ÀÖ´ÂÁö µûÁö´Â 2¶ó¿îµå·Î ³Ñ¾î°¬°í, ÃÖ±Ù °á·ÐÀÌ ³ª¿Ô´Ù. °á°ú´Â? °øÁ¤ÀÌ¿ëÀÌ ¾Æ´Ï¶ó´Â °ÍÀÌ´Ù.

<À¯Àç±Ô ¹ý¹«¹ýÀÎ(À¯ÇÑ) ÅÂÆò¾ç º¯È£»ç>

[¹ý·ü ÇÁ¸®Áò]¹Ù·Î°¡±â

À̹ÌÁö