{"id":33932,"date":"2018-11-05T20:26:58","date_gmt":"2018-11-05T11:26:58","guid":{"rendered":"https:\/\/blog.jetbrains.com\/kr\/?p=299"},"modified":"2018-11-05T20:29:29","modified_gmt":"2018-11-05T11:29:29","slug":"kotlin-1-3-coroutines-kotlinnative-beta","status":"publish","type":"post","link":"https:\/\/blog.jetbrains.com\/ko\/2018\/11\/05\/kotlin-1-3-coroutines-kotlinnative-beta\/","title":{"rendered":"Kotlin 1.3 \ucd9c\uc2dc &#8211; Coroutines, Kotlin\/Native Beta \ub97c \ud3ec\ud568\ud55c \ucd94\uac00 \uc5c5\ub370\uc774\ud2b8"},"content":{"rendered":"2018\ub144 10\uc6d4 29\uc77c Kotlin 1.3\uc744 \ucd9c\uc2dc \ub418\uc5c8\uc2b5\ub2c8\ub2e4.\u00a0\ub77c\uc774\ube0c\ub7ec\ub9ac \ubaa8\uc74c, \ube4c\ub4dc \ub3c4\uad6c \ubc0f \ud559\uc2b5 \uc790\ub8cc \ub4f1 \ubaa8\ub450 \ud568\uaed8 \uc81c\uacf5\ub429\ub2c8\ub2e4.\r\n\r\nJetBrains\ub294 Kotlin \uc744 \ud558\ub098\uc758 \uad6d\ud55c\ub41c \ud658\uacbd\uc774 \uc544\ub2cc \ubaa8\ub4e0 \ud658\uacbd\uc758 \uc571 \uac1c\ubc1c\uc790\ub97c \uc704\ud55c \uc5b8\uc5b4\ub85c \uc81c\uacf5\ud569\ub2c8\ub2e4.\u00a0 \uc989 \ubaa8\ub4e0 \ud50c\ub7ab\ud3fc\uc744 \uc9c0\uc6d0\ud558\ub294 \uac1c\ubc1c\uc5b8\uc5b4\ub85c \uac1c\ubc1c\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. Kotlin 1.3 \uc5d0\uc11c\ub294 Coroutines \uac00 \ub4dc\ub514\uc5b4 \uc548\uc815\uc801 \ubc84\uc804\uc73c\ub85c \ucd9c\uc2dc\ub429\ub2c8\ub2e4. \uc774\ub294 non-blocking \ucf54\ub4dc\ub97c \uac00\ub3c5\uc131 \uc788\uac70\ub098 \uc27d\uac8c \uc791\uc131\ud560 \uc218 \uc788\ub3c4\ub85d \ub3c4\uc6c0\uc774 \ub418\uaca0\uc8e0? \ud655\uc7a5\uc131\uc740 \uc9c0\uae08\uae4c\uc9c0 \ubcf8\uc801\uc774 \uc5c6\ub294 \ucd5c\uace0\uc870\uc5d0 \ub2ec\ud588\uc2b5\ub2c8\ub2e4! \uc774\ubc88 \ucd9c\uc2dc\uc5d0\uc11c\ub294\u00a0Kotlin\/Native Beta \ub610\ud55c \uc120\ubcf4\uc774\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub294\u00a0Kotlin code \ub97c \uc9c1\uc811\uc801\uc73c\ub85c native library \ub85c \ucef4\ud30c\uc77c \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. Kotlin\uc758 \uba40\ud2f0-\ud50c\ub7ab\ud3fc \ub2a5\ub825\uc774 \uc774\uc81c\ub294 \ubaa8\ub4e0 \uc9c0\uc6d0\uac00\ub2a5\ud55c \ud50c\ub7ab\ud3fc\uc73c\ub85c \ud655\uc7a5\ub418\uace0 \uc774\ub85c\uc368 \ud558\ub098\uc758 \ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1\uc744 Android \ub610\ub294 iOS \ub4f1 \uac01\uae30 \ub2e4\ub978 \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \uad6c\ud604\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc11c\ubc84 \ub610\ud55c \uc6f9 \ubc0f \ubaa8\ubc14\uc77c \ud074\ub77c\uc774\uc5b8\ud2b8 \ub4f1\uc5d0 \ub3d9\uc77c\ud55c \ub85c\uc9c1\uc744 \uad6c\ud604\ud560 \uc218 \uc788\uae30 \ub54c\ubb38\uc5d0 \uba40\ud2f0-\ud50c\ub7ab\ud3fc \ub77c\uc774\ube0c\ub7ec\ub9ac\ub85c \uc791\uc5c5\ub4e4\uc744 \ubcf4\ub2e4 \uc218\uc6d4\ud558\uac8c \ud50c\ub7ab\ud3fc\uac04\uc5d0 \uc774\ub3d9\uc774 \uac00\ub2a5\ud569\ub2c8\ub2e4.\r\n\r\n\r\n\r\n1.3 \ubc84\uc804\uc758 \uc8fc\uc694 \uae30\ub2a5\uc744 \ub2e4\ub8e8\ub294 \uc6f9\ube44\ub098\uac00 \uc608\uc815\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \uc5ec\uae30\uc5d0\uc11c \ub4f1\ub85d\ud558\uc2ed\uc2dc\uc624.\r\n\r\n\uc6b0\ub9ac\ub294 1.3\uc758 \uc8fc\uc694 \uae30\ub2a5\uc744 \ub2e4\ub8e8\ub294 \uc77c\ub828\uc758 \uc6f9 \uc138\ubbf8\ub098\ub97c \uc870\uc9c1 \ud560 \uac83\uc785\ub2c8\ub2e4.\u00a0\uc5ec\uae30\uc5d0\uc11c \uad6c\ub3c5\ud558\uc2ed\uc2dc\uc624 :\r\n\r\n\r\n\r\n\r\n\ud5a5\ud6c4 \uc5f4\ub9ac\ub294 Kotlin \uc6e8\ube44\ub098 \uc18c\uc2dd\uc744 \uc54c\ub824\uc8fc\uc138\uc694.\r\nKotlin \uc0c8\ub85c\uc6b4 \uc18c\uc2dd\uc744 \uc54c\ub824\uc8fc\uc138\uc694.\r\n\r\n\r\n\r\n\uc774 \uc591\uc2dd\uc744 \uc81c\ucd9c\ud568\uc73c\ub85c\uc368 \u00a0JetBrains\uc758 \uac1c\uc778 \uc815\ubcf4 \ubcf4\ud638 \uc815\ucc45\u00a0\u00a0\uc5d0\u00a0\ub3d9\uc758 \ud569\ub2c8\ub2e4\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\ucee4\ubba4\ub2c8\ud2f0\uc640 \uc0dd\ud0dc\uacc4\r\n\uc62c\ud574 Kotlin\uc740 \uc804\ub840\uc5c6\ub294 \uc131\uc7a5\uc744 \ubcf4\uc600\uc2b5\ub2c8\ub2e4.\u00a02018 \ub144 1 \uc6d4 \uc774\ud6c4 \uc57d 150 \ub9cc \uba85\uc758 \uc0ac\uc6a9\uc790\uac00 Kotlin \ucf54\ub4dc\ub97c \uc791\uc131\ud588\uc73c\uba70\uc774 \uc22b\uc790\ub294 \uc9c0\ub09c \ud574 \uc774\ud6c4\ub85c \ub450 \ubc30 \uc774\uc0c1 \uc99d\uac00\ud588\uc2b5\ub2c8\ub2e4.\u00a0StackOverflow\uc640 \uacf5\uac1c Slack\uc758 \uacbd\ud5a5 \ub610\ud55c \ub9e4\uc6b0 \uace0\ubb34\uc801\uc785\ub2c8\ub2e4.\u00a0\uc6b0\ub9ac\ub294 \uc9c0\uc9c0\uc640 \ud658\uc601\uc744\ubc1b\ub294 \ucf54\ud2c0\ub9b0 \ucee4\ubba4\ub2c8\ud2f0\uc5d0 \uac10\uc0ac\ub4dc\ub9bd\ub2c8\ub2e4!\r\n\r\n\uc6b0\ub9ac\ub294 \ucf54\ud2c0\ub9b0 \uc8fc\ubcc0\uc758 \uc0dd\ud0dc\uacc4\uac00 \uc131\uc7a5\ud558\uace0 \uc131\uc219\ud574 \uc84c\uc74c\uc744 \uae30\uc058\uac8c \uc0dd\uac01\ud569\ub2c8\ub2e4.\u00a0Kotlin\uc740\u00a0Google Cloud Platform\u00a0,\u00a0Spring Framework\u00a0\ubc0f\u00a0Gradle\u00a0\uacfc \ub9e4\uc6b0 \uce5c\uadfc\ud558\uba70\u00a0Android \uc8fc \uac1c\ubc1c\uc5b8\uc5b4 \ucc44\ud0dd\uc740\u00a0\ub108\ubb34\ub098 \uace0\ub9c8\uc6b4 \uc77c\uc785\ub2c8\ub2e4\u00a0.\u00a0\uc624\ud508 \uc18c\uc2a4 \ucee4\ubba4\ub2c8\ud2f0\ub294\u00a0RxKotlin\u00a0,\u00a0mockito-Kotlin\u00a0,\u00a0TornadoFX\u00a0,\u00a0Kodein\u00a0\ubc0f\u00a0\u039bRROW\u00a0\uc640 \uac19\uc740 \uc6b0\uc218\ud55c Library\ub97c \ub9cc\ub4e4\uace0 \uc788\uc2b5\ub2c8\ub2e4.\u00a0\u00a0Square's Okio\u00a0\ubc0f\u00a0LibreOffice\u00a0\uc640\u00a0\uac19\uc740 \ud504\ub85c\uc81d\ud2b8\u00a0\ub294 Kotlin\uc73c\ub85c \ub9c8\uc774\uadf8\ub808\uc774\uc158\ud558\uac70\ub098 \uadf8\ub807\uac8c \ud560 \uacc4\ud68d\uc785\ub2c8\ub2e4. \uc5ec\ub7ec\ubd84\u00a0\ubaa8\ub450 \ud6cc\ub96d\ud55c \uc544\uc774\ub514\uc5b4\uc640 \ud504\ub85c\uc81d\ud2b8\ub85c Kotlin \uc0dd\ud0dc\uacc4\uc5d0 \uac00\uc785\ud558\uc2e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4!\r\n\r\nJetBrains \uc678\ubd80\uc758 \ub9ce\uc740 \uc0ac\ub78c\ub4e4\uc774 Kotlin 1.3\uc5d0 Pull-Request, \ubc84\uadf8 \ub9ac\ud3ec\ud2b8 \ubc0f \ub2e4\uc591\ud55c \uc885\ub958\uc758 \ud53c\ub4dc\ubc31\uc744 \uc81c\uacf5\ud588\uc2b5\ub2c8\ub2e4.\u00a0\ub9ce\uc740 \ub3c4\uc6c0\uc744 \uc8fc\uc154\uc11c \uac10\uc0ac \ub4dc\ub9ac\uba70 Kotlin\uc758 \uc131\uc7a5\uc744 \uc5ec\ub7ec\ubd84\uacfc \ud568\uaed8 \ud560 \uc218 \uc788\uc5b4 \ub108\ubb34\ub098 \uc88b\uc2b5\ub2c8\ub2e4!\r\n\ucf54\ub8e8\ud2f4\uc740 \uc774\uc81c \uc548\uc815\uc801\uc785\ub2c8\ub2e4.\r\n\ucf54\ub8e8\ud2f4\uc740 \uc774\ud574\ud558\uae30 \uc27d\uace0 \uc9c4\ud654\ud558\ub294 \ube44-\ucc28\ub2e8 \ube44\ub3d9\uae30 \ucf54\ub4dc(non-blocking asynchronous code)\ub97c \uc791\uc131\ud558\ub294 \ud604\ub300\uc801\uc778 \ubc29\ubc95\uc785\ub2c8\ub2e4.\u00a0\uc791\uc5c5 \uc624\ud504 \ub85c\ub529\uc5d0\uc11c\ubd80\ud130 \ubc31\uadf8\ub77c\uc6b4\ub4dc \uc791\uc5c5\uc790\uc5d0 \uc774\ub974\uae30\uae4c\uc9c0 \ubcf5\uc7a1\ud55c \ub124\ud2b8\uc6cc\ud06c \ud504\ub85c\ud1a0\ucf5c \uad6c\ud604\uc5d0 \uc774\ub974\uae30\uae4c\uc9c0 \uac15\ub825\ud55c \ub3c4\uad6c\uc785\ub2c8\ub2e4.\u00a0kotlinx.coroutines\uc758\u00a0\ub77c\uc774\ube0c\ub7ec\ub9ac\ub294 1.0 \ubc84\uc804\uc73c\ub85c \ucd9c\uc2dc\ub418\uc5c8\uace0 \uad6c\uc131, \ucde8\uc18c, \uc608\uc678 \ucc98\ub9ac \ubc0f UI \ud2b9\uc815 \uc0ac\uc6a9 \uc0ac\ub840\ub97c \ud3ec\ud568\ud55c \ubaa8\ub4e0 \uaddc\ubaa8\uc758 \ube44\ub3d9\uae30 \uc791\uc5c5\uc744 \uad00\ub9ac\ud558\uae30 \uc704\ud55c \uacac\uace0\ud55c \uae30\ubc18\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.\r\n\r\n\uc624\ub298\u00a0kotl.in\/coroutines\u00a0\uc5d0\uc11c \uc2dc\uc791\ud558\uc2ed\uc2dc\uc624\u00a0!\u00a0\uc5ec\uae30\r\nCoroutines \uc6f9 \uc138\ubbf8\ub098\uc5d0 \uac00\uc785\u00a0\ud558\uc2ed\uc2dc\uc624.\r\nKotlin\/Native \ubca0\ud0c0\r\nKotlin \/ Native\ub294\u00a0iOS, Linux, Windows, Mac \ubc0f WebAssembly \ubc0f STM32\uc640 \uac19\uc740 \uc784\ubca0\ub514\ub4dc \uc2dc\uc2a4\ud15c\uc744 \ud3ec\ud568\ud55c \ub2e4\uc591\ud55c \uc6b4\uc601 \uccb4\uc81c \ubc0f CPU \uc544\ud0a4\ud14d\ucc98\ub97c \uc704\ud574 \ub3c5\ub9bd \uc2e4\ud589 \ud615 \ubc14\uc774\ub108\ub9ac (VM\uc774 \ud544\uc694\ud558\uc9c0 \uc54a\uc74c!)\ub85c Kotlin \uc18c\uc2a4\ub97c \ucef4\ud30c\uc77c\ud558\uae30\u00a0\uc704\ud574\u00a0LLVM\u00a0\uc744\u00a0\uc0ac\uc6a9\u00a0\ud569\ub2c8\ub2e4.\u00a0\uc644\uc804 \uc790\ub3d9 \uba54\ubaa8\ub9ac \uad00\ub9ac \uae30\ub2a5, C, Objective-C (\ubc0f Swift)\uc640\uc758 \uc0c1\ud638 \uc6b4\uc6a9, Core Foundation, POSIX \ubc0f \uae30\ud0c0 \ub124\uc774\ud2f0\ube0c \ub77c\uc774\ube0c\ub7ec\ub9ac\uc640 \uac19\uc740 \ud50c\ub7ab\ud3fc API \uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.\r\n\r\nKotlin \/ Native \ub7f0\ud0c0\uc784\uc740 \ubcc0\uacbd \ubd88\uac00\ub2a5\ud55c(immutable) \ub370\uc774\ud130\ub97c \ucd09\uc9c4\ud558\uace0 \uc2a4\ub808\ub4dc\uac04\uc5d0 \ubcf4\ud638\ub418\uc9c0 \uc54a\uc740 \ubcc0\uacbd \uac00\ub2a5 \uc0c1\ud0dc\ub97c \uacf5\uc720\ud558\ub824\ub294 \uc2dc\ub3c4\ub97c \uae08\uc9c0\ud569\ub2c8\ub2e4.\u00a0\uc0ac\uc2e4 \uc2a4\ub808\ub4dc\ub294 Kotlin \/ Native \uc6a9\uc73c\ub85c \uc874\uc7ac\ud558\uc9c0 \uc54a\uae30 \ub54c\ubb38\uc5d0 \ub0ae\uc740 \uc218\uc900\uc758 \uad6c\ud604 \uc138\ubd80 \uc0ac\ud56d\uc73c\ub85c \ucd94\uc0c1\ud654\ub418\uc5b4 \uc548\uc804\ud558\uace0 \uad00\ub9ac \uac00\ub2a5\ud55c \ub3d9\uc2dc\uc131 \uc218\ud589 \ubc29\ubc95 \uc778 \uc791\uc5c5\uc790\ub85c \ub300\uccb4\ub429\ub2c8\ub2e4.\r\n\r\nkotl.in\/native\u00a0\uc5d0\uc11c Kotlin\/Native\ub97c\u00a0\ud655\uc778\ud558\uc2ed\uc2dc\uc624.\r\n\uc5ec\uae30\uc5d0\uc11c\u00a0\uc6e8\ube44\ub098\uc5d0 \uac00\uc785\u00a0\ud558\uc2ed\uc2dc\uc624.\r\n\uba40\ud2f0-\ud50c\ub7ab\ud3fc \ud504\ub85c\uc81d\ud2b8 \ubc0f \ud234\ub9c1\r\n\ubaa8\ub4e0 \ud50c\ub7ab\ud3fc\uc5d0\uc11c \uc791\uc5c5\ud558\ub294 \uac83\uc740 Kotlin\uc758 \uba85\ubc31\ud55c \ubaa9\ud45c\uc774\uc9c0\ub9cc \ud50c\ub7ab\ud3fc \uac04\uc758 \ucf54\ub4dc \uacf5\uc720\ub77c\ub294 \ud6e8\uc52c \ub354 \uc911\uc694\ud55c \ubaa9\ud45c\ub97c \uc804\uc81c\ub85c\ud569\ub2c8\ub2e4.\u00a0JVM, Android, JavaScript \ubc0f Native\ub97c \uc9c0\uc6d0\ud558\ubbc0\ub85c Kotlin\uc740 \ucd5c\uc2e0 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\uc758 \ubaa8\ub4e0 \uad6c\uc131 \uc694\uc18c\ub97c \ucc98\ub9ac \ud560 \uc218 \u200b\u200b\uc788\uc2b5\ub2c8\ub2e4.\u00a0\ub610\ud55c \ucf54\ub4dc \ubc0f \uc804\ubb38 \uc9c0\uc2dd\uc744 \uc7ac\uc0ac\uc6a9 \ud560 \ub54c \uc5bb\uc744 \uc218\uc788\ub294 \uadc0\uc911\ud55c \uc774\uc810\uc744 \uc81c\uacf5\ud558\ubbc0\ub85c \ubaa8\ub4e0 \uc791\uc5c5\uc744 \ub450 \ubc88 \ub610\ub294 \uc5ec\ub7ec \ubc88 \uad6c\ud604\ud558\ub294 \uac83\ubcf4\ub2e4 \ub354 \uae4c\ub2e4\ub85c\uc6b4 \uc791\uc5c5\uc744 \uc800\uc7a5\ud558\uc9c0 \uc54a\uc544\ub3c4\ub429\ub2c8\ub2e4.\u00a0Kotlin\uc758 \uba40\ud2f0 \ud50c\ub7ab\ud3fc \uae30\ub2a5\uc740 \uc5ec\uc804\ud788 \u200b\u200b\uc2e4\ud5d8\uc801\uc774\uc9c0\ub9cc 1.3\uc740 \ud070 \ubc1c\uc804\uc744 \uac00\uc838\uc635\ub2c8\ub2e4.\r\n\r\nKotlin 1.3\uc5d0\ub294\u00a0HTTP\u00a0,\u00a0\uc9c1\ub82c\ud654\u00a0\ubc0f\u00a0\ucf54\ub8e8\ud2f4 \uad00\ub9ac\u00a0\uc640\u00a0\uac19\uc740 \uc77c\uc0c1\uc801\uc778 \uc791\uc5c5\uc744 \ucc98\ub9ac\ud558\ub294 \ub2e4\uc911 \ud50c\ub7ab\ud3fc \ub77c\uc774\ube0c\ub7ec\ub9ac \uc138\ud2b8\uac00 \ud568\uaed8 \uc81c\uacf5\ub429\ub2c8\ub2e4\u00a0.\u00a0\uba40\ud2f0 \ud50c\ub7ab\ud3fc \ucf54\ub4dc\ub97c \uc791\uc131\ud558\ub294 \uac00\uc7a5 \uc26c\uc6b4 \ubc29\ubc95\uc740 \uadf8\ub7ec\ud55c \ub77c\uc774\ube0c\ub7ec\ub9ac\uc5d0 \uc758\uc874\ud558\ub294 \uac83\uc785\ub2c8\ub2e4.\u00a0\ub610\ud55c \ud50c\ub7ab\ud3fc \ubcc4 \uc885\uc18d\uc131\uc744 \uacf5\ud1b5 API\uc5d0 \ub798\ud551\ud558\ub294 \uc790\uccb4 \uba40\ud2f0 \ud50c\ub7ab\ud3fc \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc791\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\r\n\r\n\ud50c\ub7ab\ud3fc\uac04\uc5d0 \ucf54\ub4dc \uacf5\uc720\ub97c \uc2dc\uc791\ud558\uc2ed\uc2dc\uc624 :\u00a0kotl.in\/multiplatform\u00a0.\r\n\uc5ec\uae30\uc5d0\uc11c \uc6e8\ube44\ub098\uc5d0 \uac00\uc785\u00a0\ud558\uc2ed\uc2dc\uc624.\r\nKotlin \/ Native \ubc0f \uba40\ud2f0-\ud50c\ub7ab\ud3fc\uc744 \uc704\ud55c \ud234\ub9c1\r\nKotlin 1.3\uc740 IntelliJ IDEA Community Edition, IntelliJ IDEA Ultimate \ubc0f Android Studio\uc5d0\uc11c \uc81c\uacf5\ub418\ub294 Kotlin \/ Native \ubc0f Multiplatform \ud504\ub85c\uc81d\ud2b8\ub97c\uc704\ud55c \ud234\ub9c1 \uc9c0\uc6d0 \uae30\ub2a5\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.\u00a0\uc624\ub958 \uac15\uc870 \ud45c\uc2dc, \ucf54\ub4dc \uc644\uc131, \ud0d0\uc0c9 \ubc0f \ub9ac\ud329\ud1a0\ub9c1\uacfc \uac19\uc740 \ubaa8\ub4e0 \ucf54\ub4dc \ud3b8\uc9d1 \uae30\ub2a5\uc740 \uc138 IDE \ubaa8\ub450\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\u00a0\uc6b0\ub9ac\ub294 \ub354 \ub9ce\uc740 \uace0\uae09 \uae30\ub2a5\uacfc \uc0c1\uc6a9 \ud234\ub9c1\uacfc\uc758 \ud1b5\ud569 \uc791\uc5c5\uc744 \ud560 \uac83\uc785\ub2c8\ub2e4.\r\nKtor 1.0 \ubca0\ud0c0\r\n\ucf54 \ub8e8\ud2f4\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc804\uccb4 HTTP \uc2a4\ud0dd\uc744 \uc644\uc804\ud788 \ube44\ub3d9\uae30 \uc801\uc73c\ub85c \uad6c\ud604\ud558\ub294 \uc5f0\uacb0 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8 \ud504\ub808\uc784 \uc6cc\ud06c \uc778 Ktor\ub294 Beta\uc5d0 \ub3c4\ub2ec\ud588\uc73c\uba70\u00a0ktor.io\u00a0\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4\u00a0.\r\n\uae30\ud0c0 \uac1c\uc120 \uc0ac\ud56d\r\n\uc9c0\uae08\uae4c\uc9c0 \ub2e4\ub8ec \ubaa8\ub4e0 \uac83 \uc678\uc5d0\ub3c4\uc774 \ub9b4\ub9ac\uc2a4\uc5d0\ub294 \ub2e4\uc74c\uc744 \ud3ec\ud568\ud558\uc5ec \ub9ce\uc740 \ub2e4\ub978 \uae30\ub2a5\uacfc \uac1c\uc120\uc774 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.\r\n\r\n\t\uc131\ub2a5 \ubc0f \uc720\ud615 \uc548\uc804\uc744\u00a0\uc704\ud55c\u00a0\uc778\ub77c\uc778 \ud074\ub798\uc2a4(inline classes)\uc5d0\u00a0\ub300\ud55c\u00a0\uc2e4\ud5d8\uc801 \uc9c0\uc6d0\r\n\t\ubc14\uc774\ud2b8 \uc870\uc791 \ubc0f \uae30\ud0c0 \uc800\uc218\uc900 \ucf54\ub4dc\ub97c \uc6a9\uc774\ud558\uac8c\ud558\uae30\u00a0\uc704\ud55c\u00a0\ubd80\ud638\uc5c6\ub294 \uc815\uc218(unsigned integers)\uc5d0\u00a0\ub300\ud55c \uc2e4\ud5d8\uc801 \uc9c0\uc6d0\r\n\t\uc0c1\uc6a9\uc5b4\ub97c \uc904\uc774\uae30\uc704\ud55c\u00a0\uc81c\ubaa9 \uc18d\u00a0when \ud45c\ud604(Subject in\u00a0when\u00a0expressions)\r\n\t\ub77c\uc774\ube0c\ub7ec\ub9ac \ud638\ucd9c\uc5d0 \ub300\ud55c \uc815\uc801 \ubd84\uc11d \uac1c\uc120\uc744 \uc704\ud55c\u00a0Contracts\r\n\t\ub354 \uae68\ub057\ud55c \ucd08\ubcf4\uc790\ub97c\uc704\ud55c\u00a0\uc9c4\uc785 \uc810 \uc5c6\uc74c(No-arg entry point)\r\n\t\uac8c\uc73c\ub978 \uacc4\uc0b0\uc744 \uc2dc\uac01\ud654 \ud558\uae30 \uc704\ud55c\u00a0\uc2dc\ud000\uc2a4 \ub514\ubc84\uac70(Sequence debugger)\r\n\t\uc2a4\ud06c\ub798\uce58 \ud30c\uc77c, REPL \ubc0f\u00a0\uc2a4\ud06c\ub9bd\ud2b8 \uac1c\uc120(scripting improvements)\u00a0\uc73c\ub85c \uc2a4\ud06c\ub9bd\ud2b8 \ubc0f \ucf54\ub4dc \uc2a4 \ub2c8\ud3ab\uc73c\ub85c \uc6d0\ud65c\ud558\uac8c \uc791\uc5c5\r\n\t\ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac(Standard Library)\u00a0\uac00 Kotlin\/Native\ub85c \ud655\uc7a5\ub418\uc5c8\uace0, Kotlin\/JS\uc5d0 \ub300\ud55c \uc9c0\uc6d0\uc774 \ud5a5\uc0c1\ub418\uc5c8\uc73c\uba70, \ubaa8\ub4e0 \ud50c\ub7ab\ud3fc\uc5d0\uc11c \ubb34\uc791\uc704\ub85c \uc5bb\uc5c8\uc73c\uba70 \ub2e4\ub978 \uac1c\uc120\uc810\uacfc \ubc84\uadf8 \uc218\uc815\uc774\uc788\uc5c8\uc2b5\ub2c8\ub2e4.\r\n\tKotlin\/JS\ub97c \uc704\ud55c \uc2e4\ud5d8\uc801\uc778 \uc810\uc99d \uc801 \ucef4\ud30c\uc77c\r\n\r\n\uc0c8\ub85c\uc6b4 \uae30\ub2a5 \ud398\uc774\uc9c0\u00a0\uc5d0\uc11c \uc804\uccb4 \uc124\uba85\uc744\u00a0\ucc38\uc870\ud558\uc2ed\uc2dc\uc624\u00a0.\u00a0\ubcc0\uacbd \ub85c\uadf8\ub294\u00a0\uc5ec\uae30\uc5d0\uc11c\u00a0\uc0ac\uc6a9\ud560 \uc218\u00a0\uc788\uc2b5\ub2c8\ub2e4\u00a0.\u00a0\ud638\ud658\uc131 \uac00\uc774\ub4dc\ub294\u00a0\uc5ec\uae30\uc5d0 \uc788\uc2b5\ub2c8\ub2e4\u00a0.\r\nKotlinConf\r\nKotlinConf 2018\uc5d0\uc11c 1.3 \ub9b4\ub9ac\uc988\uc758 \uac00\uc7a5 \ub728\uac70\uc6b4 \uc8fc\uc81c\ub97c \ub2e4\ub8e8\ub294 \ubaa8\ub4e0 \ube44\ub514\uc624\ub97c \ubaa8\ub450 \uacf5\uac1c\ud588\uc2b5\ub2c8\ub2e4.\u00a0\uac1c\ub9c9 \uae30\uc870\uc5f0\uc124 \ubc0f \uac01 \uc138\uc158 \uc601\uc0c1\uc744 \ud655\uc778\ud558\uc5ec \uc0c8\ub86d\uace0 \uc8fc\ubaa9\ud560\ub9cc\ud55c \ub0b4\uc6a9\uc744 \uc790\uc138\ud788 \uc0b4\ud3b4\ubcf4\uc2ed\uc2dc\uc624.\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nKotlinConf 2018 \uc601\uc0c1\uc744 \uc720\ud22c\ube0c JetBrains TV\uc5d0\uc11c \ud655\uc778\ud558\uc138\uc694\r\nKotlin \ubc30\uc6b0\uae30\r\n\uc6b0\ub9ac\ub294 \uc5ec\ub7ec\ubd84\uc774 \uc27d\uace0 \uc7ac\ubbf8\uc788\uac8c \ucf54\ud2c0\ub9b0\uc744 \ubc30\uc6b0\uc2e4 \uc218 \uc788\ub3c4\ub85d\u00a0\ucd5c\uc120\uc744 \ub2e4\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.\u00a0\u00a0\ub2e4\uc591\ud55c \uc790\ub8cc\ub4e4\uc774\u00a0\ub9ce\uc774 \uc788\uc9c0\ub9cc \ub2e4\uc74c \uc790\ub8cc\ub4e4\uc744 \uad8c\uc7a5\ud558\uace0 \uc2f6\uc2b5\ub2c8\ub2e4 :\r\n\r\n\tSvetlana Isakova\uc640 Andrey Breslav\uc758 \uc0c8\ub85c\uc6b4 \ucf54\uc2a4\uac00\u00a0Coursera\uc5d0\uc11c\u00a0\uc2dc\uc791\ub429\ub2c8\ub2e4.\r\n\tAtomic Kotlin, Bruce Eckel\uacfc Svetlana Isakova\uc758 \ucd08\ubcf4\uc790\ub97c\uc704\ud55c \ucc45\uc774\u00a0\ucd9c\uc2dc \uc804 \ud655\uc778 \uac00\ub2a5\ud569\ub2c8\ub2e4.\r\n\t\uc0c8\ub85c\uc6b4\u00a0play.kotl.in\u00a0mini-web-IDE\uc5d0\ub294 Koans, Examples \ubc0f embeddable code snippets\uac00 \uc788\uc2b5\ub2c8\ub2e4.\r\n\tEduTools\uc758\u00a0\ud50c\ub7ec\uadf8\uc778\uc740 IDE\uc758 UI\uc5d0\uc11c Kotlin\uc744 \ubc14\ub85c \ubc30\uc6b8 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\r\n\t\uacf5\uc778 \ucf54\ud2c0\ub9b0 \uad50\uc721(Certified Kotlin Training)\u00a0\uc740 \uc804 \uc138\uacc4\uc758 \uc5ec\ub7ec \uc81c\uacf5 \uc5c5\uccb4\ub97c \ud1b5\ud574 \uc81c\uacf5\ub429\ub2c8\ub2e4.\r\n\r\n\ucf54\ud2c0\ub9b0 1.3 \uc6e8\ube44\ub098\ub294\u00a0\ubaa8\ub450\ub97c \uc704\ud55c \uc88b\uc740 \ucd9c\ubc1c\uc810\uc774 \ub420 \uac83\uc785\ub2c8\ub2e4.\r\n\uc5c5\uadf8\ub808\uc774\ub4dc \ubc29\ubc95\r\n\uc5b8\uc81c\ub098\ucc98\ub7fc, \uc5ec\ub7ec\ubd84\uc740\u00a0play.kotl.in\u00a0\uc5d0\uc11c\u00a0\uc628\ub77c\uc778\uc73c\ub85c Kotlin\uc744 \uacbd\ud5d8\u00a0\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4\u00a0.\r\n\r\n\tMaven\uc5d0\uc11c\ub294 Gradle\uacfc npm\u00a0:\u00a01.3.0\ucef4\ud30c\uc77c\ub7ec\uc640 \ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac\uc758 \ubc84\uc804 \ubc88\ud638\ub85c\u00a0\uc0ac\uc6a9\u00a0\ud569\ub2c8\ub2e4.\u00a0\uc5ec\uae30\u00a0\uc758 \ubb38\uc11c\ub97c \ucc38\uc870\u00a0\ud558\uc2ed\uc2dc\uc624\u00a0.\r\n\tIntelliJ IDEA\u00a0: 2018.3\uc5d0\ub294 Kotlin 1.3 \ubc88\ub4e4\uc774 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \uc774\uc804 \ubc84\uc804\uc5d0\uc11c\ub294 Kotlin \ud50c\ub7ec\uadf8\uc778\uc744 \ubc84\uc804 1.3\uc5d0 \uc124\uce58\ud558\uac70\ub098 \uc5c5\ub370\uc774\ud2b8\ud569\ub2c8\ub2e4.\r\n\tAndroid Studio\u00a0:\u00a0Plugin Manager\ub97c\u00a0\ud1b5\ud574\u00a0\ud50c\ub7ec\uadf8\uc778\uc744\u00a0\uc124\uce58\ud558\uac70\ub098 \uc5c5\ub370\uc774\ud2b8\ud558\uc2ed\uc2dc\uc624\u00a0.\r\n\tEclipse\uc5d0\uc11c\u00a0:\u00a0\ub9c8\ucf13 \ud50c\ub808\uc774\uc2a4\ub97c\u00a0\uc0ac\uc6a9\ud558\uc5ec \ud50c\ub7ec\uadf8\uc778\uc744 \uc124\uce58\ud558\uc2ed\uc2dc\uc624\u00a0.\r\n\t\uba85\ub839 \uc904 \ucef4\ud30c\uc77c\ub7ec(command-line compiler\u00a0\u00a0\ub294\u00a0Github \ub9b4\ub9ac\uc2a4 \ud398\uc774\uc9c0\u00a0\uc5d0\uc11c \ub2e4\uc6b4\ub85c\ub4dc \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4\u00a0.\r\n\r\nLet 's Kotlin!\r\n\r\nPS\u00a0Reddit\u00a0\ubc0f\u00a0Hacker News\u00a0\uc5d0\uc11c\uc774 \uac8c\uc2dc\ubb3c\uc5d0 \ub300\ud574 \ud1a0\ub860\u00a0\ud558\uac70\ub098 \uc544\ub798\uc5d0 \uc758\uacac\uc744 \ub0a8\uae38 \uc218 \uc788\uc2b5\ub2c8\ub2e4.","protected":false},"excerpt":{"rendered":"2018\ub144 10\uc6d4 29\uc77c Kotlin 1.3\uc744 \ucd9c\uc2dc \ub418\uc5c8\uc2b5\ub2c8\ub2e4.\u00a0\ub77c\uc774\ube0c\ub7ec\ub9ac \ubaa8\uc74c, \ube4c\ub4dc \ub3c4\uad6c \ubc0f \ud559\uc2b5 \uc790\ub8cc \ub4f1 \ubaa8\ub450 \ud568\uaed8 \uc81c\uacf5\ub429\ub2c8\ub2e4.JetBrains\ub294 Kotlin \uc744 \ud558\ub098\uc758 \uad6d\ud55c\ub41c \ud658\uacbd\uc774 \uc544\ub2cc \ubaa8\ub4e0 \ud658\uacbd\uc758 \uc571 \uac1c\ubc1c\uc790\ub97c \uc704\ud55c \uc5b8\uc5b4\ub85c \uc81c\uacf5\ud569\ub2c8\ub2e4.\u00a0 \uc989 \ubaa8\ub4e0 \ud50c\ub7ab\ud3fc\uc744 \uc9c0\uc6d0\ud558\ub294 \uac1c\ubc1c\uc5b8\uc5b4\ub85c \uac1c\ubc1c\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. Kotlin 1.3 \uc5d0\uc11c\ub294 Coroutines","protected":false},"author":{"name":"JetBrains","link":"https:\/\/blog.jetbrains.com\/ko\/author\/jetbrains"},"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[4113],"tags":[],"cross-post-tag":[],"acf":[],"featured_image":null,"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/posts\/33932"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/users\/1152"},{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/users\/1152"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/comments?post=33932"}],"version-history":[{"count":0,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/posts\/33932\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/media?parent=33932"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/categories?post=33932"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/tags?post=33932"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/cross-post-tag?post=33932"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}