{"id":405322,"date":"2023-11-14T06:10:22","date_gmt":"2023-11-14T05:10:22","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=kotlin&#038;p=405322"},"modified":"2023-11-14T07:01:23","modified_gmt":"2023-11-14T06:01:23","slug":"kotlin-multiplatform-stable","status":"publish","type":"kotlin","link":"https:\/\/blog.jetbrains.com\/ko\/kotlin\/2023\/11\/kotlin-multiplatform-stable\/","title":{"rendered":"Kotlin Multiplatform\uc774 \uc548\uc815\ud654\ub418\uc5b4 \uc774\uc81c \ud504\ub85c\ub355\uc158\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4"},"content":{"rendered":"<p><strong>\uc624\ub7ab\ub3d9\uc548 \uae30\ub2e4\ub9ac\uc2dc\ub358 \uc18c\uc2dd\uc744 \uc804\ud574 \ub4dc\ub9bd\ub2c8\ub2e4. \uac1c\ubc1c\uc790\uac00 \ub124\uc774\ud2f0\ube0c \ud504\ub85c\uadf8\ub798\ubc0d\uc758 \uc774\uc810\uc744 \uc720\uc9c0\ud558\uba74\uc11c \ud50c\ub7ab\ud3fc \uac04\uc5d0 \ucf54\ub4dc\ub97c \uacf5\uc720\ud560 \uc218 \uc788\ub3c4\ub85d \ud558\uae30 \uc704\ud574 JetBrains\uac00 \uad6c\ucd95\ud55c \uc624\ud508 \uc18c\uc2a4 \uae30\uc220\uc778 Kotlin Multiplatform\uc774 \uc548\uc815\ud654 \ubc84\uc804\uc774 \ub418\uc5c8\uc73c\uba70 \uc774\uc81c \ud504\ub85c\ub355\uc158\uc5d0 \uc0ac\uc6a9\ud560 \uc900\ube44\ub97c \uc644\ubcbd\ud558\uac8c \ub9c8\ucce4\uc2b5\ub2c8\ub2e4.<\/strong><\/p>\n<p><strong>Kotlin Multiplatform(KMP)\uc758 \ubc1c\uc804 \uacfc\uc815\uacfc \uc774\ub97c \ud1b5\ud574 \uac1c\ubc1c \ud504\ub85c\uc138\uc2a4\ub97c \uac04\uc18c\ud654\ud558\ub294 \ubc29\ubc95, \uc774 \uae30\uc220\uc744 \ucd5c\ub300\ud55c \ud65c\uc6a9\ud560 \uc218 \uc788\ub3c4\ub85d \ub3c4\uc640\uc8fc\ub294 \uad50\uc721 \uc790\ub8cc\uc5d0 \ub300\ud574 \uc54c\uc544\ubcf4\uc138\uc694.<\/strong><\/p>\n<p align=\"center\"><a class=\"ek-link jb-download-button\" title=\"\uc2dc\uc791\ud558\uae30\" href=\"http:\/\/jetbrains.com\/help\/kotlin-multiplatform-dev\/get-started.html?utm_source=kotlinblog&amp;utm_medium=button&amp;utm_campaign=kmp-stable\" target=\"_blank\" rel=\"noopener\">\uc2dc\uc791\ud558\uae30<\/a><\/p>\n<h2 class=\"wp-block-heading\">\uc790\uc2e0 \uc788\uac8c <em>\uc6d0\ud558\ub294<\/em> \ubc29\uc2dd\uc73c\ub85c \ucf54\ub4dc\ub97c \uacf5\uc720\ud558\uc138\uc694<\/h2>\n<p>\uc720\uc5f0\uc131\uacfc \uc801\uc751\uc131\uc5d0 \uc911\uc810\uc744 \ub450\uace0 \uc124\uacc4\ub41c Kotlin Multiplatform(KMP)\uc740 \ud06c\ub85c\uc2a4 \ud50c\ub7ab\ud3fc \uac1c\ubc1c\uacfc \ub124\uc774\ud2f0\ube0c \uac1c\ubc1c \uac04\uc758 \uacbd\uacc4\ub97c \ud5c8\ubb45\ub2c8\ub2e4. \uc774\ub97c \ud1b5\ud574 \uac1c\ubc1c\uc790\ub294 \uc6d0\ud558\ub294 \ub9cc\ud07c \ucf54\ub4dc\ub97c \uc7ac\uc0ac\uc6a9\ud558\uace0, \ud544\uc694\uc5d0 \ub530\ub77c \ub124\uc774\ud2f0\ube0c \ucf54\ub4dc\ub97c \uc791\uc131\ud558\uba70, \uacf5\uc720 Kotlin \ucf54\ub4dc\ub97c \ubaa8\ub4e0 \ud504\ub85c\uc81d\ud2b8\uc5d0 \uc6d0\ud65c\ud558\uac8c \ud1b5\ud569\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ucc98\uc74c \ucd9c\uc2dc\ub41c \uc774\ud6c4 KMP\ub294 \uadf8 \uc720\uc5f0\uc131 \ub355\ubd84\uc5d0 Netflix, Philips, McDonald&#8217;s, 9GAG, Baidu \ub4f1 <a href=\"http:\/\/jetbrains.com\/help\/kotlin-multiplatform-dev\/case-studies.html\" target=\"_blank\" rel=\"noreferrer noopener\">\ub9ce\uc740 \uc720\uc218 \uae30\uc5c5<\/a>\uc758 \uad00\uc2ec\uc744 \ub04c\uc5c8\uc2b5\ub2c8\ub2e4. \uc774\ubbf8 \ub9ce\uc740 \ud300\uc774 \uc810\uc9c4\uc801\uc73c\ub85c \ud1b5\ud569 \uac00\ub2a5\ud558\uba70 \ub3c4\uc785 \uc2dc \uc704\ud5d8\ub3c4\uac00 \ub0ae\uc740 KMP\uc758 \uc774\uc810\uc744 \ud65c\uc6a9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc5b4\ub5a4 \ud300\uc740 \uae30\uc874 Kotlin \ucf54\ub4dc\uc5d0\uc11c \ubd84\ub9ac\ub41c \ub9e4\uc6b0 \uc911\uc694\ud55c \ubd80\ubd84\uc744 \uacf5\uc720\ud558\uc5ec \uc571\uc758 \uc548\uc815\uc131\uc744 \uac1c\uc120\ud569\ub2c8\ub2e4. \ub2e4\ub978 \ud300\uc740 \uc571 \ud488\uc9c8\uc744 \uc800\ud558\uc2dc\ud0a4\uc9c0 \uc54a\uc73c\uba74\uc11c \ucd5c\ub300\ud55c \ub9ce\uc740 \ucf54\ub4dc\ub97c \uc7ac\uc0ac\uc6a9\ud558\ub294 \ub370 \ubaa9\ud45c\ub97c \ub450\uace0, \uae30\ubcf8 UI\ub97c \uc720\uc9c0\ud558\uba74\uc11c \ubaa8\ubc14\uc77c, \ub370\uc2a4\ud06c\ud1b1, \uc6f9, TV\uc5d0\uc11c \ubaa8\ub4e0 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ub85c\uc9c1\uc744 \uacf5\uc720\ud569\ub2c8\ub2e4.<\/p>\n<p>KMP \uc54c\ud30c \ucd9c\uc2dc \uc774\ud6c4 \ud504\ub85c\ub355\uc158\uc5d0\uc11c \ub110\ub9ac \uc0ac\uc6a9\ub418\uba74\uc11c JetBrains\ub294 \uad11\ubc94\uc704\ud55c \ud53c\ub4dc\ubc31\uc744 \uc218\uc9d1\ud558\uace0 \ub2e4\uc74c\uc744 \ud3ec\ud568\ud558\uc5ec \uc548\uc815\ud654 \ubc84\uc804\uc5d0\uc11c \ub354 \ub098\uc740 \uba40\ud2f0\ud50c\ub7ab\ud3fc \uac1c\ubc1c \ud658\uacbd\uc744 \uc81c\uacf5\ud558\uae30 \uc704\ud574 \uae30\uc220\uc744 \uac1c\uc120\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><strong>\uc5c4\uaca9\ud55c \ud638\ud658\uc131 \ubcf4\uc7a5<\/strong><\/p>\n<p>Kotlin Multiplatform \uae30\uc220\uc758 \ud575\uc2ec\uc5d0\ub294 \ucef4\ud30c\uc77c\ub7ec \uc9c0\uc6d0, \uc5b8\uc5b4 \uae30\ub2a5, \ub77c\uc774\ube0c\ub7ec\ub9ac API, IDE, \ube4c\ub4dc \ub3c4\uad6c\uc640 \uac19\uc740 \ub9ce\uc740 \ubd80\ubd84\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ubaa8\ub4e0 \uc694\uc18c\uac00 \uac00\uc7a5 \ub110\ub9ac \uc0ac\uc6a9\ub418\ub294 \ucf54\ub4dc \uacf5\uc720 \uc0ac\uc6a9 \uc0ac\ub840\ub97c \ubc18\uc601\ud558\uc5ec Kotlin 1.9.20\uc5d0\uc11c \uc548\uc815\ud654\ub418\uc5c8\uc2b5\ub2c8\ub2e4. &#8216;\uc548\uc815\ud654&#8217;\ub780 \uc5c4\uaca9\ud55c <a href=\"https:\/\/kotlinlang.org\/docs\/components-stability.html\" target=\"_blank\" rel=\"noreferrer noopener\">\ud638\ud658\uc131 \uaddc\uce59<\/a>\uc5d0 \ub530\ub77c \ud574\ub2f9 \ubd80\ubd84\uc744 \uac1c\uc120\ud558\uc5ec \uc0ac\uc6a9\uc790\uac00 \ud574\ub2f9 \ucf54\ub4dc\uc5d0\uc11c \ub9c8\uc74c \ub193\uace0 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4\ub294 \uc758\ubbf8\uc785\ub2c8\ub2e4.<\/p>\n<p>\uc774\ub7ec\ud55c \ud575\uc2ec \uc694\uc18c\ubfd0\ub9cc \uc544\ub2c8\ub77c KMP\uc5d0\ub294 \ud604\uc7ac \uc791\uc5c5\uc774 \uc9c4\ud589 \uc911\uc778 \ud55c\uce35 \ubc1c\uc804\ub41c \uae30\ub2a5\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. expect\/actual \ud074\ub798\uc2a4\ub294 \uc774\ub7ec\ud55c \uae30\ub2a5\uc758 \uc608\uc785\ub2c8\ub2e4(Kotlin 1.9.20\uc5d0\uc11c \uc644\uc804\ud788 \uc548\uc815\ud654\ub41c expect\/actual <em>\ud568\uc218<\/em>\uc640 \ud63c\ub3d9\ud558\uc9c0 \ub9c8\uc138\uc694). \uc774\ub7ec\ud55c \uae30\ub2a5\uc740 \uba85\uc2dc\uc801\uc73c\ub85c \uc548\uc815\ud654\ub418\uc9c0 \uc54a\uc558\ub2e4\uace0 \ud45c\uc2dc\ub418\uba70 \uc0ac\uc6a9\ud560 \uc218 \uc788\uac8c \ub418\uba74 Kotlin\uc5d0\uc11c \uc54c\ub824 \ub4dc\ub9b4 \uc608\uc815\uc785\ub2c8\ub2e4. \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c \uc774\ub7ec\ud55c \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud560\uc9c0 \uc5ec\ubd80\uc5d0 \ub300\ud574 \ud604\uba85\ud55c \ud310\ub2e8\uc744 \ub0b4\ub9ac\ub824\uba74 \uc2e4\ud5d8\uc801 \ub2e8\uacc4\uc784\uc744 \ub098\ud0c0\ub0b4\ub294 \uacbd\uace0\uc640 \ud574\ub2f9 \ubb38\uc11c\ub97c \uc798 \uc0b4\ud53c\uc138\uc694.<\/p>\n<p><strong>\uc0ac\uc6a9\uc790\uc758 \ube4c\ub4dc \uc124\uc815 \uacbd\ud5d8 \uac1c\uc120<\/strong><\/p>\n<p>\ud504\ub85c\uc81d\ud2b8 \uc124\uc815\uacfc \uc720\uc9c0 \uad00\ub9ac\ub97c \ub2e8\uc21c\ud654\ud558\uae30 \uc704\ud574 <a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1920.html#template-for-configuring-multiplatform-projects\" target=\"_blank\" rel=\"noreferrer noopener\">\ub514\ud3f4\ud2b8 \uacc4\uce35 \uad6c\uc870 \ud15c\ud50c\ub9bf<\/a>\uc744 \ub3c4\uc785\ud588\uc2b5\ub2c8\ub2e4. Kotlin Gradle \ud50c\ub7ec\uadf8\uc778\uc758 \uc774 \uc0c8\ub85c\uc6b4 \uae30\ub2a5\uc740 \ub110\ub9ac \uc0ac\uc6a9\ub418\ub294 \uc2dc\ub098\ub9ac\uc624\uc5d0 \ub9de\uac8c Kotlin \uc18c\uc2a4 \uc9d1\ud569\uc744 \uc790\ub3d9\uc73c\ub85c \uad6c\uc131\ud558\uace0 \uc77c\ubc18\uc801\uc778 \ube4c\ub4dc \uc2a4\ud06c\ub9bd\ud2b8\uc5d0\uc11c \uc0c1\uc6a9\uad6c\uc758 \uc591\uc744 \uc904\uc785\ub2c8\ub2e4.<\/p>\n<p>\ube4c\ub4dc \uad6c\uc131 \ubb38\uc81c\uc640 \uc624\ub958\ub97c \uc9c4\ub2e8\ud558\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub418\ub3c4\ub85d KMP\ub294 \uc548\uc815\ud654 \ubc84\uc804\uc5d0\uc11c \uba87 \uac00\uc9c0 \uac1c\uc120 \uc0ac\ud56d\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li>Kotlin Gradle \ud50c\ub7ec\uadf8\uc778\uc5d0\ub294 \uc57d 50\uac1c\uc758 \uc9c4\ub2e8 \uae30\ub2a5\uc774 \ucd94\uac00\ub418\uc5b4 \uc77c\ubc18\uc801\uc778 \ube4c\ub4dc \ubb38\uc81c\ub97c \ubc1c\uacac\ud558\uace0 \ud574\uacb0 \ubc29\ubc95\uc5d0 \ub300\ud55c \ube60\ub978 \ud301\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/li>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1820.html#improved-output-for-gradle-errors-in-xcode\" target=\"_blank\" rel=\"noopener\" data-type=\"link\" data-id=\"https:\/\/kotlinlang.org\/docs\/whatsnew1820.html#improved-output-for-gradle-errors-in-xcode\">Xcode\uc5d0\uc11c Gradle \uc624\ub958\uac00 \ubcf4\ub2e4 \ud6a8\uacfc\uc801\uc73c\ub85c \ucd9c\ub825<\/a>\ub418\uc5b4 \ud504\ub85c\uc81d\ud2b8\uc758 \ub124\uc774\ud2f0\ube0c \ubd80\ubd84\uc5d0\uc11c \ubc1c\uc0dd\ud558\ub294 \ube4c\ub4dc \ubb38\uc81c\ub97c \ub354 \uc27d\uac8c \ubc1c\uacac\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n<p><strong>\ube4c\ub4dc \ubc0f \ub7f0\ud0c0\uc784 \uc131\ub2a5<\/strong> <strong>\uac1c\uc120<\/strong><\/p>\n<p>\uae30\ud0c0 \uc548\uc815\uc131 \ubc0f \uacac\uace0\uc131 \uac1c\uc120 \uc678\uc5d0\ub3c4 JetBrains\ub294 KMP\uc758 \uc131\ub2a5\uc744 \uc9c0\uc18d\uc801\uc73c\ub85c \uac1c\uc120\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<ul>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1920.html#full-support-for-the-gradle-configuration-cache-in-kotlin-multiplatforml\" target=\"_blank\" rel=\"noreferrer noopener\">Gradle \uad6c\uc131 \uce90\uc2dc \uc9c0\uc6d0<\/a>\uc740 \uad6c\uc131 \ub2e8\uacc4\uc758 \uacb0\uacfc\ub97c \ud6c4\uc18d \ube4c\ub4dc\uc5d0 \uc7ac\uc0ac\uc6a9\ud558\uc5ec \ube4c\ub4dc \ud504\ub85c\uc138\uc2a4\uc758 \uc18d\ub3c4\ub97c \ub192\uc785\ub2c8\ub2e4.<\/li>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew19.html#preview-of-custom-memory-allocator\" target=\"_blank\" rel=\"noreferrer noopener\">Kotlin\/Native\uc758 \uc0ac\uc6a9\uc790 \uc9c0\uc815 \uba54\ubaa8\ub9ac \ud560\ub2f9\uc790<\/a> \ud14c\uc2a4\ud2b8 \ubc84\uc804\uc740 Kotlin\/Native \uba54\ubaa8\ub9ac \uad00\ub9ac\uc790\uc758 \ub7f0\ud0c0\uc784 \uc131\ub2a5\uc744 \ub192\uc5ec\uc90d\ub2c8\ub2e4.<\/li>\n<li>\uc2e4\ud5d8 \uc911\uc778 \uc0c8\ub85c\uc6b4 <a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1920.html#incremental-compilation-of-klib-artifacts\" target=\"_blank\" rel=\"noreferrer noopener\">&#8216;klib&#8217; \uc544\ud2f0\ud329\ud2b8\uc758 \uc99d\ubd84 \ucef4\ud30c\uc77c<\/a>\uc740 Kotlin\/Native \ucef4\ud30c\uc77c \uc18d\ub3c4\ub97c \ub192\uc785\ub2c8\ub2e4.<\/li>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1820.html#reimplementation-of-compiler-cache-management-in-the-compiler\" target=\"_blank\" rel=\"noreferrer noopener\">Kotlin\/Native \ucef4\ud30c\uc77c\ub7ec \uce90\uc2dc \uad00\ub9ac<\/a>\ub97c Kotlin Gradle \ud50c\ub7ec\uadf8\uc778\uc5d0\uc11c \ucef4\ud30c\uc77c\ub7ec\ub85c \uc774\ub3d9\ud558\uba74 \ucef4\ud30c\uc77c\ud0c0\uc784\uacfc \ucef4\ud30c\uc77c\ub7ec \uce90\uc2dc \uc720\uc5f0\uc131\uc774 \ub354\uc6b1 \ud5a5\uc0c1\ub429\ub2c8\ub2e4.<\/li>\n<\/ul>\n<p><strong>\uc774\ub7ec\ud55c \ubaa8\ub4e0 \uac1c\uc120\uc5d0 \ud798 \uc785\uc5b4 Kotlin Multiplatform\uc740 \uac00\uc7a5 \ubcf4\uc218\uc801\uc778 \uc0ac\uc6a9 \uc2dc\ub098\ub9ac\uc624\uc5d0\uc11c\ub3c4 Android, iOS, \ub370\uc2a4\ud06c\ud1b1(JVM), \uc11c\ubc84 \uce21(JVM) \ubc0f \uc6f9 \uc804\ubc18\uc5d0\uc11c \ud504\ub85c\ub355\uc158 \ucf54\ub4dc\ub97c \uacf5\uc720\ud558\ub294 \ub370 \uc544\ubb34 \uac78\ub9bc\ub3cc \uc5c6\uc774 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/strong><\/p>\n<p align=\"center\"><a class=\"ek-link jb-download-button\" title=\"\uc2dc\uc791\ud558\uae30\" href=\"http:\/\/jetbrains.com\/help\/kotlin-multiplatform-dev\/get-started.html?utm_source=kotlinblog&amp;utm_medium=button&amp;utm_campaign=kmp-stable\" target=\"_blank\" rel=\"noopener\">Kotlin Multiplatform \uc2dc\uc791\ud558\uae30<\/a><\/p>\n<h2 class=\"wp-block-heading\">\uc131\uc7a5\ud558\ub294 Kotlin Multiplatform \uc5d0\ucf54\uc2dc\uc2a4\ud15c\uc758 \ud798\uc744 \ud65c\uc6a9\ud558\uc138\uc694<\/h2>\n<p>Kotlin Multiplatform\uc758 \ubc1c\uc804\uc740 \uae30\uc220 \uc790\uccb4\uc5d0\ub9cc \uad6d\ud55c\ub418\uc9c0 \uc54a\uace0 \uc804 \uc138\uacc4 \uc218\ucc9c \uba85\uc758 Kotlin \uac1c\ubc1c\uc790\uac00 \uc721\uc131\ud558\uba70 \ubc88\uc131\ud558\uace0 \uc788\ub294 \uc5d0\ucf54\uc2dc\uc2a4\ud15c\uc73c\ub85c \ud655\uc7a5\ub429\ub2c8\ub2e4. \ubca0\ud0c0 \uc774\ud6c4 KMP \ub77c\uc774\ube0c\ub7ec\ub9ac\uc758 \uc218\uac00 \ubc30\uac00\ub418\uc5b4 \ub124\ud2b8\uc6cc\ud0b9, \ub370\uc774\ud130 \uc2a4\ud1a0\ub9ac\uc9c0, \uc0b0\uc220, \ubd84\uc11d \ub4f1\uc744 \uc704\ud55c \ub2e4\uc591\ud55c \ub3c4\uad6c\uac00 \uc81c\uacf5\ub428\uc5d0 \ub530\ub77c \uc548\uc2ec\ud558\uace0 \ube60\ub974\uac8c \uc571\uc744 \uac1c\ubc1c\ud560 \uc218 \uc788\uac8c \ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-401835\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/11\/Libraries-2800x995.png\" alt=\"\" width=\"2800\" height=\"995\" \/><\/figure>\n<p>Google\uc758 Android \ud300\uc740 \uc2e4\ud5d8\uc801\uc778 <a href=\"https:\/\/developer.android.com\/kotlin\/multiplatform\" target=\"_blank\" rel=\"noreferrer noopener\">Jetpack \ub77c\uc774\ube0c\ub7ec\ub9ac\uc758 \uba40\ud2f0\ud50c\ub7ab\ud3fc \ubc84\uc804<\/a>\uc744 \uc81c\uacf5\ud558\uc5ec <strong>KMP \uc0ac\uc6a9\uc790\ub97c \uacc4\uc18d \uc9c0\uc6d0<\/strong>\ud558\uace0 \uc788\uc73c\uba70 \uc774\ubbf8 Collections, DataStore, Annotations \ubc0f Paging \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c Kotlin Multiplatform\uacfc \ud638\ud658\ub418\ub3c4\ub85d \ub9cc\ub4e4\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<p>KMP \uc5d0\ucf54\uc2dc\uc2a4\ud15c\uc740 \ub610\ud55c iOS \uac1c\ubc1c\uc790 \uacbd\ud5d8\uc744 \uc704\ud55c \ub2e4\uc591\ud55c \ub3c4\uad6c\ub3c4 \uc81c\uacf5\ud558\uba70, \ud2b9\ud788 Touchlab\uc758 <a href=\"https:\/\/touchlab.co\/tryskie\" target=\"_blank\" rel=\"noreferrer noopener\">SKIE<\/a>\uac00 \ub208\uc5d0 \ub755\ub2c8\ub2e4. SKIE\ub294 \uc911\uc694\ud55c Kotlin \ud0c0\uc785\uc744 \uc11c\ub85c \uc5f0\uacb0\ud558\uace0 \uc6d0\ud65c\ud55c \ucf54\ub8e8\ud2f4 \uc0c1\ud638 \uc6b4\uc6a9\uc131\uc744 \uad6c\ud604\ud558\ub294 Swift \uce5c\ud654\uc801\uc778 API \ub808\uc774\uc5b4\ub97c \uc81c\uacf5\ud558\ub294 Swift \ucf54\ub4dc\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4.<\/p>\n<h2 class=\"wp-block-heading\">Compose Multiplatform\uc73c\ub85c \ub354\uc6b1 \uc790\uc720\ub86d\uac8c \ucf54\ub4dc\ub97c \uacf5\uc720\ud558\uc138\uc694<\/h2>\n<p>JetBrains\uc758 \ucd5c\uc2e0 \uc120\uc5b8\uc801 \ud06c\ub85c\uc2a4 \ud50c\ub7ab\ud3fc UI \ud504\ub808\uc784\uc6cc\ud06c\uc778 <a href=\"https:\/\/www.jetbrains.com\/lp\/compose-multiplatform?utm_source=kotlinblog&amp;utm_medium=button&amp;utm_campaign=kmp-stable\" target=\"_blank\" rel=\"noreferrer noopener\" data-type=\"link\" data-id=\"https:\/\/www.jetbrains.com\/lp\/compose-multiplatform?utm_source=kotlinblog&amp;utm_medium=button&amp;utm_campaign=kmp-stable\">Compose Multiplatform<\/a>\uc740 \ub04a\uc784\uc5c6\uc774 \ud655\uc7a5\ub418\ub294 KMP \uc5d0\ucf54\uc2dc\uc2a4\ud15c\uc5d0\uc11c \uc911\uc694\ud55c \ubd80\ubd84\uc744 \ucc28\uc9c0\ud569\ub2c8\ub2e4. Compose Multiplatform\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc774\uc81c \uc644\uc804\ud55c \ucf54\ub4dc \uacf5\uc720\uc758 \uc720\uc5f0\uc131\uc744 \ub204\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud504\ub85c\uc81d\ud2b8 \ubc0f \ud300\uc758 \uc694\uad6c \uc0ac\ud56d\uc5d0 \ub530\ub77c \ub85c\uc9c1\uc758 \ud55c \ubd80\ubd84, \ubaa8\ub4e0 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ub85c\uc9c1 \ub610\ub294 \ub85c\uc9c1\uacfc UI \ubaa8\ub450\ub97c \uacf5\uc720\ud558\uc138\uc694.<\/p>\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-401808\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/11\/image.png\" alt=\"\" width=\"1600\" height=\"466\" \/><\/figure>\n<p>Android \ubc0f \ub370\uc2a4\ud06c\ud1b1(JVM)\uc6a9 Compose Multiplatform\uc740 \uc774\ubbf8 \uc548\uc815\ud654 \ub2e8\uacc4\uc774\uba70, iOS\uc5d0 \ub300\ud55c \uc9c0\uc6d0\uc740 \ud604\uc7ac \uc54c\ud30c \ub2e8\uacc4\uc774\uace0 \uc6f9(Wasm) \uc9c0\uc6d0\uc740 \uc2e4\ud5d8\uc801 \ub2e8\uacc4\uc785\ub2c8\ub2e4.<\/p>\n<h2 class=\"wp-block-heading\">Kotlin Multiplatform\uc758 \ubbf8\ub798 \uc0b4\ud3b4\ubcf4\uae30<\/h2>\n<p>JetBrains\ub294 Kotlin\uc744 \ud50c\ub7ab\ud3fc \uac04 \ucf54\ub4dc \uacf5\uc720\ub97c \uc704\ud55c \ucd5c\uace0\uc758 \ub3c4\uad6c\ub85c \ub9cc\ub4e4\uae30 \uc704\ud574 \uacc4\uc18d\ud574\uc11c Kotlin\uc744 \uc0ac\uc6a9\ud55c \uba40\ud2f0\ud50c\ub7ab\ud3fc \uac1c\ubc1c\uc744 \uac1c\uc120\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<ul>\n<li>\ud575\uc2ec Kotlin Multiplatform \uae30\uc220\uc5d0 \ub300\ud55c \ud5a5\ud6c4 \uc5c5\ub370\uc774\ud2b8\ub97c \ud1b5\ud574 Kotlin\uc5d0\uc11c Swift\ub85c\uc758 \uc9c1\uc811\uc801\uc778 \uc0c1\ud638 \uc6b4\uc6a9\uc131\uacfc SwiftPM \uc9c0\uc6d0\uc744 \ud3ec\ud568\ud574 iOS \uac1c\ubc1c\uc790 \uacbd\ud5d8\uc774 \uac1c\uc120\ub420 \uac83\uc785\ub2c8\ub2e4.<\/li>\n<li>iOS\uc6a9 Compose Multiplatform\uc758 \ub2e4\uc74c \ubaa9\ud45c\ub294 2024\ub144 \ubca0\ud0c0 \uc9c0\uc6d0\uc785\ub2c8\ub2e4.<\/li>\n<li>JetBrains\ub294 KMP\ub97c \ud1b5\ud55c \ud604\ub300\uc801 \uc6f9 \uac1c\ubc1c\uc744 \ucd09\uc9c4\ud558\uae30 \uc704\ud574 Kotlin\/Wasm\uc744 \uc801\uadf9\uc801\uc73c\ub85c \uac1c\ubc1c\ud558\uace0 \uc788\uc73c\uba70, \ub0b4\ub144\uc5d0 \uc6f9\uc6a9 Compose Multiplatform(Wasm)\uc758 \uc54c\ud30c \ubc84\uc804\uc744 \uc81c\uacf5\ud55c\ub2e4\ub294 \ubaa9\ud45c\ub97c \uac16\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n<p>\uc774\uac8c \uc804\ubd80\uac00 \uc544\ub2d9\ub2c8\ub2e4. \uc55e\uc73c\ub85c \uba87 \uc8fc \ub3d9\uc548 Kotlin Multiplatform \ub3c4\uad6c\uc758 \uc9c4\ud654\uc5d0 \uad00\ud55c \ud765\ubbf8\ub85c\uc6b4 \ubc1c\ud45c\uac00 \uc788\uc744 \uc608\uc815\uc774\ub2c8 \uacc4\uc18d \uc8fc\ubaa9\ud574 \uc8fc\uc138\uc694!<\/p>\n<h2 class=\"wp-block-heading\">Kotlin Multiplatform \uc2dc\uc791\ud558\uae30<\/h2>\n<p>\ud3ec\uad04\uc801\uc774\uace0 \uc0ac\uc6a9\uc790 \uce5c\ud654\uc801\uc778 \uad50\uc721 \uc790\ub8cc\ub97c \uc774\uc6a9\ud574 \uc5ec\uc815\uc744 \uc2dc\uc791\ud558\uc138\uc694.<\/p>\n<p><strong>Kotlin Multiplatform \uc6e8\ube44\ub098 11\uc6d4 \uc2dc\ub9ac\uc988<\/strong>\uc5d0 \ucc38\uc5ec\ud558\uc5ec JetBrains \uc804\ubb38\uac00\ub85c\ubd80\ud130 \uc9c1\uc811 \uc778\uc0ac\uc774\ud2b8\uc744 \uc5bb\uc73c\uc138\uc694! Kotlin Multiplatform \uae30\ub2a5\uc744 \uc0b4\ud3b4\ubcf4\uace0, \ub124\uc774\ud2f0\ube0c UI\uc640 \uacf5\uc720 UI\ub97c \ubaa8\ub450 \uc0ac\uc6a9\ud558\uc5ec KMP \uc571\uc744 \ube4c\ub4dc\ud558\uace0, iOS \uac1c\ubc1c\uc744 \uc704\ud55c \ud301\uacfc \uc694\ub839\uc744 \uc54c\uc544\ubcf4\uc138\uc694.<\/p>\n<p align=\"center\"><a class=\"ek-link jb-download-button\" title=\"\ub4f1\ub85d\ud558\uae30\" href=\"https:\/\/info.jetbrains.com\/kotlin-webinars-2023.html?utm_source=kotlinblog&amp;utm_medium=button&amp;utm_campaign=kmp-stable\" target=\"_blank\" rel=\"noopener\">\uc6e8\ube44\ub098 \ub4f1\ub85d\ud558\uae30<\/a><\/p>\n<p>\uc0c8\ub85c\uc6b4 <strong>Kotlin Multiplatform \uac1c\ubc1c \ud3ec\ud138<\/strong>\uc5d0\uc11c Kotlin Multiplatform \ubc0f Compose Multiplatform\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc571\uc744 \ube4c\ub4dc\ud558\uae30 \uc704\ud55c \ubaa8\ub4e0 \uce21\uba74\uc744 \ub2e4\ub8e8\ub294 \uc0c1\uc138\ud55c \ubb38\uc11c, \uc2dc\uc791 \uac00\uc774\ub4dc \ubc0f \ub2e8\uacc4\ubcc4 \ud29c\ud1a0\ub9ac\uc5bc\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/p>\n<p align=\"center\"><a class=\"ek-link jb-download-button\" title=\"\uc2dc\uc791\ud558\uae30\" href=\"http:\/\/jetbrains.com\/help\/kotlin-multiplatform-dev\/get-started.html?utm_source=kotlinblog&amp;utm_medium=button&amp;utm_campaign=kmp-stable\" target=\"_blank\" rel=\"noopener\">Kotlin Multiplatform \uc2dc\uc791\ud558\uae30<\/a><\/p>\n<p><em>\uac8c\uc2dc\ubb3c \uc6d0\ubb38 \uc791\uc131\uc790<\/em><\/p>\n\n    <div class=\"about-author \">\n        <div class=\"about-author__box\">\n            <div class=\"row\">\n                <div class=\"about-author__box-img\">\n                    <img decoding=\"async\" src=\"https:\/\/secure.gravatar.com\/avatar\/?s=200&#038;r=g\" width=\"200\" height=\"200\" alt=\"\" loading=\"lazy\"  class=\"avatar avatar-200 wp-user-avatar wp-user-avatar-200 photo avatar-default\">\n                <\/div>\n                <div class=\"about-author__box-text\">\n                                                        <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n","protected":false},"author":964,"featured_media":405331,"comment_status":"closed","ping_status":"closed","template":"","categories":[956],"tags":[6706,6436,76],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/kotlin\/405322"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/kotlin"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/types\/kotlin"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/users\/964"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/comments?post=405322"}],"version-history":[{"count":10,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/kotlin\/405322\/revisions"}],"predecessor-version":[{"id":405355,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/kotlin\/405322\/revisions\/405355"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/media\/405331"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/media?parent=405322"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/categories?post=405322"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/tags?post=405322"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/cross-post-tag?post=405322"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}