´å³Ý ȯ°æÀ̶õ ¾î¶°ÇÑ ¿î¿µÃ¼Á¦¿¡¼µµ ´å³Ý Ç÷§Æû¸¸ ¼³Ä¡µÇ¾î ÀÖ´Ù¸é Ç÷§Æû µ¶¸³ÀûÀ¸·Î ÇÁ·Î±×·¥µéÀ» ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÚ¹ÙÀÇ Ç÷§Æû µ¶¸³¼ºÀº ´å³ÝÀÇ Ç÷§Æû µ¶¸³¼º°ú ÀÏÄ¡ÇÕ´Ï´Ù. ÇöÀç ÀÚ¹Ù´Â UNIX, Window, MacµîÀÇ Ç÷§Æû¿¡¼ µ¿ÀÛÇÏÁö¸¸ ´å³Ý Ç÷§ÆûÀº ¾ÆÁ÷ À©µµ¿ì ȯ°æ¹Û¿¡´Â Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. °¡±î¿î ¹Ì·¡¿¡´Â Ç÷§ÆûÀÇ µ¶¸³¼ºÀ» Áö¿øÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.
Common Type System¿Í Common Language Specification
´å³Ý¿¡¼ Áö¿øÇÏ´Â ¾ð¾î´Â ¿©·¯ Á¾·ù°¡ ÀÖ½À´Ï´Ù. ¿¹·Î ÀÚ¹Ù°¡»ó¸Ó½Å¿¡¼ µ¿ÀÛÇÏ´Â ÇÁ·Î±×·¥Àº ÀÚ¹Ù·Î ÀÏÃà µË´Ï´Ù. ÇÏÁö¸¸ ´å³ÝÀº C# À̿ܿ¡ ´Ù¾çÇÑ ¾ð¾î¸¦ Áö¿øÇϰí ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ ¾ð¾îÀÇ »óÈ£ À¶Å뼺À» ¹ßÈÖÇÏ°Ô ÇØ ÁÖ´Â °ÍÀÌ ¹Ù·Î CTS(Common Type System)¿Í CLS(Common Language Specification)ÀÔ´Ï´Ù.
|
¢Ã ´å³Ý¿¡¼ ¾ð¾îÀÇ È£È¯¼ºÀ» À§ÇÑ µµ±¸ |
|
q CTS(Common Type System) n .Netȯ°æ¿¡¼ µ¥ÀÌÅÍÀÇ ÇüÀ» °ü¸®ÇÏ´Â ½Ã½ºÅÛ q CLS(Common Lanaguae Specification) n CTS¿¡¼ Áö¿øÇÏ´Â ¾ð¾îÀÇ ÀϹÝÀûÀÎ ±Ô¾àÀ» Á¤ÀÇ |
CTS´Â ¼·Î ´Ù¸¥ ¾ð¾î·Î ÀÛ¼ºµÇ¾ú´Ù ÇÏ´õ¶óµµ .Net¿¡¼ ÀÌÇØÇÒ ¼ö ÀÖ´Â µ¥ÀÌÅÍ Çü½ÄÀÎÁö ¾Æ´ÑÁö¸¦ Å×½ºÆ®ÇÏ°í °ËÁõ °ü¸®ÇÏ´Â ¿ªÇÒÀ» ´ã´çÇÕ´Ï´Ù. .Net ³»¿¡¼ µ¿ÀÛÇÒ ¼ö ÀÖ´Â µ¥ÀÌÅÍ Çü¿¡ ´ëÇÑ °ü¸®¸¦ ÇØÁÖ´Â °ÍÀÌ ¹Ù·Î CTS(Common Type System)ÀÔ´Ï´Ù. ±×¸®°í CLS(Common Language Specification)´Â .NetÀ» À§ÇÑ ¸ðµç ÄÄÆÄÀÏ·¯°¡ Áö¿øÇØ¾ß ÇÏ´Â ÃÖ¼ÒÇÑÀÇ Ç¥ÁØ ±Ô¾àÀÔ´Ï´Ù.Áï, CLS´Â .NetÀÇ CTS¿Í ILÀ» Áö¿øÇϱâ À§ÇÑ ÃÖ¼ÒÇÑÀÇ ±Ô¾àÀ» ¸»ÇÏ´Â °ÍÀÔ´Ï´Ù. Àû¾îµµ .Net¿¡¼ µ¿ÀÛÇϱâ À§Çؼ´Â ¹Ýµå½Ã ÁöÄÑ¾ß ÇÏ´Â ¾ð¾î ½ºÆåÀÎ °ÍÀÔ´Ï´Ù.
°á·ÐÀûÀ¸·Î CTS¸¦ À§ÇÑ ¾ð¾îÀûÀÎ ±ÔÄ¢À» CLS¿¡¼ ¸í½ÃÇϰí ÀÖ´Ù°í »ý°¢ÇÏ½Ã¸é µË´Ï´Ù. ¸¸¾à ¿©·¯ºÐÀÌ Visual C++¿¡¼ ¸¸µç ÇÁ·Î±×·¥À» C#¿¡¼ ÀÌ¿ëÇϰíÀÚ Çϰųª Visual Basic¿¡¼ ¸¸µç ÇÁ·Î±×·¥À» C#¿¡¼ ÀÌ¿ëÇϰíÀÚ ÇÑ´Ù¸é Visual C++´Â Managed C++ ÇÁ·Î±×·¥ Çü½ÄÀ¸·Î µÇ¾î ÀÖ¾î¾ß Çϸç CLSÀÇ ±ÔÄ¢À» µû¶ó¾ß¸¸ÀÌ C#¿¡¼ ÀÌ¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¹°·Ð, VB.Net ¶ÇÇÑ CLSÀÇ ±ÔÄ¢À» µû¶ó¾ß ÇÏ´Â °ÍÀº ¸¶Âù°¡Áö ÀÔ´Ï´Ù.
±â°è¾î¿Í Áß°£¾ð¾î(Intermediate Lanaguage)
¾ð¾îÀÇ »óÈ£À¶Å뼺À» °¡´ÉÇÏ°Ô ÇØÁÖ´Â °·ÂÇÑ ¿ä¼Ò°¡ Áß°£¾ð¾î(IL) ÇüÅ·ΠÄÄÆÄÀÏÀÌ µÈ´Ù´Â °ÍÀÔ´Ï´Ù. .NetÀ» Á÷Á¢ Áö¿øÇÏ´Â ÄÚµå(Managed Code)´Â ¹Ýµå½Ã Áß°£¾ð¾î ÇüÅ·ΠÄÄÆÄÀÏ µË´Ï´Ù.
°í·¡Àû ±â°è¾î¸¦ »ý°¢ÇØ º¸ÁÒ. ±â°è¾î´Â ¿ÏÀüÇÑ 2Áø ÄÚµå·Î ÀÌ·ç¾îÁ® ÀÖ½À´Ï´Ù. Àΰ£ÀÌ ±â°è¸í·ÉÀ» 2Áø ÄÚµå·Î Á÷Á¢ ³»¸®´Â °ÍÀº °ÅÀÇ ºÒ°¡´ÉÇÕ´Ï´Ù. ¹°·Ð, 2ÁøÄÚµå ¸í·ÉÀ» Á÷Á¢ ã¾Æ¼ ³»¸°´Ù¸é ¾î¿ ¼ö ¾ø°ÚÁÒ. ÀÌ·¯ÇÑ ¹®Á¦ÀÇ ÇØ°áÀ» À§Çؼ Áß°£´Ü°è·Î 2Áø ÄÚµå ¸í·É¿¡ »ç¶÷ÀÌ ¾Ë±â ½¬¿î À̸§À» ºÙÀÌ´Â °ÍÀÔ´Ï´Ù. ÀÌ·¯ÇÑ ¹æ½ÄÀ¸·Î 2Áø ÄÚµå ¸í·É¿¡ ÀνÄÇÒ ¼ö ÀÖ´Â À̸§À» ºÙÀÎ ¾ð¾î°¡ ¾î¼Àºí¸®(Assembly) ¾ð¾îÀÔ´Ï´Ù. ¹°·Ð, ÀÌ Assembly´Â ±â°è¾î¿Í °ÅÀÇ 1:1 ¸ÅĪ µÉ Á¤µµ·Î ±â°è¾î¿¡ °¡±î¿î ¾ð¾î¿´½À´Ï´Ù.
|
¢Ñ Assembly |
À̰÷¿¡¼ ³íÇÏ´Â Assembly´Â ¾ð¾îÀÇ ÀÏÁ¾À¸·Î µÚ¿¡¼ ¼³¸íÇÒ C#ÀÇ Assembly¿Í´Â ÀüÇô ´Ù¸¥ °³³äÀÌ´Ù. Ãʱâ C¾ð¾î ÀÌÀüÀÇ ±â°è¾î¿¡ °¡±î¿î ¾ð¾î¸¦ Assembly ¾ð¾î¶ó°í ÇÏ¿´À¸¸ç C#¿¡¼´Â ÄÄÆÄÀÏÇÑ ÈÄ ¿©·¯ ÆÄÀÏÀ» ¹¾î¼ ¶óÀ̺귯¸® ÇüÅ·Π¹¾î µÐ ÇüŸ¦ Assembly¶ó°í ÇÑ´Ù. |
¼¼¿ùÀº Èê·¯ ¾ð¾î°¡ ´õ¿í ¹ßÀüÀ» ÇÏ°í °í±ÞÀ¸·Î °¡¸é¼ ÀÌ °úÁ¤Àº Á¡Á¡ Àΰ£ÀÌ ÀÌÇØÇϱ⠽¬¿î ¹üÁÖ·Î ¹Ù²î¾ú½À´Ï´Ù. ÇÏÁö¸¸ ÀÌ·¯ÇÑ ¾ð¾î´Â ¹Ýµå½Ã ±â°è¾î·Î ¹Ù²î¾î¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. Áï, ±â°è°¡ ÀÌÇØÇÒ ¼ö ÀÖ´Â ¾ð¾î·Î ¹Ù²Ù¾î¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î ´ëºÎºÐÀÇ A¶ó´Â ¾ð¾î´Â A¾ð¾îÀÇ ÇØ¼®±â°¡ ±â°è¾î·Î ¹Ù²Ü ¼ö ÀÖ¾ú½À´Ï´Ù. ÇÏÁö¸¸ ¾ð¾î¿¡ µû¶ó ±â°è¾î·Î º¯È¯ÇÏ´Â ¹æ¹ýÀº ÀüºÎ ´Ù¸¥ ¾ð¾î ÀÇÁ¸ÀûÀÎ ÇüÅÂÀÔ´Ï´Ù.
|
¢Ã Áß°£¾ð¾î(Intermediate Language) |
|
q JavaÀÇ ¹ÙÀÌÆ®ÄÚµå(Byte Code) n ÀÚ¹ÙÀÇ Áß°£ÀûÀÎ °³³äÀÇ ¾ð¾î ÇüŸ¦ ¹ÙÀÌÆ®ÄÚµå¶ó°í ÇÔ q C#ÀÇ Áß°£¾ð¾î(IL) n C#ÀÇ Áß°£ÀûÀÎ °³³äÀÇ ¾ð¾î ÇüŸ¦ ILÀ̶ó°í ÇÔ q ¹ÙÀÌÆ®ÄÚµå, Áß°£¾ð¾î(IL) n ÀÚ¹ÙÀÇ ¹ÙÀÌÆ®ÄÚµå¿Í .NetÀÇ Áß°£¾ð¾î °³³äÀº ¶È °°Àº °³³äÀÌ´Ù. q Â÷ÀÌÁ¡ n ¹ÙÀÌÆ®ÄÚµå´Â ÀÚ¹Ù¸¸À» À§ÇÑ ÄÚµåÀÌÁö¸¸ Áß°£¾ð¾î(IL)Àº VB.Net, C#, Managed C++, JScript.Net µî ´Ù¾çÇÑ ¾ð¾î¸¦ Áß°£ ÄÚµå ÇüÅ·Π¸¸µç´Ù. |
ÀÌ·¯ÇÑ ´Ü°è¿¡¼ .NetÀº °á·ÐÀ» ³»¸³´Ï´Ù. ¸ðµç ¾ð¾î´Â Áß°£¾ð¾î(IL)·Î ¸¸µé¸é µÈ´Ù´Â °ÍÀÔ´Ï´Ù. Áï, ¾ð¾î¿Í ±â°è¾î »çÀÌ¿¡ ÇÑ ´Ü°è¸¦ ´õ µÎ´Â °ÍÀÔ´Ï´Ù. C#°ú VB.Net »ç¿ëÀÚµéÀº ÄÄÆÄÀÏÀ» ÇØ¼ ±â°è¾î·Î ¹Ù²î´Â °ÍÀÌ ¾Æ´Ï¶ó ±â°è°¡ ÀÌÇØÇϱ⠽±µµ·Ï ¸¸µç Áß°£¾ð¾î ÇüÅ·Π¸¸µç´Ù´Â °ÍÀÔ´Ï´Ù. ÀÌ·¯ÇÑ Áß°£¾ð¾î ÇüÅÂÀÇ Ç¥ÁØÀ» CTS¿Í CLS°¡ Ã¥ÀÓÁö´Â °ÍÀÔ´Ï´Ù. ÀÌ·¸°Ô µÇ¸é ¾ð¾î »çÀÌÀÇ È£È¯¼º ¹®Á¦ »Ó¸¸ ¾Æ´Ï¶ó Ç÷§Æû¿¡ µ¶¸³ÀûÀÎ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾Æ¸¶ À̰ÍÀÌ ¹ü¿ëÀûÀ¸·Î ¸ðµç ¾ð¾î¿¡ Àû¿ëµÈ´Ù¸é MS´Â ¶Ç´Ù½Ã ÇÁ·Î±×·¥ ¼¼°èÀÇ Á¦¿ÕÀÌ µÉ °ÍÀÔ´Ï´Ù.
±×·¸´Ù¸é ¿ÏÀüÇÑ ±â°è¾î´Â ´©°¡ ¸¸µé±î¿ä. À̰ÍÀº .NetÀÌ ¾Ë¾Æ¼ ÇØÁÝ´Ï´Ù. .Net¿¡¼ Áß°£¾ð¾î°¡ ·Îµå µÇ¾úÀ» ¶§ ¼ø°£ÀûÀ¸·Î ÄÄÆÄÀÏÀ» ÇØÁÖ´Â JIT(Just-In-Time) ÄÄÆÄÀÏ·¯°¡ ¾Ë¾Æ¼ ÇØ ÁÝ´Ï´Ù.
.Net°ú Java
.NetÀº CLS, CTS, IL, JIT ÄÄÆÄÀÏ·¯ÀÇ Àý¹¦ÇÑ Á¶È·Î ÀÌ·ç¾îÁ® ÀÖ½À´Ï´Ù. .NetÀº ¿©·¯ ¾ð¾î¸¦ ÇѲ¨¹ø¿¡ Áö¿øÇϸç À̰ÍÀº ´å³ÝÀÇ °³³äµéÀÌ À̸¦ µÞ¹Þħ ÇØÁֱ⠶§¹®¿¡ °¡´ÉÇÑ °ÍÀÔ´Ï´Ù. ´ëºÎºÐÀÇ ´å³ÝÀÇ ¿ë¾î¿¡ CommonÀ̶ó´Â ¿ë¾î°¡ ¸»ÇØ ÁÖµíÀÌ °øÅëµÈ ¾ð¾î½ºÆå(CLS), °øÅëµÈ ŸÀԽýºÅÛ(CTS)À̶ó°í ÇÏ´Â °Íµµ ´å³ÝÀÇ ´Ù¾çÇÑ ¾ð¾îÀÇ ¼ö¿ë ¶§¹®¿¡ ±×·± °ÍÀÔ´Ï´Ù.
ȤÀÚ´Â ÀÌ·¯ÇÑ ¸»À» ÇÒ °ÍÀÔ´Ï´Ù. ÀÚ¹Ù´Â ÀÎÅÍÇÁ¸®ÅÍ ¾ð¾îÀ̱⠶§¹®¿¡ ¹ÙÀÌÆ® Äڵ带 ÄÄÆÄÀÏÀ» ÇÏÁö ¾Ê°í ¹Ù·Î ÇØ¼®Çϱ⠶§¹®¿¡ ºü¸£´Ù. ÇÏÁö¸¸ .NetÀº Áß°£¾ð¾î¸¦ JIT¸¦ ÀÌ¿ëÇÏ¿© ÄÄÆÄÀÏÀ» ´Ù½Ã ÇÏÁö ¾Ê´À³Ä. ±×·¯¸é ¾öû ´À¸± °ÍÀÌ´Ù. ÀÌ