¡Ú ÀÌ Ã¥ÀÇ ´ë»ó µ¶ÀÚ ¡Ú
¾î´À Á¤µµ ÀÚ¹Ù °æÇèÀÌ ÀÖ´Â °³¹ßÀÚ¸¦ ÁÖ¿ä ´ë»óÀ¸·Î ÇÑ´Ù. ÄÚÆ²¸°Àº ÀÚ¹Ù¿¡ ÀÖ´Â ¿©·¯ °³³ä°ú ±â¹ý À§¿¡ ¸¸µé¾îÁ³°í, ÀÌ Ã¥Àº µ¶ÀÚµéÀÌ ÄÚÆ²¸°À» ºü¸£°Ô ¹è¿ï ¼ö ÀÖµµ·Ï µ¶ÀÚµéÀÇ ±âÁ¸ Áö½ÄÀ» Ȱ¿ëÇÑ´Ù. ÀÚ¹Ù¸¦ ¹è¿î Áö ¾ó¸¶ µÇÁö ¾Ê¾Ò°Å³ª C#À̳ª ÀÚ¹Ù ½ºÅ©¸³Æ®¿Í °°Àº ´Ù¸¥ ¾ð¾î¿¡ ´ëÇÑ °æÇèÀº ÀÖÁö¸¸ ÀÚ¹Ù¸¦ Àß ¸ð¸£´Â µ¶ÀÚµéÀº ÄÚÆ²¸°°ú JVMÀÇ »óÈ£ÀÛ¿ëÀÇ º¹ÀâÇÑ Ãø¸éÀ» ÀÌÇØÇϱâ À§ÇØ ´Ù¸¥ ÀÚ·á°¡ ÇÊ¿äÇÒ °ÍÀÌ´Ù. ÇÏÁö¸¸ ±×·± µ¶ÀÚ¶óµµ ¿©ÀüÈ÷ ÀÌ Ã¥À» »ç¿ëÇØ ÄÚÆ²¸°À» ¹è¿ï ¼ö ÀÖ´Ù. ¿ì¸®´Â ÄÚÆ²¸° ¾ð¾î Àüü¸¦ ´Ù...
´õº¸±â
¡Ú ÀÌ Ã¥ÀÇ ´ë»ó µ¶ÀÚ ¡Ú
¾î´À Á¤µµ ÀÚ¹Ù °æÇèÀÌ ÀÖ´Â °³¹ßÀÚ¸¦ ÁÖ¿ä ´ë»óÀ¸·Î ÇÑ´Ù. ÄÚÆ²¸°Àº ÀÚ¹Ù¿¡ ÀÖ´Â ¿©·¯ °³³ä°ú ±â¹ý À§¿¡ ¸¸µé¾îÁ³°í, ÀÌ Ã¥Àº µ¶ÀÚµéÀÌ ÄÚÆ²¸°À» ºü¸£°Ô ¹è¿ï ¼ö ÀÖµµ·Ï µ¶ÀÚµéÀÇ ±âÁ¸ Áö½ÄÀ» Ȱ¿ëÇÑ´Ù. ÀÚ¹Ù¸¦ ¹è¿î Áö ¾ó¸¶ µÇÁö ¾Ê¾Ò°Å³ª C#À̳ª ÀÚ¹Ù ½ºÅ©¸³Æ®¿Í °°Àº ´Ù¸¥ ¾ð¾î¿¡ ´ëÇÑ °æÇèÀº ÀÖÁö¸¸ ÀÚ¹Ù¸¦ Àß ¸ð¸£´Â µ¶ÀÚµéÀº ÄÚÆ²¸°°ú JVMÀÇ »óÈ£ÀÛ¿ëÀÇ º¹ÀâÇÑ Ãø¸éÀ» ÀÌÇØÇϱâ À§ÇØ ´Ù¸¥ ÀÚ·á°¡ ÇÊ¿äÇÒ °ÍÀÌ´Ù. ÇÏÁö¸¸ ±×·± µ¶ÀÚ¶óµµ ¿©ÀüÈ÷ ÀÌ Ã¥À» »ç¿ëÇØ ÄÚÆ²¸°À» ¹è¿ï ¼ö ÀÖ´Ù. ¿ì¸®´Â ÄÚÆ²¸° ¾ð¾î Àüü¸¦ ´Ù·ç¸ç, Ưº°È÷ ±¸Ã¼ÀûÀÎ ¿µ¿ª¿¡ ÃÊÁ¡À» ¸ÂÃßÁö´Â ¾Ê´Â´Ù. µû¶ó¼ ÀÌ Ã¥Àº ¼¹ö °³¹ßÀÚ³ª ¾Èµå·ÎÀÌµå °³¹ßÀÚ, ¶Ç´Â JVM¿¡¼ ½ÇÇàµÉ ÇÁ·ÎÁ§Æ®¸¦ ±¸ÃàÇÏ´Â ¸ðµç °³¹ßÀÚ¿¡°Ô µµ¿òÀÌ µÉ °ÍÀÌ´Ù.
¡Ú ÀÌ Ã¥ÀÇ ±¸¼º ¡Ú
ÀÌ Ã¥Àº 2ºÎ·Î ±¸¼ºÇß°í, 1ºÎ¿¡¼´Â ÄÚÆ²¸°À» ±âÁ¸ ¶óÀ̺귯¸®³ª API¿Í ÇÔ²² »ç¿ëÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù.
1ºÎ´Â ÄÚÆ²¸°À» ±âÁ¸ ¶óÀ̺귯¸®³ª API¿Í ÇÔ²² »ç¿ëÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù.
1ÀåÀº ÄÚÆ²¸°ÀÇ ÇÙ½É ¸ñÇ¥, °¡Ä¡, Àû¿ë ¿µ¿ª¿¡ ´ëÇØ ¾Ë·ÁÁØ´Ù. ¶ÇÇÑ ÄÚÆ²¸° Äڵ带 ½ÇÇàÇÏ´Â ¿©·¯ °¡Áö ¹æ¹ýÀ» º¸¿©ÁØ´Ù.
2ÀåÀº ¸ðµç ÄÚÆ²¸° ÇÁ·Î±×·¥ÀÇ ÇÙ½É ¿ä¼ÒÀÎ Á¦¾î ±¸Á¶, º¯¼ö, ÇÔ¼ö ¼±¾ð µîÀ» ¼³¸íÇÑ´Ù.
3ÀåÀº ÄÚÆ²¸°¿¡¼ ÇÔ¼ö¸¦ Á¤ÀÇÇÏ´Â ¹æ¹ýÀ» ÀÚ¼¼È÷ ´Ù·ç°í, È®Àå ÇÔ¼ö(extension function)¿Í ÇÁ·ÎÆÛƼ(property) °³³äÀ» ¼Ò°³ÇÑ´Ù.
4ÀåÀº Ŭ·¡½º ¼±¾ð¿¡ ÃÊÁ¡À» ¸ÂÃç ¼³¸íÇϰí, µ¥ÀÌÅÍ Å¬·¡½º(data class)¿Í µ¿¹Ý °´Ã¼(companion object)¿¡ ´ëÇØ ´Ù·é´Ù.
5ÀåÀº ÄÚÆ²¸° ¶÷´Ù(lambda) »ç¿ë¹ýÀ» ¼³¸íÇÏ°í ¶÷´Ù¸¦ »ç¿ëÇÏ´Â ÄÚÆ²¸° Ç¥ÁØ ¶óÀ̺귯¸® ÇÔ¼ö¸¦ ¸î °¡Áö º¸¿©ÁØ´Ù.
6ÀåÀº ÄÚÆ²¸° ŸÀÔ ½Ã½ºÅÛ¿¡ ´ëÇØ ´Ù·é´Ù. ƯÈ÷ ³Î °¡´É¼º(nullability)°ú Ä÷º¼Ç¿¡ ÃÊÁ¡À» ¸ÂÃç ¼³¸íÇÑ´Ù.
2ºÎ´Â ¿©·¯ºÐ ÀÚ½ÅÀÌ ÄÚÆ²¸°À» Ȱ¿ëÇØ API¸¦ ¼±¾ðÇϰí Ãß»óȸ¦ Á¤ÀÇÇÏ´Â ¹æ¹ýÀ» ¾Ë·ÁÁÖ°í, ÄÚÆ²¸° ¾ð¾îÀÇ ´õ ±íÀº Ư¼ºÀ» ´Ù·é´Ù.
7ÀåÀº °ü·Ê(convention)¶ó´Â ¿ø¸®¸¦ ¼³¸íÇÑ´Ù. °ü·Ê´Â ¹Ì¸® Á¤ÇØÁø À̸§ÀÎ ÇÔ¼ö³ª ÇÁ·ÎÆÛƼ¿¡ Ưº°ÇÑ Àǹ̸¦ ºÎ¿©ÇÑ´Ù. ¶ÇÇÑ À§ÀÓ ÇÁ·ÎÆÛƼ(delegated property)¶ó´Â °³³äÀ» ¼Ò°³ÇÑ´Ù.
8ÀåÀº ÇÔ¼ö¸¦ ÆÄ¶ó¹ÌÅÍ·Î ¹Þ°Å³ª ÇÔ¼ö¸¦ ¹ÝȯÇÏ´Â ÇÔ¼öÀÎ °íÂ÷ ÇÔ¼ö¸¦ ¼±¾ðÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù. ¶ÇÇÑ ÀζóÀÎ ÇÔ¼ö °³³äÀ» ¼Ò°³ÇÑ´Ù.
9ÀåÀº ÄÚÆ²¸° Á¦³×¸¯½º °³³äÀ» ÀÚ¼¼È÷ ´Ù·é´Ù. ¸ÕÀú ±âº» ¹®¹ýÀ» ¼³¸íÇÏ°í ½ÇüÈÇÑ(reified) ŸÀÔ ÆÄ¶ó¹ÌÅͳª ŸÀÔ º¯¼º(type variance)°ú °°Àº ´õ ¾î·Á¿î ÁÖÁ¦¸¦ ¼³¸íÇÑ´Ù.
10ÀåÀº Á¦ÀÌ۵å(JKid)¶ó´Â ½ÇÀü¿¡ °¡´ÉÇÑ ÀÛÀº JSON Á÷·ÄÈ ¶óÀ̺귯¸®¸¦ ÅëÇØ ¾Ö³ëÅ×À̼ǰú ¸®Ç÷º¼Ç »ç¿ë¹ýÀ» ´Ù·é´Ù.
11ÀåÀº ¿µ¿ª Æ¯È ¾ð¾î DSL °³³äÀ» ¼Ò°³Çϰí, ÄÚÆ²¸°ÀÇ DSL Áö¿ø ±â´ÉÀ» ¼³¸íÇϸç, ¿©·¯ DSL¿¹Á¦¸¦ »ìÆìº»´Ù.
¶ÇÇÑ 4°³ÀÇ ºÎ·ÏÀÌ ÀÖ´Ù.
ºÎ·Ï A´Â ±×·¹À̵é(Gradle), ¸ÞÀ̺ì(Maven), ¾ØÆ®(Ant)¿¡¼ ÄÚÆ²¸° Äڵ带 ºôµåÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù.
ºÎ·Ï B´Â ÄÚÆ²¸° ¸ðµâ¿¡ ´ëÇØ ¹®¼È ÁÖ¼®À» »ç¿ëÇÏ´Â ¹æ¹ý°ú API ¹®¼¸¦ »ý¼ºÇÏ´Â ¹æ¹ýÀ» ¾Ë·ÁÁØ´Ù.
ºÎ·Ï C´Â ÄÚÆ²¸° ¿¡ÄڽýºÅÛ¿¡ ÀÖ´Â ¿©·¯ ¶óÀ̺귯¸®³ª ÇÁ·¹ÀÓ¿öÅ©¸¦ ¼Ò°³Çϰí ÃֽŠÁ¤º¸¸¦ ¿Â¶óÀο¡¼ ¾ò´Â ¹æ¹ýÀ» ¾Ë·ÁÁØ´Ù.
ºÎ·Ï D¿Í E´Â Çѱ¹¾îÆÇ¿¡¸¸ Ãß°¡ÇÑ °ÍÀ¸·Î ÄÚÆ²¸° 1.1ºÎÅÍ 1.3(2018³â 10¿ù ¸±¸®½º)±îÁö º¯È¸¦ °£·«È÷ Á¤¸®Çϰí, ÄÚ·çÆ¾¿¡ ´ëÇØ ¼Ò°³ÇÑ´Ù.
ÀÌ Ã¥Àº Àüü¸¦ Â÷·Ê´ë·Î ÀÐÀ» ¶§ °¡Àå È¿°ú°¡ ÁÁ´Ù. ÇÏÁö¸¸ °ü½É ºÐ¾ß¸¦ ´Ù·ç´Â ÀåÀ» ã¾Æ¼ Àаųª Àß ¸ð¸£´Â °³³äÀ» ¸¶ÁÖÄ¥ ¶§ »öÀÎÀ» ÅëÇØ ÇÊ¿äÇÑ ºÎºÐÀ» ã¾Æº¸¸é¼ ÀÌ Ã¥À» Ȱ¿ëÇÏ´Â °Íµµ ÁÁ´Ù.
´Ý±â