¡Ú ÀÌ Ã¥¿¡¼ ´Ù·ç´Â ³»¿ë ¡Ú
- ±¸Á¶ÈµÇ°í °¡µ¶¼º ÁÁÀº °´Ã¼ÁöÇâ ÄÚµå ÀÛ¼ºÀ» À§ÇÑ »õ·Î¿î ±â´É »ç¿ë
- ±ò²ûÇϰí Àç»ç¿ëÀÌ °¡´ÉÇÏ¸ç °£´ÜÇÑ ÄÚµå ÀÛ¼ºÀ» À§ÇÑ ¶÷´Ù¿Í °íÂ÷ ÇÔ¼ö »ç¿ë¹ý ÀÌÇØ
- À¯´Ö Å×½ºÆ® ÀÛ¼º ¹× º¯È¯µÈ ÄÚµå ±â¹Ý¿¡¼ ÄÚÆ²¸° Å×½ºÆ®¿Í ÀÚ¹Ù ÄÚµå ÅëÇÕ
- ¸¶ÀÌÅ©·Î¼ºñ½º ½ºÅ¸ÀÏÀ» »ç¿ëÇØ ÄÚÆ²¸°À¸·Î ½ÇÁ¦ »ó¿ë ÄÚÆ® ÀÛ¼º
- ÄÚÆ²¸° È®ÀåÀ» ÀÚ¹Ù Ä÷º¼Ç ¶óÀ̺귯¸®¿¡ Ȱ¿ëÇϱâ
- ³Î Æ÷ÀÎÅÍ ¿¡·¯¸¦ ÇÇÇÏ´Â Äڵ带 ÀÛ¼ºÇϰí, ÀÚ¹ÙÀÇ ³Î °ªÀÌ °¡´ÉÇÑ Äڵ尡 ÄÚÆ²¸° Äڵ庣À̽º¿¡ ÀÖ´Â ±â´É°ú ¾î¶»°Ô ÅëÇÕµÉ ¼ö ÀÖ´ÂÁö¸¦ È®ÀÎÇÏ...
´õº¸±â
¡Ú ÀÌ Ã¥¿¡¼ ´Ù·ç´Â ³»¿ë ¡Ú
- ±¸Á¶ÈµÇ°í °¡µ¶¼º ÁÁÀº °´Ã¼ÁöÇâ ÄÚµå ÀÛ¼ºÀ» À§ÇÑ »õ·Î¿î ±â´É »ç¿ë
- ±ò²ûÇϰí Àç»ç¿ëÀÌ °¡´ÉÇÏ¸ç °£´ÜÇÑ ÄÚµå ÀÛ¼ºÀ» À§ÇÑ ¶÷´Ù¿Í °íÂ÷ ÇÔ¼ö »ç¿ë¹ý ÀÌÇØ
- À¯´Ö Å×½ºÆ® ÀÛ¼º ¹× º¯È¯µÈ ÄÚµå ±â¹Ý¿¡¼ ÄÚÆ²¸° Å×½ºÆ®¿Í ÀÚ¹Ù ÄÚµå ÅëÇÕ
- ¸¶ÀÌÅ©·Î¼ºñ½º ½ºÅ¸ÀÏÀ» »ç¿ëÇØ ÄÚÆ²¸°À¸·Î ½ÇÁ¦ »ó¿ë ÄÚÆ® ÀÛ¼º
- ÄÚÆ²¸° È®ÀåÀ» ÀÚ¹Ù Ä÷º¼Ç ¶óÀ̺귯¸®¿¡ Ȱ¿ëÇϱâ
- ³Î Æ÷ÀÎÅÍ ¿¡·¯¸¦ ÇÇÇÏ´Â Äڵ带 ÀÛ¼ºÇϰí, ÀÚ¹ÙÀÇ ³Î °ªÀÌ °¡´ÉÇÑ Äڵ尡 ÄÚÆ²¸° Äڵ庣À̽º¿¡ ÀÖ´Â ±â´É°ú ¾î¶»°Ô ÅëÇÕµÉ ¼ö ÀÖ´ÂÁö¸¦ È®ÀÎÇϱâ
- ÄÚÆ²¸°¿¡¼ ÇÔ¼ö¸¦ ÀÛ¼ºÇÏ´Â ¹æ¹ý°ú »ç¿ë °¡´ÉÇÑ »õ·Î¿î ±â´ÉÀ» »ìÆìº¸°í, ±âÁ¸ ¶óÀ̺귯¸®¸¦ È®ÀåÇϱâ
¡Ú ÀÌ Ã¥ÀÇ ´ë»ó µ¶ÀÚ ¡Ú
ÀÌ Ã¥Àº ÄÚÆ²¸° °æÇèÀÌ ¾øÀ¸¸é¼ ¾ð¾î¸¦ ºü¸£°Ô ½ÀµæÇϰíÀÚ ÇÏ´Â µ¶ÀÚ¸¦ ´ë»óÀ¸·Î ÇÑ´Ù.
Ã¥¿¡¼´Â ÄÚÆ²¸°À» ÀÌ¿ëÇÑ ¼¹ö »çÀÌµå °³¹ß¿¡ ÁßÁ¡À» µÎ°í ÀÖÀ¸¸ç, ÇöÀç ¼¹ö »çÀÌµå °³¹ßÀڰųª À̸¦ ¹è¿ì°íÀÚ ÇÏ´Â °³¹ßÀÚ¿¡°Ô´Â ¾È¼º¸ÂÃãÀÏ °ÍÀÌ´Ù. ÇÔ¼öÇü ÇÁ·Î±×·¡¹ÖÀ̳ª °´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ ¼±Áö½ÄÀÌ ÇÊ¿äÇÏÁö´Â ¾ÊÁö¸¸ ´Ù¸¥ ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡ ´ëÇÑ Áö½ÄÀÌ ÀÖÀ¸¸é ÁÁ´Ù.
ÀϺΠÀå¿¡´Â ÀÚ¹Ù ±¸Çöü¿Í ÄÚÆ²¸°À» ºñ±³ÇÏ´Â °£´ÜÇÑ ÀýÀÌ ÀÖ±â´Â ÇÏÁö¸¸, ÀÚ¹Ù¿¡ ´ëÇÑ Áö½ÄÀÌ ¾ø´Â µ¶ÀÚ¶ó¸é ÀÌ·¯ÇÑ ÀýÀº °Ç³Ê¶Ù¾îµµ ¹«¹æÇÏ´Ù.
¡Ú ÀÌ Ã¥ÀÇ ±¸¼º ¡Ú
1Àå, ¡®ÄÚÆ²¸° ½ÃÀÛÇϱ⡯¿¡¼´Â ÄÚÆ²¸°°ú Á¬ºê·¹ÀÎ(Jetbrains) »çÀÇ ÀÎÅÚ¸®Á¦ÀÌ(Intellij) IDEA ±×¸®°í ±×·¹À̵é(Gradle) ºôµå ȯ°æÀ» ¼³Ä¡ÇÏ´Â ¹æ¹ýÀ» ´Ù·é´Ù. Åø üÀÎ ¼³Á¤À» ¿Ï·áÇÑ ´ÙÀ½ ù ¹øÂ° ÄÚÆ²¸° ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁØ´Ù.
2Àå, ¡®ÄÚÆ²¸° ±âº»±â¡¯¿¡¼´Â ±âº» ŸÀÔ°ú ±âº» ¹®¹ý, ±×¸®°í if ¹®°ú for ¹®, while ·çÇÁ °°Àº ÇÁ·Î±×·¥ È帧 Á¦¾î ±¸Á¶¸¦ Æ÷ÇÔÇÑ ÄÚÆ²¸°ÀÇ ±âº»»çÇ×À» ¹è¿öº»´Ù. ¶ÇÇÑ 2Àå¿¡¼´Â when Ç¥Çö½Ä°ú ŸÀÔ Ãß·Ð °°Àº ÄÚÆ²¸°¿¡ Æ¯ÈµÈ ±â´Éµµ ´Ù·é´Ù.
3Àå, ¡®ÄÚÆ²¸°°ú °´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹Ö¡¯¿¡¼´Â ÄÚÆ²¸° ¾ð¾îÀÇ °´Ã¼ÁöÇâÀû Ãø¸é¿¡ ÃÊÁ¡À» ¸ÂÃá´Ù. 3Àå¿¡¼´Â Ŭ·¡½º, ÀÎÅÍÆäÀ̽º, °´Ã¼ ±×¸®°í ÀÌµé °£ÀÇ °ü°è¿Í ¼ºêŸÀÔ°ú ´ÙÇü¼ºÀ» ¼Ò°³ÇÑ´Ù.
4Àå, ¡®ÄÚÆ²¸°°ú ÇÔ¼ö¡¯¿¡¼´Â ´Ù¸¥ ¾ð¾î¿¡¼ ±âº» ±¸¼º¿ä¼ÒÀÎ ÇÁ·Î½ÃÀú³ª ¸Þ¼Òµå·Î ¾Ë·ÁÁø ÇÔ¼ö¿¡ ´ëÇØ »ìÆìº»´Ù. 4Àå¿¡¼´Â À̸§ÀÌ ÀÖ´Â ¸Å°³º¯¼ö, ±âº» ¸Å°³º¯¼ö, ÇÔ¼ö ¸®ÅÍ·² °°ÀÌ ÄÚÆ²¸°¿¡¼ Çâ»óµÈ ±â´ÉÀ» Æ÷ÇÔÇÑ ÇÔ¼ö¸¦ À§ÇÑ ¹®¹ýÀ» ¼³¸íÇÑ´Ù.
5Àå, ¡®°íÂ÷ ÇÔ¼ö¿Í ÇÔ¼öÇü ÇÁ·Î±×·¡¹Ö¡¯¿¡¼´Â ÈçÈ÷ ¶÷´Ù¶ó°í ¾Ë·ÁÁø Ŭ·ÎÀú¿Í ÇÔ¼ö ÂüÁ¶(function reference)¸¦ Æ÷ÇÔÇÑ ÄÚÆ²¸°ÀÇ ÇÔ¼öÇü ÇÁ·Î±×·¡¹Ö Ãø¸é¿¡ ÁßÁ¡À» µÐ´Ù. 5Àå¿¡¼´Â ¿©±â¼ ´õ ³ª¾Æ°¡ ºÎºÐ Àû¿ë°ú ÇÔ¼ö ÇÕ¼º, ¿À·ù ÃàÀû °°Àº ÇÔ¼öÇü ÇÁ·Î±×·¡¹Ö ±â±³µµ ´Ù·ïº»´Ù.
6Àå, ¡®ÇÁ·ÎÆÛƼ¡¯¿¡¼´Â Ŭ·¡½º³ª °´Ã¼¿¡¼ °ªÀ» ³ëÃâÇϱâ À§ÇØ °´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹Ö°ú ÇÔ²² µ¿ÀÛÇÏ´Â ÇÁ·ÎÆÛƼ¿¡ ´ëÇØ ¼³¸íÇÑ´Ù. 6Àå¿¡¼´Â ÇÁ·ÎÆÛƼ°¡ ¾î¶»°Ô µ¿ÀÛÇÏ´ÂÁö¿Í »ç¿ëÀÚ°¡ ÇÁ·ÎÆÛƼ¸¦ ¾î¶»°Ô Àß È°¿ëÇÒ ¼ö ÀÖ´ÂÁö ±×¸®°í ÇÁ·ÎÆÛƼ°¡ ¹ÙÀÌÆ® ÄÚµå·Î´Â ¾î¶»°Ô Ç¥ÇöµÇ´ÂÁö¸¦ ´Ù·é´Ù.
7Àå, ¡®³Î ¾ÈÁ¤¼º, ¸®Ç÷º¼Ç, ¾Ö³ëÅ×À̼ǡ¯¿¡¼´Â ³Î ¾ÈÁ¤¼ºÀÌ ÄÚÆ²¸°ÀÌ Á¦°øÇÏ´Â ÇÙ½É ±â´É Áß Çϳª¶ó´Â Á¡À» ¼³¸íÇÑ´Ù. 7Àå¿¡¼´Â ¿ì¼±, ÄÚÆ²¸°¿¡¼ ³Î ¾ÈÁ¤¼ºÀÌ ¿Ö ÇÊ¿äÇÑÁö¿Í ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö¸¦ ÀÚ¼¼È÷ ¼³¸íÇÑ´Ù. ±×·± ´ÙÀ½, ·±Å¸ÀÓ¿¡¼ Äڵ带 ¹Ý¿µÇÏ´Â ¸®Ç÷º¼Ç¿¡ ´ëÇØ ¼³¸íÇÏ¸é¼ ¸®Ç÷º¼ÇÀÌ ¸ÞŸÇÁ·Î±×·¡¹Ö¿¡¼ ¾Ö³ëÅ×À̼ǰú ÇÔ²² ¾î¶»°Ô »ç¿ëµÉ ¼ö ÀÖ´ÂÁö¸¦ »ìÆìº»´Ù.
8Àå, ¡®Á¦³×¸¯¡¯¿¡¼´Â Á¦³×¸¯ ¶Ç´Â ¸Å°³º¯¼öÈµÈ Å¸ÀÔÀº Çâ»óµÈ ŸÀÔ ½Ã½ºÅÛÀÇ ÇÙ½É ¿ä¼ÒÀ̸ç, ÄÚÆ²¸°ÀÇ Å¸ÀÔ ½Ã½ºÅÛÀº ÀÚ¹Ù¿¡¼ »ç¿ë °¡´ÉÇÑ °Íº¸´Ù Á» ´õ Çâ»óµÅ ÀÖÀ½À» ¼³¸íÇÑ´Ù.
8Àå¿¡¼´Â Nothing ŸÀÔ°ú ´ë¼öÇÐ µ¥ÀÌÅÍ Å¸ÀÔÀ» Æ÷ÇÔÇÑ º¯°æµÈ ŸÀÔ ½Ã½ºÅÛÀ» ´Ù·é´Ù.
9Àå, ¡®µ¥ÀÌÅÍ Å¬·¡½º¡¯¿¡¼´Â ºÒº¯¼º°ú º¸ÀÏ·¯Ç÷¹ÀÌÆ®ÇÏÁö ¾ÊÀº µµ¸ÞÀΠŬ·¡½º°¡ Äڵ带 ´õ¿í ´Ü´ÜÇÏ°Ô ÇØÁÖ°í µ¿½Ã¼º ÇÁ·Î±×·¡¹ÖÀ» ´Ü¼øÈÇÏ´Â ¹æ¹ýÀ̶ó´Â Á¡¿¡¼ ÃÖ±Ù ¶ß°Å¿î °¨ÀÚÀÓÀ» º¸¿©ÁØ´Ù. ÄÚÆ²¸°Àº ÀÌ·¯ÇÑ ¿µ¿ª¿¡ ÃÊÁ¡À» µÐ ¸¹Àº ±â´ÉÀ» °®°í ÀÖÀ¸¸ç, À̸¦ µ¥ÀÌÅÍ Å¬·¡½º¶ó ºÎ¸¥´Ù.
10Àå, ¡®Ä÷º¼Ç¡¯¿¡¼´Â Ä÷º¼ÇÀÌ Ç¥ÁØ ¶óÀ̺귯¸®¿¡¼ °¡Àå ÀϹÝÀûÀ¸·Î »ç¿ëµÇ´Â Ãø¸é Áß Çϳª¶ó´Â Á¡À» ¼³¸íÇϸé¼, ÀÚ¹Ù Ä÷º¼Ç°ú ´Ù¸£Áö ¾Ê´Ù´Â Á¡À» ¼³¸íÇÑ´Ù. 10Àå¿¡¼´Â ¸Ê(map) °ú Æúµå(fold), ÇÊÅÍ(filter) °°Àº ÇÔ¼öÇü ¿¬»êÀ» Æ÷ÇÔÇØ ÄÚÆ²¸°¿¡¼ JDK Ä÷º¼ÇÀ» °ÈÇÑ Á¡À» ¼³¸íÇÑ´Ù.
11Àå, ¡®ÄÚÆ²¸°°ú Å×½ºÆ®¡¯¿¡¼´Â »õ·Î¿î ¾ð¾î·Î µé¾î°¡´Â °ü¹® Áß Çϳª°¡ Å×½ºÆ® Äڵ带 ÀÛ¼ºÇÏ´Â µ¥ ±× ¾ð¾î¸¦ »ç¿ëÇÏ´Â °ÍÀÓÀ» ¼³¸íÇÑ´Ù. 11Àå¿¡¼´Â Èï¹ÌÁøÁøÇÑ Å×½ºÆ® ÇÁ·¹ÀÓ¿öÅ©ÀÎ KotlinTest¸¦ »ç¿ëÇØ Ç¥ÁØ JUnit Å×½ºÆ®°¡ Çã¿ëÇÏ´Â °Íº¸´Ù ÈξÀ Ç¥Çö·ÂÀÌ Ç³ºÎÇÏ°í »ç¶÷ÀÌ ÀÐÀ» ¼ö ÀÖ´Â Å×½ºÆ®¸¦ ÀÛ¼ºÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁØ´Ù.
12Àå, ¡®ÄÚÆ²¸°°ú ¸¶ÀÌÅ©·Î¼ºñ½º¡¯¿¡¼´Â ÃÖ±Ù ¸î ³â°£ ¸¶ÀÌÅ©·Î¼ºñ½º°¡ ¼¹ö Ãø ¾ÆÅ°ÅØÃ³¸¦ Áö¹èÇØ¿ÔÀ¸¸ç ÄÚÆ²¸°Àº ÀÌ·¯ÇÑ ¼ºñ½º¸¦ ±¸ÇöÇϱâ À§ÇÑ ÈǸ¢ÇÑ ¼±ÅÃÀ̶ó´Â Á¡À» º¸¿©ÁØ´Ù.
12Àå¿¡¼´Â ¶ó°õ(Lagom) ¸¶ÀÌÅ©·Î¼ºñ½º ÇÁ·¹ÀÓ¿öÅ©¸¦ ¼Ò°³Çϰí, ÄÚÆ²¸°°ú ÇÔ²² »ç¿ëÇØ Å« È¿°ú¸¦ ¹ßÈÖÇϱâ À§ÇØ ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö¸¦ º¸¿©ÁØ´Ù.
13Àå, ¡®µ¿½Ã¼º¡¯¿¡¼´Â ¼¹ö Ãø Ç÷§Æû¿¡¼ ¸ÖƼÄھ Áö¿øÇÏ´Â ÇÁ·Î±×·¥ÀÌ Á¡Á¡ ´õ Áß¿äÇØÁö°í ÀÖÀ½À» ¼³¸íÇÑ´Ù. 13Àå¿¡¼´Â ½º·¹µå¿Í µ¿½Ã¼º ÇÁ¸®¹ÌƼºê(concurrency primitives) ±×¸®°í ǻó(future)¸¦ ºñ·ÔÇØ Çö´ë °³¹ß¿¡¼ ÇʼöÀûÀÎ µ¿½Ã¼º ÇÁ·Î±×·¡¹Ö ±â¼úÀ» ¼Ò°³ÇÏ´Â µ¥ ÁßÁ¡À» µÐ´Ù.
¡Ú ¿Å±äÀÌÀÇ ¸» ¡Ú
ÄÚÆ²¸°Àº JVM Áø¿µÀÇ »õ·Î¿î ¾ð¾î·Î ¸¹Àº °ü½ÉÀ» ¹Þ¾Æ¿Ô´Ù. 2017³â¿¡´Â ±¸±Û¿¡¼ ¾Èµå·ÎÀÌµå °³¹ß ¾ð¾î·Î °ø½Ä ÀÎÁ¤ÇÏ¸é¼ ±× °ü½É°ú À§»óÀº ¾î´À ¶§º¸´Ù ³ô¾ÆÁø »óÅ´Ù. ƯÈ÷ ÄÚÆ²¸°Àº ¾Èµå·ÎÀÌµå °³¹ß¿¡¼ ±âÁ¸¿¡ ÀÚ¹Ù ¹öÀü ¹®Á¦·Î »ç¿ëÇÒ ¼ö ¾ø¾ú´ø ±â´ÉÀ» »ç¿ëÇÒ ¼ö ÀÖ°Ô ÇØÁÖ¸ç, ¿©·¯ º¸ÀÏ·¯Ç÷¹ÀÌÆ® Äڵ带 ¾ø¾ÖÁֱ⠶§¹®¿¡ ¸¹Àº ¾Èµå·ÎÀÌµå °³¹ßÀÚÀÇ »ç¶ûÀ» ¹Þ°í ÀÖ´Ù. ¾Æ½±°Ôµµ ÀÌ Ã¥¿¡¼ ¾Èµå·ÎÀ̵带 °³¹ßÇÏ´Â ³»¿ëÀ» ¼³¸íÇÏÁö´Â ¾ÊÁö¸¸, ±× ´ë½Å ÄÚÆ²¸°À» Á» ´õ ÀÚ¼¼È÷ °øºÎÇÒ ¼ö ÀÖµµ·Ï ¸¹Àº ³»¿ëÀ» ´ã°í ÀÖ´Ù.
¿ø¼°¡ Ãâ°£µÈ ½ÃÁ¡¿¡ ÄÚÆ²¸° ÃֽйöÀüÀº 1.1-M04¿´´Ù. ¹ø¿ª¼°¡ Ãâ°£µÇ´Â ½ÃÁ¡¿¡¼´Â ¾î´Àµ¡ 1.1ÀÌ Á¤½Ä Ãâ½ÃµÅ 1.1.51±îÁö ³ª¿Ô´Ù. ÀÌ Ã¥Àº 1.1-M04¸¦ ±â¹ÝÀ¸·Î ÁýÇʵÆÁö¸¸ 1.1.51À» »ç¿ëÇØµµ Å« ¹«¸®´Â ¾øÀ¸¸ç, Ã¥¿¡¼ ÄÚÆ²¸°À» ¼³Ä¡ÇÏ´Â ³»¿ëÀº ¸ðµÎ 1.1 ±â¹Ý ¹öÀüÀ¸·Î ¼³Ä¡ÇÒ ¼ö ÀÖµµ·Ï ¼öÁ¤Çß´Ù. ´Ù¸¸ ¹ÙÀÌÆ® Äڵ带 ¼³¸íÇÏ´Â ³»¿ë¿¡¼´Â 1.1-M04·Î µÅ Àֱ⠶§¹®¿¡ 1.1 ÃֽйöÀüÀ» ¼³Ä¡ÇØ ¿¹Á¦¸¦ ½ÇÇàÇÏ¸é ¹ÙÀÌÆ® ÄÚµå ÀϺΰ¡ ´Ù¸¦ ¼öµµ ÀÖÁö¸¸ ³»¿ëÀÌ ¹Ù²ð Á¤µµ´Â ¾Æ´Ï´Ï ¾È½ÉÇØµµ ÁÁ´Ù.
»õ·Î¿î ¾ð¾î¸¦ °øºÎÇÏ´Â µ¥ ÀÖ¾î °¡Àå ÁÁÀº ¹æ¹ýÀº Á÷Á¢ »ç¿ëÇØº¸¸é¼ Àç¹Ì¸¦ ´À³¢´Â °ÍÀ̶ó°í »ý°¢ÇÑ´Ù. ±×·± ¸é¿¡¼ ÄÚÆ²¸°Àº Á¤¸» ¾È¼º¸ÂÃãÀÎ ¾ð¾î´Ù. ƯÈ÷ ÀÚ¹Ù³ª ½ºÄ®¶ó¸¦ »ç¿ëÇØº» °³¹ßÀÚ¶ó¸é ÄÚÆ²¸°À» Á¤¸» Àç¹ÌÀÖ°í ºü¸£°Ô ½ÀµæÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
´Ý±â