ÀÚ¹Ù(Java)´Â °³¹ßÀڵ鿡°Ô ÀαⰡ ³ô°í, ǰÁúÀÌ ÀÔÁõµÈ ¾ð¾î´Ù. ¿£ÅÍÇÁ¶óÀÌÁî °³¹ßÀÚ, À¥ °³¹ßÀÚ, ¸ð¹ÙÀÏ °³¹ßÀÚ, ±âŸ ¸¹Àº »ç¶÷µéÀÌ µµÃ³¿¡ ÀÚ¹Ù°¡ ¾²À̵µ·Ï ¸¸µé¾ú°í, À̸¦ Áö¿øÇÏ´Â °Å´ëÇÑ ¹®È¸¦ Á¶¼ºÇϴµ¥ ±â¿©Çß´Ù.
´õ ³ª¾Æ°¡, ÀÚ¹Ù ·±Å¸ÀÓÀÎ ÀÚ¹Ù °¡»ó ¸Ó½Å(Java Virtual Machine, JVM)Àº ±× ÀÚü°¡ ¼ÒÇÁÆ®¿þ¾î »ýŰ谡 µÇ¾ú´Ù. ÀÚ¹Ù ¿Ü¿¡µµ, ¼ö¸¹Àº ¾ð¾î°¡ °·ÂÇÏ°í °ªÁø ¼ÒÇÁÆ®¿þ¾î °³¹ß µµ±¸¸¦ ¸¸µé·Á JVMÀ» Ȱ¿ëÇß´Ù.
JVMÀ» ·±Å¸ÀÓÀ¸·Î »ç¿ëÇÒ °æ¿ì ¸î °¡Áö ÀÌÁ¡°ú ÇýÅÃÀ» ´©¸± ¼ö ÀÖ´Ù. JVMÀº ¼ö½Ê ³â¿¡ °ÉÃÄ °³¼±ÀÌ µÇ¾ú´Ù. Àß »ç¿ëÇÏ¸é ³ôÀº ¼º´ÉÀ» ¹ßÈÖÇÑ´Ù. JVM¿¡ ¿©·¯ ´Ù¾çÇÑ ¾ð¾î·Î ±¸ÇöÇÑ ¾ÖÇø®ÄÉÀ̼ǵéÀº ¼·Î ¶óÀ̺귯¸®¸¦ °øÀ¯ÇÒ ¼ö ÀÖ°í, µ¿ÀÏÇÑ µ¥ÀÌÅÍ ±¸Á¶¿¡¼ ÀÛµ¿ÇÑ´Ù. ÇÁ·Î±×·¡¸ÓµéÀº ¶ÇÇÑ ¿©·¯ ¾ð¾îÀÇ Æ¯Â¡À» À¯¸®ÇÏ°Ô È°¿ëÇÒ ¼ö ÀÖ´Ù.
À̹ø ±â»ç¿¡¼´Â JVMÀ» À§ÇØ °³¹ßµÈ °¡Àå Áß¿äÇÑ ÇÁ·Î±×·¡¹Ö ¾ð¾î ¸î Á¾À» ¼Ò°³ÇÑ´Ù. ÄÚÆ²¸°(Kotlin)°ú ½ºÄ®¶ó(Scala), ÀÚÀ̽ã(Jython), Á¦ÀÌ·çºñ(JRuby) µîÀÇ ¾ð¾îµéÀº ÀÚ¹Ù¸¦ º¸¿ÏÇÒ ¼ö ÀÖ´Â ´õ ´Ü¼øÇϰí À¯¿¬ÇÑ ¹æ¹ý, ÀÚ¹Ù¸¦ ´ëüÇÒ ¼ö ÀÖ´Â °·ÂÇÑ ´ëüÀ縦 Á¦°øÇÑ´Ù.
ÄÚÆ²¸°Á¦Æ®ºê·¹ÀÎ(JetBrain)ÀÌ 2010³â °³¹ßÇϰí, 2012³â ¿ÀǼҽº·Î °ø°³ÇÑ ÄÚÆ²¸°Àº ÀÚ¹Ùº¸´Ù °£°áÇÏ°í ¾ÈÀüÇÑ ¾ð¾î´Ù. ´õ ´Ü¼øÇÑ ÀÚ¹Ù¶ó°í »ý°¢ÇÏ¸é µÈ´Ù. ÀÚ¹Ùº¸´Ù ¹®¹ýÀÌ ´ú ÀåȲÇÏ´Ù. ÀÚ¹Ù Äڵ庸´Ù ´õ ºü¸£°Ô ÄÄÆÄÀÏÇÒ ¼ö ÀÖ´Â °æ¿ì°¡ ¸¹´Ù.
ÄÚÆ²¸°Àº ÀÚ¹Ù¿¡¼ »ç¿ëÇÒ ¼ö ¾ø´Â ÇÔ¼ö ÇÁ·Î±×·¡¹Ö ½ºÅ³À» Áö¿øÇϰí, ´õ ¾ÈÀüÇÏ°í ¼¼·ÃµÇ°Ô Null °ªÀ» ó¸®ÇÒ ¼ö ÀÖ´Ù. ÀÌ Ç÷§ÆûÀÇ ¾Û °³¹ß¿¡ ÀÚ¹Ù ´ë½Å ÄÚÆ²¸°À» ¼±ÅÃÇØ »ç¿ëÇÏ´Â ¾Èµå·ÎÀÌµå °³¹ßÀÚ°¡ Áõ°¡Çϰí ÀÖ´Â Ãß¼¼´Ù.
ÄÚÆ²¸°ÀÌ ÀÚ¹Ù¸¦ ³Ñ¾î¼°Ô ¸¸µé °èȹµµ ÃßÁøµÇ°í ÀÖ´Ù. LLVM ÇÁ·¹ÀÓ¿öÅ©¸¦ ÅëÇØ ÄÚÆ²¸°À» ¸Ó½Å ³×ÀÌÆ¼ºê ÄÚµå·Î ÄÄÆÄÀÏÇÏ´Â ÇÁ·ÎÁ§Æ®¸¦ ¿¹·Î µé ¼ö ÀÖ´Ù. ÄÚÆ²¸°¿¡ ´ëÇÑ ´õ ÀÚ¼¼ÇÑ ³»¿ëÀº
¡°¶°¿À¸£´Â ÀÚ¹Ù ´ëüÁ¦¡± ÄÚÆ²¸° Á¦´ë·Î ÀÌÇØÇϱ⠱â»ç¸¦ ÂüÁ¶Çϱ⠹ٶõ´Ù.
½ºÄ®¶ó ½ºÄ®¶ó´Â ÄÚÆ²¸°Ã³·³ ÀÚ¹Ù °³¹ßÀÚÀÇ »ý»ê¼ºÀ» ³ôÀÌ·Á´Â ¸ñÀûÀ¸·Î ¸¸µé¾îÁ³´Ù. ½ºÄ®¶ó´Â ÇÔ¼ö¿Í °´Ã¼ ÁöÇâÇü ÇÁ·Î±×·¡¹ÖÀ» µ¿ÀÏ ¾ð¾î·Î °áÇÕÇØ, ÀÚ¹Ù »ýÅÂ°è »ç¿ëÀÚµéÀÌ ÇÔ¼ö ÆÐ·¯´ÙÀÓÀ» À¯¿ëÇÏ°Ô È°¿ëÇÒ ¼ö ÀÖµµ·Ï ¸¸µé¾ú´Ù.
¶ÇÇÑ ½ºÄ®¶ó ¹®¹ýÀº ÇÔ¼ö ÇÁ·Î±×·¡¹Ö ´ëüÀçÀΠŬ·ÎÀú(Clojure)º¸´Ù ÀÚ¹Ù¿¡ ´õ °¡±õ´Ù. Ŭ·ÎÀúÀÇ °æ¿ì ¸®½ºÇÁ(List processor, Lisp) °°Àº ¹®¹ý ¶§¹®¿¡ ÀǵµÇÏÁö ¾ÊÀº È¥¶õÀÌ ÃÊ·¡µÉ ¼ö ÀÖ´Ù. ÇÔ¼ö¿Í °´Ã¼ ÁöÇâÇü ÆÐ·¯´ÙÀÓÀ» È¥ÇÕÇØ Áö¿øÇÏ´Â °ÍÀÌ ½ºÄ®¶óÀÇ °¡Àå Å« ÀåÁ¡ °¡¿îµ¥ Çϳª´Ù.
ÇöÀç LLVMÀ» ÅëÇØ JVM ¹Û º£¾î ¸ÞÅ»¿¡¼ ½ÇÇàµÇ´Â ½ºÄ®¶ó º¯Á¾ÀÎ ½ºÄ®¶ó ³×ÀÌÆ¼ºê(Scala Native)°¡ °³¹ßµÇ°í ÀÖ´Ù. ±×·¯³ª ¾ÆÁ÷ Ãʱâ¶ó »ý»ê ȯ°æ¿¡¼ »ç¿ëÇϱâ Èûµç ¾ð¾î´Ù.
Ŭ·ÎÀú°³¹ßÀÚÀÎ ¸®Ä¡ È÷Ű´Â JVM¿ëÀ¸·Î ¸®½ºÇÁ °è¿ÀÇ ÇÔ¼ö ¾ð¾î¸¦ °³¹ßÇϱ⠿øÇß°í, ÀÌ¿¡ Ŭ·ÎÀú¸¦ °³¹ßÇß´Ù. Ŭ·ÎÀú´Â µ¿½Ã °í¼º´É ¾ÖÇø®ÄÉÀ̼ÇÀ» ½±°Ô °³¹ßÇÒ ¼ö ÀÖµµ·Ï ¸¸µé¾îÁ® ÀÖ´Ù. ÀÚ¹Ù°¡ ½ÇÇàµÇ´Â Àå¼Ò¿¡¼ À¯¿ëÇÏÁö¸¸, ÀüÅëÀûÀ¸·Î ÀÚ¹Ù°¡ Áö¿øÇÏ´Â °Í°ú ´Ù¸¥ ÇÁ·Î±×·¡¹Ö ½ºÅ¸ÀÏÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù. ·çºñ¿¡¼ Ŭ·ÎÀú·Î ¸¶À̱׷¹ÀÌ¼Ç µÈ ÆÛÆê ¼¹ö(Puppet Server)¸¦ ¼º°ø »ç·Ê °¡¿îµ¥ Çϳª·Î ²ÅÀ» ¼ö ÀÖ´Ù.
±×·çºñ(Groovy)¿ø·¡ ÇǺ¸Å»(Pivotal)ÀÌ °³¹ßÇßÁö¸¸, Áö±ÝÀº ¾ÆÆÄÄ¡ ¼ÒÇÁÆ®¿þ¾î Àç´Ü(Apache Software Foundation)ÀÌ °ü¸®Çϰí ÀÖ´Â ±×·çºñ´Â ±âÁ¸ Àڹ٠ȯ°æ¿¡ Åä´ë¸¦ µÎ°í ÀÖÁö¸¸, ÆÄÀ̽ã(Python)°ú ·çºñ °°Àº µ¿Àû ¾ð¾î¿¡ ¿µÇâÀ» ¹ÞÀº ±â´ÉµéÀ» Á¦°øÇÑ´Ù.
±×·çºñ´Â Àαâ ÀÖ´Â Á¨Å²½º(Jenkins) Áö¼ÓÀû ÅëÇÕ ¼¹ö°¡ Á÷Á¢ Áö¿øÇÏ´Â ¾ð¾î °¡¿îµ¥ ÇϳªÀ̸ç, À̸¦ ÀÌ¿ëÇØ ÇÙ½É À¥ ÇÁ·¹ÀÓ¿öÅ©ÀÎ ±×·¹ÀÏ(Grails)¸¦ ±¸ÇöÇÑ´Ù.
ÇâÈÄ µîÀåÇÒ ±×·çºñ ¹öÀüÀº ÀÚ¹Ù 8 ¶÷´Ù(Java 8 lambda) ¹®¹ý °°Àº »õ·Î¿î ¹öÀüÀÇ ÀÚ¹Ù¿Í JVM ±â´ÉµéÀ» Áö¿øÇÒ ¿¹Á¤ÀÌ´Ù.
ÀÚÀ̽ã°ú Á¦ÀÌ·çºñÀÚÀ̽ã°ú Á¦ÀÌ·çºñ´Â °¢°¢ JVM¿ë ÆÄÀ̽ã°ú ·çºñ´Ù. ÀÚÀ̽ãÀº ÆÄÀ̽ã 2.x¿Í ȣȯµÈ´Ù. Á¦ÀÌ·çºñ´Â ÃֽŠ·çºñ 2.3°ú ȣȯµÈ´Ù. ¸ðµÎ µ¿ÀûÀ¸·Î ÀÚ¹Ù ¹ÙÀÌÆ®ÄÚµå·Î ÄÄÆÄÀÏÇÒ ¼ö ÀÖÀ¸¸ç, ÀÚ¹Ù µî ´Ù¸¥ JVM ¾ð¾î¿Í ÇÔ²² »ç¿ëÇÒ ¼ö ÀÖ´Ù.
±âŸ JVM ¾ð¾îµé- ½Ç·Ð(Ceylon): ·¹µå ÇÞ(Red Hat)ÀÌ °³¹ßÇÑ ½Ç·ÐÀº 'ÀåȲÇÔ'À̳ª 'JVMÀÇ ±â¹Ý ¸ÞÄ«´ÏÁò °¡¿îµ¥ ÀÏºÎ¿Í ¹¿© ÀÖ´Â ¹®Á¦' µî ÀÚ¹Ù°¡ °®°í ÀÖ´Â ¹®Á¦Á¡ °¡¿îµ¥ ÀϺθ¦ ÇØ°áÇϱâ À§ÇØ ¸¸µç ¾ð¾î´Ù. JVMÀº ¹°·Ð ´ÙÆ®(Dart) VM, ³ëµåJS(Node.js)¿¡¼ ½ÇÇàµÇµµ·Ï ½Ç·ÐÀ» ÄÄÆÄÀÏÇÒ ¼ö ÀÖ´Ù.
- ÇÁ·¹°Ô(Frege) : ÇÔ¼ö ¾ð¾îÀÎ ÇϽºÄÌ(Haskell)ÀÇ JVM¿ë ¹öÀüÀÌ´Ù. ÇÁ·¹°Ô Äڵ带 Àڹ٠Ŭ·¡½º¿¡ ÄÄÆÄÀÏÇØ (Åë»ó) ÀÚ¹Ù¿Í ÇÔ²² ¿î¿µÇÑ´Ù. ±×·¯³ª ÇϽºÄÌ °°Àº ºÒº¯¼º°ú ÇÔ¼ö ÆÐ·¯´ÙÀÓÀ» Ȱ¿ëÇÒ ¼ö ÀÖ´Ù.
- ¿¡Å¸(Eta) : ¿¡Å¸ ¿ª½Ã JVM¿ë HÇϽºÄÌÀÇ 'º¯Á¾'ÀÌ´Ù. ÇϽºÄÌ ÆÐŰÁö ·¹Æ÷ÁöÅ丮ÀÎ ÇØÅ°Áö(Hackage)¸¦ »ç¿ëÇÒ ¼ö Àֱ⠶§¹®¿¡ ÇϽºÄÌ »ýŰè¿ÍÀÇ È£È¯¼ºÀÌ ¾ÆÁÖ ³ô´Ù´Â Á¡À» ÀåÁ¡À¸·Î ³»¼¼¿î´Ù.
- Çм¼(Haxe) : Çм¼´Â À¥°ú ¸ð¹ÙÀÏ ÀåÄ¡, º£¾î ¸ÞÅ» µî ¿©·¯ ¼ö¸¹Àº ¸ñÀû¿¡¼ JVMÀ¸·Î ÄÄÆÄÀÏ ÇÒ ¼ö ÀÖ´Â ¾ð¾î´Ù. ¹®¹ýÀº ÀÚ¹Ù¸¦ ¿¬»ó½ÃŲ´Ù. JVMÀ» ´ë»óÀ¸·Î ÄÄÆÄÀÏÇÒ ¶§ ÇÊ¿äÇÑ °æ¿ì ´Ù¸¥ ÀÚ¹Ù ¶óÀ̺귯¸®¸¦ Áö¿øÇÑ´Ù.
- ÆÒÅÒ(Fantom) : JVM°ú ´å³Ý(.Net) CLR¿ë ¾ð¾îÀÎ ÆÒÅÒÀº µÎ Ç÷§ÆûÀÇ Â÷ÀÌÁ¡À» ¹«½ÃÇÏ´Â API¸¦ Á¦°øÇÑ´Ù. ÆÒÅÒÀº ÀÚ¹Ù½ºÅ©¸³Æ®¿¡µµ ÄÄÆÄÀÏÀÌ °¡´ÉÇϸç, ÀÌ·ÐÀûÀ¸·Î´Â ´Ù¸¥ ¾î¶² ´ë»óÀ¸·Îµµ ¹èÆ÷ÇÒ ¼ö ÀÖ´Ù. editor@itworld.co.kr