Kotlin
A concise multiplatform language developed by JetBrains
Kotlin 1.6.20 ์ถ์
๋ชฉ์ฐจ
Kotlin 1.6.20์ด ๊ณต์ ์ถ์๋์์ต๋๋ค. ํฅํ ์ธ์ด ๊ธฐ๋ฅ์ ํ ์คํธ ๋ฒ์ ์ ์ ๊ณตํ๊ณ , ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋ฉํฐํ๋ซํผ ํ๋ก์ ํธ์ ๋ํดํธ ๊ฐ์ผ๋ก ์ค์ ํ๋ฉฐ, JVM, JS ๋ฐ Native ํ๋ซํผ์ ์ฑ๋ฅ์ ๊ฐ์ ํฉ๋๋ค.
์ด ๋ธ๋ก๊ทธ ๊ธ์์๋ ๋ค์ ๊ฐ์ ์ฌํญ์ ๋ํ ๊ฐ์์ ๋๋ถ์ด ๋ค๋ฅธ ์ ์ง์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํ ์ ์ฒด ๋ชฉ๋ก์ ํ์ธํ ์ ์์ต๋๋ค.
- ์ปจํ ์คํธ ๋ฆฌ์๋ฒ์ ํ๋กํ ํ์ ์ด ๊ตฌํ๋์ด, Kotlin/JVM์์ ์ปจํ ์คํธ์ ์์กด์ ์ธ ์ ์ธ ์ ์๋ฅผ ์๋กญ๊ฒ ์ง์.
- ํ์ ์ ์ผ๋ก null ๊ฐ๋ฅํ์ง ์์ ํ์ ์ผ๋ก ์ ๋ค๋ฆญ Java ํด๋์ค ๋ฐ ์ธํฐํ์ด์ค์ ์ํธ ์ด์ฉ์ฑ ๊ฐ์ .
- JVM IR ๋ฐฑ์๋์์ ๋จ์ผ ๋ชจ๋์ ๋ณ๋ ฌ๋ก ์ปดํ์ผํ ์ ์๊ฒ ๋์ด ๋น๋ ํ์์ด ๋์ฑ ๋นจ๋ผ์ง.
- Kotlin/JS IR์์ ์ฆ๋ถ ์ปดํ์ผ์ ํตํด ์ํํ ๊ฐ๋ฐ ๊ฒฝํ ์ง์.
- Kotlin/Native ์ฑ๋ฅ ๊ฐ์ .
- ๋ฉํฐํ๋ซํผ ํ๋ก์ ํธ์ ๊ณ์ธต ๊ตฌ์กฐํ๋ก ์ด์ ๋ณด๋ค ์์ฝ๊ฒ ์ฝ๋ ๊ณต์ .
์ ๋ฐ์ดํธ ๋ฐฉ๋ฒ
IntelliJ IDEA ๋๋ Android Studio๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ์๋ก์ด Kotlin ๋ฆด๋ฆฌ์ค๊ฐ ์ถ์๋๋ ์ฆ์ ์๋์ผ๋ก ์ ๋ฐ์ดํธํ ์ ์๋ ์ต์ ์ด ์ ๊ณต๋ฉ๋๋ค.
Kotlin 1.6.20์ผ๋ก ์ ๋ฐ์ดํธ
์ฃผ์ ์ ๋ฐ์ดํธ
Kotlin/JVM์ฉ ์ปจํ ์คํธ ๋ฆฌ์๋ฒ ํ๋กํ ํ์
Kotlin 1.6.20์์๋ ๋ฆฌ์๋ฒ ๊ฐ์๊ฐ ํ๋๋ก ์ ํ๋์ง ์์ต๋๋ค. ๋ ๋ง์ด ํ์ํ ๊ฒฝ์ฐ ์ ์ธ์ ์ปจํ ์คํธ ๋ฆฌ์๋ฒ๋ฅผ ์ถ๊ฐํ์ฌ ํจ์, ํ๋กํผํฐ ๋ฐ ํด๋์ค๋ฅผ ์ปจํ ์คํธ ์์กด์ ์ผ๋ก(ํน์ ์ปจํ ์คํธ ๊ธฐ๋ฐ) ๋ง๋ค๋ฉด ๋ฉ๋๋ค. ์ปจํ ์คํธ ๊ธฐ๋ฐ ์ ์ธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ชจ๋ ์ ์ธ๋ ์ปจํ ์คํธ ๋ฆฌ์๋ฒ๊ฐ ํธ์ถ์์ ๋ฒ์์์ ๋ฌต์์ ๋ฆฌ์๋ฒ๋ก ์์ด์ผ ํฉ๋๋ค.
- ์ ์ธ๋ ์ปจํ ์คํธ ๋ฆฌ์๋ฒ๋ฅผ ๋ณธ๋ฌธ ๋ฒ์์ ๋ฌต์์ ์ธ ๋ฆฌ์๋ฒ๋ก ๊ฐ์ ธ์ต๋๋ค.
ํ๋ก์ ํธ์์ ์ปจํ
์คํธ ๋ฆฌ์๋ฒ๋ฅผ ํ์ฑํํ๋ ค๋ฉด, -Xcontext-receivers
์ปดํ์ผ๋ฌ ์ต์
์ ์ฌ์ฉํ์ธ์. ์ด ๊ธฐ๋ฅ ๋ฐ ๊ตฌ๋ฌธ์ ์์ธํ ์ค๋ช
์ KEEP์์ ํ์ธํ ์ ์์ต๋๋ค.
์ด๋ฒ ๊ตฌํ์ ํ๋กํ ํ์ ์ธ ์ ์ ์ ์ํ์ธ์.
-Xcontext-receivers
๊ฐ ํ์ฑํ๋ ์ํ์์ ์ปดํ์ผ๋ฌ๋ ํ๋ก๋์ ์ฝ๋์์ ์ฌ์ฉํ ์ ์๋ ์ฌ์ ๋ฆด๋ฆฌ์ค ๋ฐ์ด๋๋ฆฌ๋ฅผ ์์ฑํฉ๋๋ค.- ํ์ฌ IDE๋ ์ปจํ ์คํธ ๋ฆฌ์๋ฒ๋ฅผ ์ต์ํ์ ์์ค์ผ๋ก ์ง์ํฉ๋๋ค.
ํ์ ์ ์ผ๋ก null ๊ฐ๋ฅํ์ง ์์ ํ์
์ ๋ค๋ฆญ Java ํด๋์ค ๋ฐ ์ธํฐํ์ด์ค๋ฅผ ํ์ฅํ ๋ ์ํธ ์ด์ฉ์ฑ์ ๊ฐ์ ํ๊ธฐ ์ํด Kotlin 1.6.20์์๋ ์ ๋ค๋ฆญ ํ์
๋งค๊ฐ๋ณ์๋ฅผ T & Any
๊ฐ ์ฌ์ฉ๋๋ ๊ณณ์์ ํ์ ์ ์ผ๋ก null ๊ฐ๋ฅํ์ง ์์ ํ์
์ผ๋ก ํ์ํ ์ ์์ต๋๋ค. ๊ตฌ๋ฌธ ํํ๋ ๊ต์ฐจ ํ์
ํ๊ธฐ์์ ์จ ๊ฒ์ด๋ฉฐ ์ด์ &
์ ์ผ์ชฝ์ ์๋ null ๊ฐ๋ฅ ์ํ์ ๊ณผ ์ค๋ฅธ์ชฝ์ null ๊ฐ๋ฅํ์ง ์์ Any
๋ฅผ ๊ฐ์ง ํ์
๋งค๊ฐ๋ณ์๋ก ์ ํ๋ฉ๋๋ค.
๊ธฐ๋ฅ์ ํ์ฑํํ๋ ค๋ฉด ์ธ์ด ๋ฒ์ ์ 1.7๋ก ์ค์ ํ์ธ์.
KEEP์์ ํ์ ์ ์ผ๋ก null ๊ฐ๋ฅํ์ง ์์ ํ์ ์ ๋ํด์ ๋ ์์๋ณด์ธ์.
ํ์ฌ ํ์ ์ ์ผ๋ก null ๊ฐ๋ฅํ์ง ์์ ํ์ ์ ๋ฒ ํ์ ๋๋ค. ๊ฑฐ์ ์์ ํ๊ฐ ๋์์ง๋ง ์ถํ์ ๋ง์ด๊ทธ๋ ์ด์ ๊ณผ์ ์ด ํ์ํ ์๋ ์์ต๋๋ค. ๋ณ๊ฒฝ ์ฌํญ์ ์ต์ํํ๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ฒ ์ต๋๋ค.
JVM IR ๋ฐฑ์๋์์ ํ๋์ ๋ชจ๋์ ๋ํ ๋ณ๋ ฌ ์ปดํ์ผ ์ง์
Kotlin 1.6.20์์ ํ๋์ ๋ชจ๋์ ์๋ ๋ชจ๋ ํ์ผ์ ๋ณ๋ ฌ๋ก ์ปดํ์ผํ๋ ์คํ์ ์ธ ๊ธฐ๋ฅ์ธ JVM IR ๋ฐฑ์๋ ๋ชจ๋๋ฅผ ์ถ๊ฐํ์์ต๋๋ค. ๋ณ๋ ฌ ์ปดํ์ผ์ ์ด ์ปดํ์ผ ์๊ฐ์ ์ต๋ 15%๊น์ง ์ค์ผ ์ ์์ต๋๋ค.
compiler option -Xbackend-threads
๋ก ์คํ์ ๋ณ๋ ฌ ๋ฐฑ์๋ ๋ชจ๋๋ฅผ ํ์ฑํํ์ธ์. ์ด ์ต์
์ ๋ค์์ ์ธ์๋ฅผ ์ฌ์ฉํ์ธ์.
N
์ ์ฌ์ฉํ๊ณ ์ถ์ ์ค๋ ๋์ ์์ ๋๋ค. CPU ์ฝ์ด ์๋ฅผ ์ด๊ณผํด์๋ ์๋ฉ๋๋ค. ์ด๊ณผํ๋ ๊ฒฝ์ฐ ์ปจํ ์คํธ๊ฐ ์ค๋ ๋ ๊ฐ์ ์ ํ๋์ด ํจ์จ์ ์ผ๋ก ๋ณ๋ ฌํ๋์ง ์์ต๋๋ค.0
์ผ๋ก CPU ์ฝ์ด๋น 1๊ฐ ์ค๋ ๋๋ฅผ ์ฌ์ฉ
Gradle์ ์์ ์ ๋ณ๋ ฌ๋ก ์คํํ ์ ์์ง๋ง, Gradle์ ๊ด์ ์์ ํ๋ก์ ํธ(ํน์ ํ๋ก์ ํธ์ ์ฃผ์ํ ๋ถ๋ถ)๊ฐ ํ๋์ ํฐ ์์ ์ผ ๋ฟ์ผ ๋๋ ์ด๋ฌํ ๋ณ๋ ฌํ๊ฐ ๋ณ๋ก ๋์๋์ง ์์ต๋๋ค. ๋งค์ฐ ํฐ ๋ชจ๋๋ฆฌ์ ๋ชจ๋์ด ์๋ ๊ฒฝ์ฐ ๋ณ๋ ฌ ์ปดํ์ผ์ ์ฌ์ฉํ์ฌ ๋ ๋น ๋ฅด๊ฒ ์ปดํ์ผํ์ธ์. ํ๋ก์ ํธ๊ฐ ๋ค์์ ์์ ๋ชจ๋๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ ๋น๋๊ฐ Gradle๋ก ๋ณ๋ ฌํ๋์ด ์๋ ๊ฒฝ์ฐ ๋ณ๋ ฌํ ๋ ์ด์ด๋ฅผ ์ถ๊ฐํ๋ฉด ์ปจํ ์คํธ ์ ํ์ผ๋ก ์ธํด ์ฑ๋ฅ์ ๋์ ์ํฅ์ ์ค ์ ์์ต๋๋ค.
๋ณ๋ ฌ ์ปดํ์ผ์๋ ์ผ๋ถ ์ ์ฝ์ด ์์ต๋๋ค.
- kapt๋ IR ๋ฐฑ์๋๋ฅผ ๋นํ์ฑํํ๊ธฐ ๋๋ฌธ์ kapt์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ค๊ณ์ JVM ํ์ด ๋ ํ์ํฉ๋๋ค. ํ์ํ heap์ ์์ ์ค๋ ๋ ์์ ๋น๋กํฉ๋๋ค.
Kotlin/JS IR ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ ๋ฐ์ด๋๋ฆฌ์์ ์ฆ๋ถ ์ปดํ์ผ ์ง์
IR ์ปดํ์ผ๋ฌ๋ฅผ ํ์ฉํ Kotlin/JS ๊ฐ๋ฐ์ ๋์ฑ ํจ์จํํ๊ธฐ ์ํด ์ฆ๋ถ ์ปดํ์ผ ๋ชจ๋๋ฅผ ๋์ ํ์ต๋๋ค.
์ด ๋ชจ๋์์ compileDevelopmentExecutableKotlinJs
Gradle ์์
์ด ์๋ ๊ฐ๋ฐ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋น๋ํ ๋๋ ์ปดํ์ผ๋ฌ๊ฐ ๋ชจ๋ ์์ค์์ ์ด์ ์ปดํ์ผ์ ๊ฒฐ๊ณผ๋ฅผ ์บ์์ ์ ์ฅํฉ๋๋ค. ์ด์ด์ง๋ ์ปดํ์ผ์์ ๋ณ๊ฒฝ ์ฌํญ์ด ์๋ ์์ค ํ์ผ์ ์บ์๋ ์ปดํ์ผ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก, ํนํ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ์ ๋ ์ปดํ์ผ ์๋ฃ ์๋๊ฐ ๋นจ๋ผ์ง๋๋ค. ์ด ๊ฐ์ ์ฌํญ์ ๊ฐ๋ฐ ํ๋ก์ธ์ค์๋ง ์ ์ฉ๋๋ฉฐ(ํธ์ง-๋น๋-๋๋ฒ๊ทธ ์ฌ์ดํด ๋จ์ถ) ํ๋ก๋์
์ํฐํฉํธ ๋น๋์๋ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค.
๊ฐ๋ฐ ๋ฐ์ด๋๋ฆฌ์ ์ฆ๋ถ ์ปดํ์ผ์ ํ์ฑํํ๋ ค๋ฉด, ๋ค์ ์ค์ ํ๋ก์ ํธ์ gradle.properties
์ ์ถ๊ฐํ์ธ์.
ํ ์คํธ ํ๋ก์ ํธ์์ ์๋ก์ด ๋ชจ๋๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ์ฆ๋ถ ์ปดํ์ผ์ด ์ต๋ 30% ๋นจ๋์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด ๋ชจ๋์์ ํด๋ฆฐ ๋น๋๋ ์บ์๋ฅผ ์์ฑํ๊ณ ์ค๋นํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ ๋๋ ธ์ต๋๋ค.
Kotlin/Native ์ฑ๋ฅ ๊ฐ์
Kotlin 1.6.20์๋ Koltin์ด ์์ฑํ๋ LLVM IR์ ์ํฅ์ ์ฃผ๋ ์ฑ๋ฅ ์ ๋ฐ์ดํธ์ ๋ฒ๊ทธ ์์ ์ด ์ผ๋ถ ํฌํจ๋์์ต๋๋ค. ์ ํฌ๊ฐ ๋ด๋ถ ํ๋ก์ ํธ์์ ๋ฒค์น๋งํฌ๋ฅผ ์คํํ ๊ฒฐ๊ณผ์ ๋ฐ๋ฅด๋ฉด ํ๊ท ์ฑ๋ฅ ํฅ์์ ๋ค์๊ณผ ๊ฐ์์ต๋๋ค.
- ์คํ ์๊ฐ 15% ๊ฐ์
- ๋ฆด๋ฆฌ์ค ๋ฐ ๋๋ฒ๊ทธ ๋ฐ์ด๋๋ฆฌ์ ์ฝ๋ ํฌ๊ธฐ 20% ๊ฐ์
- ๋ฆด๋ฆฌ์ค ๋ฐ์ด๋๋ฆฌ์ ์ปดํ์ผ ์๊ฐ 26% ๊ฐ์
์ด๋ฒ ๋ณ๊ฒฝ์ผ๋ก ๋๊ท๋ชจ ๋ด๋ถ ํ๋ก์ ํธ์์ ๋๋ฒ๊ทธ ๋ฐ์ด๋๋ฆฌ์ ์ปดํ์ผ ์๊ฐ๋ 10% ๊ฐ์ํ์ต๋๋ค.
์ด๋ฌํ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ธฐ ์ํด ์ปดํ์ผ๋ฌ๊ฐ ์์ฑํ ์ผ๋ถ ํตํฉ ๊ฐ์ฒด์ ์ ์ ์ด๊ธฐํ๋ฅผ ๊ตฌํํ๊ณ , ๋ชจ๋ ํจ์์ ๋ํด LLVM IR์ ๊ตฌ์กฐํํ๋ ๋ฐฉ๋ฒ์ ๊ฐ์ ํ์์ผ๋ฉฐ, ์ปดํ์ผ๋ฌ ์บ์๋ฅผ ์ต์ ํํ์ต๋๋ค.
๋ฉํฐ ํ๋ซํผ ํ๋ก์ ํธ์์ ๊ณ์ธต์ ๊ตฌ์กฐ ์ง์
Kotlin 1.6.20์๋ ๊ณ์ธต์ ๊ตฌ์กฐ ์ง์์ด ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. Kotlin 1.4.0์์ ์ด ๊ธฐ๋ฅ์ ๋์ ํ ์ดํ ํ๋ฐํธ์๋๋ฅผ ํฌ๊ฒ ๊ฐ์ ํ์์ผ๋ฉฐ IDE ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์์ ํํ์ต๋๋ค.
์ด์ ์ ๋ฉํฐํ๋ซํผ ํ๋ก์ ํธ์์ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง์์ต๋๋ค. ์ฒซ ๋ฒ์งธ๋ ํน์ ํ๋ซํผ์ฉ, ์ฆ ํ๋์ ๋์ ํ๋ซํผ ์ธ์ ๋ค๋ฅธ ํ๋ซํผ์์๋ ์ฌ์ฉํ ์ ์๋ ์์ค ์ธํธ์ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ด์์ต๋๋ค. ๋ ๋ฒ์งธ๋ Kotlin์์ ํ์ฌ ์ง์ํ๋ ๋ชจ๋ ํ๋ซํผ์์ ๊ณต์ ๋๋ ๊ณตํต ์์ค ์ธํธ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
์ด์ ๋ ๊ณตํต ๋ก์ง๊ณผ ํ์ฌ API๋ฅผ ๋ง์ด ์ฌ์ฌ์ฉํ๋ ์ฌ๋ฌ ๊ฐ์ ์ ์ฌํ ๋ค์ดํฐ๋ธ ๋์์์ ์์ค ์ฝ๋๋ฅผ ๊ณต์ ํ ์ ์์ต๋๋ค. ์ด ๊ธฐ์ ์ ์ ํํ ๋ํดํธ ์ข ์์ฑ์ ์ ๊ณตํ๋ฉฐ ๊ณต์ ๋ ์ฝ๋์์ ์ฌ์ฉํ ์ ์๋ ์ ํํ API๋ฅผ ์ฐพ์์ค๋๋ค. ์ด์ ๋ฐ๋ผ ๋ณต์กํ ๋น๋ ์ค์ ์ด ํ์ ์๊ณ , ์ฌ๋ฌ ๋ค์ดํฐ๋ธ ๋์์์ ์ฝ๋ ์ธํธ๋ฅผ ๊ณต์ ํ ์ ์๋ IDE ์ง์์ ์ป๊ธฐ ์ํด ํด๊ฒฐ์ฑ ์ ์ฌ์ฉํ ํ์๋ ์์ด์ก์ต๋๋ค. ๋ํ, ๋ค๋ฅธ ๋์์ ์ฌ์ฉํด์ผ ํ API๋ฅผ ์์ ํ์ง ์๊ฒ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
์ด ๊ธฐ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ฑ์์๊ฒ๋ ํธ๋ฆฌํฉ๋๋ค. ๊ณ์ธต์ ํ๋ก์ ํธ ๊ตฌ์กฐ๊ฐ ์ง์๋๋ฉด ๋์์ ํ์ ์ธํธ์์ ์ธ ์ ์๋ ๊ณตํต API๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฒ์ํ๊ณ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๊ณ์ธต์ ํ๋ก์ ํธ ๊ตฌ์กฐ๋ก ๊ฒ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๊ณ์ธต์ ๊ตฌ์กฐ์ ํ๋ก์ ํธ์๋ง ํธํ๋ฉ๋๋ค. ํ๋ก์ ํธ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธํ์ฑ์ ๋ํด ์์ธํ ์์๋ณด์ธ์.
๊ฐ์ ๋ ํ๋ก์ ํธ ๋ด ์ฝ๋ ๊ณต์
๊ณ์ธต์ ๊ตฌ์กฐ๊ฐ ์ง์๋์ง ์์ผ๋ฉด ์ผ๋ถ Kotlin ๋์ ๊ฐ์ ์ฝ๋๋ฅผ ๊ณต์ ํ ์๋ ์์ด๋ ๋ชจ๋ ๋์ ๊ฐ์ ์ฝ๊ฒ ๊ณต์ ํ ๋ฐฉ๋ฒ์ ์์ต๋๋ค. ๋ํ์ ์ธ ์์๋ ๋ชจ๋ iOS ๋์์์ ์ฝ๋๋ฅผ ๊ณต์ ํ๋ฉด์ Foundation
๊ณผ ๊ฐ์ iOS์ฉ ์ข
์์ฑ์ ์ก์ธ์คํ๋ ๊ฒ์
๋๋ค.
์ด์ ๊ณ์ธต์ ํ๋ก์ ํธ ๊ตฌ์กฐ๊ฐ ์ง์๋๋ฏ๋ก ๋ณ๋ ์ค์ ์์ด ์ด๋ฅผ ๋ฐ๋ก ์คํํ ์ ์์ต๋๋ค. ์๋ก์ด ๊ตฌ์กฐ์์ ์์ค ์ธํธ๋ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ํ์ฑํฉ๋๋ค. ์์ค ์ธํธ๊ฐ ์ปดํ์ผ๋๋ ๊ฐ ๋์์์ ์ง์๋๋ ํ๋ซํผ์ฉ ์ธ์ด ๊ธฐ๋ฅ๊ณผ ์ข ์์ฑ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
iOS ๊ธฐ๊ธฐ ๋ฐ ์๋ฎฌ๋ ์ดํฐ์ฉ์ผ๋ก iosArm64
๋ฐ iosX64
๋ผ๋ 2๊ฐ์ ๋์์ ๊ฐ์ง ์ผ๋ฐ์ ๋ฉํฐํ๋ซํผ ํ๋ก์ ํธ๋ฅผ ์์๋ก ๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. Kotlin ๋๊ตฌ๋ ๋ ๋์ ๋ชจ๋ ๊ฐ์ ํจ์๋ฅผ ๊ฐ๊ณ ์๋ค๋ ๊ฒ์ ์ธ์งํ๋ฉฐ ์ฌ์ฉ์๊ฐ ์ค๊ฐ ์์ค ์ธํธ์ธ iosMain
์ ํจ์์ ์ก์ธ์คํ ์ ์๊ฒ ํฉ๋๋ค.
Kotlin ํด์ฒด์ธ์ Kotlin/Native stdlib ํน์ ๋ค์ดํฐ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ์ ์ฌ๋ฐ๋ฅธ ๋ํดํธ ์ข ์์ฑ์ ์ ๊ณตํฉ๋๋ค. ๋ํ Kotlin ๋๊ตฌ๋ ๊ณต์ ๋ ์ฝ๋์์ ์ด์ฉํ ์ ์๋ API ์ํผ์ค ์์ญ์ ์ ํํ ์ฐพ๊ธฐ ์ํด ๋ ธ๋ ฅํฉ๋๋ค. ์ด๋ Windows์ ๊ณต์ ๋๋ ์ฝ๋์ macOS์ฉ ํจ์๊ฐ ์ฌ์ฉ๋๋ ๊ฒ๊ณผ ๊ฐ์ ์ฌ๋ก๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ฑ์์๊ฒ ๋ ๋ง์ ๊ธฐํ
์ด์ ๋ฉํฐํ๋ซํผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๊ฒ์๋๋ฉด, ์ค๊ฐ ์์ค ์ธํธ์ API๊ฐ ํจ๊ป ์ ์ ํ ๊ฒ์๋์ด ์๋น์๋ค์ด ์ฌ์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค. Kotlin ํด์ฒด์ธ์ด ์๋น์ ์์ค ์ธํธ์์ ์ฌ์ฉํ ์ ์๋ API๋ฅผ ์๋์ผ๋ก ํ์ ํ๋ฉฐ, JS ์ฝ๋์์ JVM์ฉ API๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ฐ์ ์์ ํ์ง ์์ ์ฌ์ฉ์ ๊ฐ์ํฉ๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ฝ๋๋ฅผ ๊ณต์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์ธํ ์์๋ณด์ธ์.
๊ตฌ์ฑ ๋ฐ ์ค์
Kotlin 1.6.20๋ถํฐ ๋ชจ๋ ์ ๊ท ๋ฉํฐํ๋ซํผ ํ๋ก์ ํธ๋ ๊ณ์ธต์ ํ๋ก์ ํธ ๊ตฌ์กฐ๋ฅผ ๊ฐ๊ฒ ๋ฉ๋๋ค. ์ถ๊ฐ์ ์ธ ์ค์ ์ด ํ์ํ์ง ์์ต๋๋ค.
- ์ด๋ฏธ ์๋์ผ๋ก ์ผ ๊ฒฝ์ฐ
gradle.properties
์์ ์ง์ ์ค๋จ๋ ์ต์ ์ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
- ์ฌ์ฉ์ ๊ฒฝํ์ ์ต์ ํํ๊ธฐ ์ํด Kotlin 1.6.20์๋ Android Studio 2021.1.1(Bumblebee) ํน์ ์ดํ ๋ฒ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- ์ด ๊ธฐ๋ฅ์ ์ ํ ํด์ ํ ์๋ ์์ต๋๋ค. ๊ณ์ธต์ ๊ตฌ์กฐ ์ง์์ ๋นํ์ฑํํ๋ ค๋ฉด,
gradle.properties
์์ ๋ค์์ ์ต์ ์ ์ค์ ํ์ธ์.
๊ฐ์ ์ ์ ์ฒด ๋ชฉ๋ก
์ธ์ด
Kotlin/JVM
- ์ธํฐํ์ด์ค์ฉ ์ ๊ท
@JvmDefaultWithCompatibility
์ด๋ ธํ ์ด์ -Xjvm-default`
๋ชจ๋์ ํธํ์ฑ ๋ณ๊ฒฝ- JVM IR ๋ฐฑ์๋์์ ํ๋์ ๋ชจ๋์ ๋ํ ๋ณ๋ ฌ ์ปดํ์ผ ์ง์
- ํจ์ ์ธํฐํ์ด์ค ์์ฑ์์ ๋ํ ํธ์ถ ๊ฐ๋ฅํ ์ฐธ์กฐ ์ง์
Kotlin/Native
- ์ ๊ท ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ์ ๋ฐ์ดํธ
- ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์๋ก Sweep Phase์์ ๋์ ๊ตฌํ
- ์ด๋ ธํ ์ด์ ํด๋์ค์ ์ธ์คํด์คํ
- Swift async/await๊ณผ ์ํธ ์ด์ฉ:
KotlinUnit
๋์Void<0> ๋ฐํ
libbacktrace
์ผ๋ก ๊ฐ์ ๋ ์คํ ์ถ์ ๋จ๋ ํ Android ์คํ ํ์ผ ์ง์
์ฑ๋ฅ ๊ฐ์ ์ฌํญ
Cinterop ๋ชจ๋์ ๊ฐ์ ธ์ฌ ๋ ๊ฐ์ ๋ ์ค๋ฅ ์ฒ๋ฆฌ
Xcode 13 ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ง์
Kotlin ๋ฉํฐํ๋ซํผ
- ๋ฉํฐํ๋ซํผ ํ๋ก์ ํธ์์ ๊ณ์ธต์ ๊ตฌ์กฐ ์ง์
- Kotlin CocoaPods Gradle ํ๋ฌ๊ทธ์ธ ์ ๋ฐ์ดํธ
Kotlin/JS
- IR ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ ๋ฐ์ด๋๋ฆฌ์์ ์ฆ๋ถ ์ปดํ์ผ ์ง์
- IR ์ปดํ์ผ๋ฌ์์ ์ต์์ ํ๋กํผํฐ๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ฐ ์ด๊ธฐํ
- IR ์ปดํ์ผ๋ฌ๋ก ํ๋ก์ ํธ ๋ชจ๋์ฉ JS ํ์ผ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ถ๋ฆฌ
Char
ํด๋์ค ์ต์ ํ- ๋ด๋ณด๋ด๊ธฐ ๋ฐ TypeScript ์ ์ธ ์์ฑ ๊ฐ์
- ๋น๋๊ธฐ ํ
์คํธ์
@AfterTest
๋ณด์ฆ
๋ณด์
- klibs์์ ์๋ ๊ฒฝ๋ก ์ฌ์ฉ
- Kotlin/JS Gradle ํ๋ก์ ํธ์์ ์ง์ํ๋
yarn.lock
- ๊ธฐ๋ณธ์ ์ผ๋ก
--ignore-scripts
์ ์ฌ์ฉํ์ฌ npm ์ข ์์ฑ ์ค์น
Gradle
- Kotlin ์ปดํ์ผ๋ฌ ์คํ ์ ๋ต ์ ์๋ฅผ ์ํ ํ๋กํผํฐ
- kapt ๋ฐ ์ฝ๋ฃจํด์ ๋น๋ ์ต์ ์ค๋จ
kotlin.parallel.tasks.in.project
๋น๋ ์ต์ ์ ๊ฑฐ
Kotlin 1.6.20 ์ค์น ๋ฐฉ๋ฒ
์ด๋ฏธ IntelliJ IDEA ๋๋ Android Studio๋ฅผ ์ฌ์ฉํ๊ณ ์๋ ๊ฒฝ์ฐ IDE์์ ์๋์ผ๋ก Kotlin์ 1.6.20์ผ๋ก ์ ๋ฐ์ดํธํ ๊ฒ์ ์ ์ํฉ๋๋ค. ๋ํ ์ด ์ง์นจ์ ๋ฐ๋ผ ์ง์ ์ ๋ฐ์ดํธํ ์๋ ์์ต๋๋ค.
๋ค์ IDE์ ์ต์ ๋ฒ์ ์ ๋ค์ด๋ก๋ํ์ฌ ๊ด๋ฒ์ํ Kotlin ์ง์์ ๋ฐ์ ์ ์์ต๋๋ค.
- IntelliJ IDEA โ ๋ค์ํ ํ๋ซํผ ์ฉ Kotlin ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ง์
- Android Studio โ Android ๋ฐ ํฌ๋ก์ค ํ๋ซํผ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ์ง์
๋ํ kotlinx ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํธํ๋๋ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํ๊ณ ๊ธฐ์กด ํ๋ก์ ํธ์ ๋น๋ ์คํฌ๋ฆฝํธ์ Kotlin ๋ฒ์ 1.6.20์ ์ง์ ํ๋์ง ํ์ธํ์ธ์.
๋ช ๋ น์ค ์ปดํ์ผ๋ฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ, Github ๋ฆด๋ฆฌ์ค ํ์ด์ง์์ ๋ค์ด๋ก๋ํ์ธ์.
๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ
- Slack(์ด๋ ๋ฐ๊ธฐ)์์ ๋์๋ง์ ์ฐพ์๋ณด์ธ์.
- JetBrains ์ด์ ํธ๋์ปค์ธ YouTrack์ ๋ณด๊ณ ํด ์ฃผ์ธ์.
์ต์ Kotlin ๊ธฐ๋ฅ์ ๋ํ ์ต์ ์ ๋ณด๋ฅผ ๋ฐ์๋ณด์ธ์! ์ด ๊ฒ์๋ฌผ์ ์ค๋ฅธ์ชฝ์ ์๋ ์์์ ์์ฑํ์๋ฉด Kotlin ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ์๋ณด์ค ์ ์์ต๋๋ค.
๊ธฐํ ์ ์ฉํ ๊ธ๊ณผ ์์
- Kotlin ๋ก๋๋งต
- Kotlin 1.6.20์ ์๋ก์ด ๊ธฐ๋ฅ ๋ฌธ์
- Kotlin 1.6์ ํธํ์ฑ ๊ฐ์ด๋
- Kotlin 1.6.0 ์ถ์!
๊ฒ์๋ฌผ ์๋ฌธ ์์ฑ์
Subscribe to Kotlin Blog updates
- Kotlin/JVM์ฉ ์ปจํ ์คํธ ๋ฆฌ์๋ฒ ํ๋กํ ํ์
- ํ์ ์ ์ผ๋ก null ๊ฐ๋ฅํ์ง ์์ ํ์
- JVM IR ๋ฐฑ์๋์์ ํ๋์ ๋ชจ๋์ ๋ํ ๋ณ๋ ฌ ์ปดํ์ผ ์ง์
- Kotlin/JS IR ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ ๋ฐ์ด๋๋ฆฌ์์ ์ฆ๋ถ ์ปดํ์ผ ์ง์
- Kotlin/Native ์ฑ๋ฅ ๊ฐ์
- ๋ฉํฐ ํ๋ซํผ ํ๋ก์ ํธ์์ ๊ณ์ธต์ ๊ตฌ์กฐ ์ง์
- ์ธ์ด
- Kotlin/JVM
- Kotlin/Native
- Kotlin ๋ฉํฐํ๋ซํผ
- Kotlin/JS
- ๋ณด์
- Gradle