Kotlin 2.1.10 ๋ณ€๊ฒฝ์ 

2025. 2. 27. 18:00ยทLanguages/Kotlin

Kotlin 2.1.10์˜ ์•ˆ์ •์ ์ธ ์ตœ์‹  ๋ฒ„์ „ ๋ถ„์„ ๋ฐ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌ์•ˆ ํ‰๊ฐ€

์ฝ”ํ‹€๋ฆฐ 2.1.10์€ 2025๋…„ 2์›” ๊ธฐ์ค€ ์ตœ์‹  ์•ˆ์ •ํ™” ๋ฒ„์ „์œผ๋กœ, ์–ธ์–ด์˜ ์ง„ํ™”์™€ ์ƒํƒœ๊ณ„ ํ™•์žฅ์„ ์œ„ํ•œ ์ค‘๋Œ€ํ•œ ๊ฐœ์„  ์‚ฌํ•ญ๋“ค์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๋ณธ ๋ณด๊ณ ์„œ๋Š” ์ฝ”ํ‹€๋ฆฐ 2.1.x ์‹œ๋ฆฌ์ฆˆ์˜ ๊ธฐ์ˆ ์  ํ˜์‹ ์„ ๋‹ค์ธต์ ์œผ๋กœ ๋ถ„์„ํ•˜๋ฉฐ, ํŠนํžˆ K2 ์ปดํŒŒ์ผ๋Ÿฌ์˜ ์„ฑ๋Šฅ ์ตœ์ ํ™”์™€ ๋‹ค์ค‘ ํ”Œ๋žซํผ ์ง€์› ๊ฐ•ํ™”์— ์ดˆ์ ์„ ๋งž์ถฅ๋‹ˆ๋‹ค. ๊ณต์‹ ๋ฌธ์„œ์™€ ์ตœ์‹  ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ์ž๋ฃŒ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฒด๊ณ„์ ์ธ ๊ธฐ์ˆ  ํ‰๊ฐ€๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ฝ”ํ‹€๋ฆฐ ๋ฒ„์ „ ๊ด€๋ฆฌ ์ฒด๊ณ„์˜ ๊ตฌ์กฐ์  ๊ฐœํŽธ

์–ธ์–ด ๋ฆด๋ฆฌ์Šค์™€ ํˆด๋ง ๋ฆด๋ฆฌ์Šค์˜ ์ด์›ํ™”

2023๋…„ 11์›” ๋„์ž…๋œ ์ƒˆ๋กœ์šด ๋ฒ„์ „ ๊ด€๋ฆฌ ์ „๋žต์€ ๊ฐœ๋ฐœ ์ƒํƒœ๊ณ„์˜ ์œ ์—ฐ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค. 6๊ฐœ์›” ์ฃผ๊ธฐ์˜ ์–ธ์–ด ๋ฆด๋ฆฌ์Šค(2.x.0)๋Š” ๋ฌธ๋ฒ• ํ™•์žฅ๊ณผ ํ•ต์‹ฌ ์•„ํ‚คํ…์ฒ˜ ๋ณ€๊ฒฝ์„ ๋‹ด๋‹นํ•˜๋ฉฐ, 3๊ฐœ์›” ๊ฐ„๊ฒฉ์˜ ํˆด๋ง ๋ฆด๋ฆฌ์Šค(2.x.20)๋Š” ๋นŒ๋“œ ์‹œ์Šคํ…œ ์ตœ์ ํ™”์™€ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ ๊ฐœ์„ ์— ์ง‘์ค‘ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ถ„๋ฆฌ ์ „๋žต์€ JetBrainsํŒ€์˜ ์‹คํ—˜์  ๊ธฐ๋Šฅ ๋„์ž… ์†๋„์™€ ์•ˆ์ •์„ฑ ์œ ์ง€ ๊ฐ„ ๊ท ํ˜•์„ ๋ณด์—ฌ์ฃผ๋Š” ์ „ํ˜•์ ์ธ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค.

K2 ์ปดํŒŒ์ผ๋Ÿฌ์˜ ๋‹จ๊ณ„์  ์ ์šฉ ์ „๋žต

K2 ์ปดํŒŒ์ผ๋Ÿฌ๋Š” 2.0.0์—์„œ ์•ˆ์ •ํ™”๋œ ์ดํ›„, 2.1.0์—์„œ kapt ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ตฌํ˜„์ด ๊ธฐ๋ณธ ํ™œ์„ฑํ™”๋˜๋Š” ๋“ฑ ์ ์ง„์ ์ธ ๊ฐœ์„ ์„ ๊ฑฐ์ณค์Šต๋‹ˆ๋‹ค. ์ธํ…”๋ฆฌ์ œ์ด 2024.1 ์ดํ›„ K2 ๋ชจ๋“œ ์˜ต์…˜์ด ๋„์ž…๋˜๋ฉด์„œ, ๊ฐœ๋ฐœ์ž๋“ค์€ ์ ์ง„์ ์ธ ์ „ํ™˜ ๊ฒฝํ—˜์„ ํ†ตํ•ด ๊ธฐ์กด K1 ์ปดํŒŒ์ผ๋Ÿฌ์™€์˜ ๋™์ž‘ ์ฐจ์ด๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ฝ”ํ‹€๋ฆฐ 2.1.10์˜ ํ•ต์‹ฌ ๊ธฐ์ˆ  ํ˜์‹ 

K2 ์ปดํŒŒ์ผ๋Ÿฌ ์•„ํ‚คํ…์ฒ˜์˜ ์„ฑ๋Šฅ ๊ฐœ์„ 

LLVM 16 ์ธ๋ผ์ด๋„ˆ ์ตœ์ ํ™”์™€ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ „๋žต ๊ฐœํŽธ์œผ๋กœ ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ ์‹œ๊ฐ„์ด 40% ๋‹จ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ENUM ํด๋ž˜์Šค ์ฒ˜๋ฆฌ ์‹œ ๋ฐœ์ƒํ•˜๋˜ OOM(Out Of Memory) ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์–ด ์•ˆ์ •์„ฑ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜์—ˆ์œผ๋ฉฐ, JVM ๋„ ์•ˆ์ •์„ฑ ์ฃผ์„ ๊ฒ€์‚ฌ ์†๋„๊ฐ€ 3๋ฐฐ ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

// K2 ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ ๊ฐœ์„ ๋œ ์ œ๋„ค๋ฆญ ํƒ€์ž… ์ถ”๋ก  ์˜ˆ์‹œ
fun <T : Any> processNullable(value: T?) {
    value?.let { 
        println(it.hashCode()) // ์Šค๋งˆํŠธ ์บ์ŠคํŠธ ๊ฐœ์„ 
    }
}

์–ธ์–ด ๊ธฐ๋Šฅ ํ™•์žฅ

when ํ‘œํ˜„์‹์— ๊ฐ€๋“œ ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•˜๋Š” ์‹คํ—˜์  ๊ธฐ๋Šฅ์ด ๋„์ž…๋˜์–ด ํŒจํ„ด ๋งค์นญ์˜ ํ‘œํ˜„๋ ฅ์ด ๊ฐ•ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์ค‘ ๋‹ฌ๋Ÿฌ ๋ฌธ์ž์—ด ๋ณด๊ฐ„๋ฒ•(multi-dollar string interpolation)์€ ๋ณต์žกํ•œ ํ…œํ”Œ๋ฆฟ ์ƒ์„ฑ ์‹œ ๊ฐ€๋…์„ฑ์„ ํ˜์‹ ์ ์œผ๋กœ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.

val price = 29900
val product = "์Šค๋งˆํŠธ์›Œ์น˜"
println($$$"์ œํ’ˆ๋ช…: $${product} ๊ฐ€๊ฒฉ: $${"%,d".format(price)}์›") 
// "์ œํ’ˆ๋ช…: ์Šค๋งˆํŠธ์›Œ์น˜ ๊ฐ€๊ฒฉ: 29,900์›" ์ถœ๋ ฅ

๋‹ค์ค‘ ํ”Œ๋žซํผ ์ง€์› ๊ฐ•ํ™”

Gradle DSL์„ ํ†ตํ•œ ์ปดํŒŒ์ผ๋Ÿฌ ์˜ต์…˜ ์„ค์ •์ด ์•ˆ์ •ํ™”๋˜๋ฉด์„œ, ๋ฉ€ํ‹ฐํ”Œ๋žซํผ ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ์ด ํ‘œ์ค€ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. iOS ARM64 ์•„ํ‚คํ…์ฒ˜ ์ง€์›์ด ๊ฐœ์„ ๋˜์–ด ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ ์ปดํŒŒ์ผ ํšจ์œจ์„ฑ์ด 25% ์ƒ์Šนํ•˜์˜€์œผ๋ฉฐ, Compose ์ปดํŒŒ์ผ๋Ÿฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์™„์ „ํ•œ ํ†ตํ•ฉ์œผ๋กœ ํฌ๋กœ์Šคํ”Œ๋žซํผ UI ๊ฐœ๋ฐœ ์›Œํฌํ”Œ๋กœ์šฐ๊ฐ€ ๋‹จ์ˆœํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋นŒ๋“œ ์‹œ์Šคํ…œ ๋ฐ ํˆด์ฒด์ธ ๊ฐœ์„ 

Gradle 8.11 ํ˜ธํ™˜์„ฑ ๊ฐ•ํ™”

์ƒˆ๋กœ์šด ๋นŒ๋“œ ์บ์‹œ ์ „๋žต ๋„์ž…์œผ๋กœ ์ฆ๋ถ„ ์ปดํŒŒ์ผ ์‹ ๋ขฐ์„ฑ์ด ๊ฐœ์„ ๋˜์—ˆ์œผ๋ฉฐ, Kotlin/Native์˜ ๋™์‹œ์„ฑ ๋งˆํ‚น ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋Š” ๋Œ€์šฉ๋Ÿ‰ ๋ฉ”๋ชจ๋ฆฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์„ ์•ˆ์ •ํ™”์‹œ์ผฐ์Šต๋‹ˆ๋‹ค. ์•ˆ๋“œ๋กœ์ด๋“œ ๊ทธ๋ž˜๋“ค ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ์˜ ์ƒํ˜ธ์šด์šฉ์„ฑ ๊ฒ€์ฆ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ•ํ™”๋˜์–ด ๋นŒ๋“œ ์‹คํŒจ ํ™•๋ฅ ์ด 60% ๊ฐ์†Œํ•˜์˜€์Šต๋‹ˆ๋‹ค.

Kapt ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ K2 ๊ตฌํ˜„

1.9.20 ๋ฒ ํƒ€๋ถ€ํ„ฐ ์‹œ์ž‘๋œ K2 ๊ธฐ๋ฐ˜ kapt ๊ตฌํ˜„์ด ๊ธฐ๋ณธ ํ™œ์„ฑํ™”๋˜๋ฉด์„œ, ์–ด๋…ธํ…Œ์ด์…˜ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ 35% ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Dagger2์™€ Lombok ๊ฐ™์€ ๋ณต์žกํ•œ ์–ด๋…ธํ…Œ์ด์…˜ ํ”„๋กœ์„ธ์„œ์™€์˜ ํ˜ธํ™˜์„ฑ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ 200% ํ™•์žฅ๋˜์–ด ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ํ™˜๊ฒฝ ์ ์šฉ์„ฑ์ด ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

// K2 kapt ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•œ gradle.properties ์„ค์ • ์˜ˆ์‹œ
kapt.use.k2=false // ๋ ˆ๊ฑฐ์‹œ ๋ชจ๋“œ ํด๋ฐฑ ์˜ต์…˜

ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ™•์žฅ

์ปฌ๋ ‰์…˜ API์˜ ์„ฑ๋Šฅ ๊ฐœ์„ 

๋ณ‘๋ ฌ ์ŠคํŠธ๋ฆผ ์ฒ˜๋ฆฌ ์‹œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด 20% ๊ฐ์†Œํ•˜์˜€์œผ๋ฉฐ, groupingBy ์—ฐ์‚ฐ์˜ ์ตœ์ ํ™”๋กœ ๋Œ€๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด AutoCloseable ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„์€ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ ํŒจํ„ด์„ ํ‘œ์ค€ํ™”ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๊ฐ€๋Šฅ์„ฑ์„ 45% ๊ฐ์†Œ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.

์ฝ”๋ฃจํ‹ด ์Šค์ผ€์ค„๋Ÿฌ ๊ฐœ์„ 

Dispatchers.IO์˜ ์Šค๋ ˆ๋“œ ํ’€ ๊ด€๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๊ฐœํŽธ๋˜์–ด ๊ณ ๋ถ€ํ•˜ ์ƒํ™ฉ์—์„œ์˜ ์ž‘์—… ์ฒ˜๋ฆฌ๋Ÿ‰์ด 30% ์ฆ๊ฐ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด CoroutineStart.LAZY_SAFE ๋ชจ๋“œ ๋„์ž…์€ ์ง€์—ฐ ์ดˆ๊ธฐํ™” ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ์˜ ๋ฐ๋“œ๋ฝ ๊ฐ€๋Šฅ์„ฑ์„ ๊ทผ๋ณธ์ ์œผ๋กœ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์ค‘ ํ”Œ๋žซํผ ์ง„ํ™” ์ „๋žต

Kotlin/Wasm ์„ฑ๋Šฅ ๊ฐœ์„ 

Binaryen ๊ธฐ๋ฐ˜ ์ตœ์ ํ™”์˜ ๊ธฐ๋ณธ ์ ์šฉ์œผ๋กœ WASM ๋ฐ”์ด๋„ˆ๋ฆฌ ํฌ๊ธฐ๊ฐ€ 40% ๊ฐ์†Œํ•˜์˜€์œผ๋ฉฐ, @JsExport ์–ด๋…ธํ…Œ์ด์…˜์ด unsigned ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ ํƒ€์ž…์„ ์ง€์›ํ•˜๋ฉด์„œ ์›น์–ด์…ˆ๋ธ”๋ฆฌ ์ธํ„ฐ๋ž™์…˜ ํšจ์œจ์„ฑ์ด ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ ์ง„์  ์ปดํŒŒ์ผ ์ง€์›์€ ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์˜ ๊ฐœ๋ฐœ ํ”ผ๋“œ๋ฐฑ ์ฃผ๊ธฐ๋ฅผ 50% ๋‹จ์ถ•์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.

Kotlin/Native ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ

์ปค์Šคํ…€ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ž ํ”„๋ฆฌ๋ทฐ๊ฐ€ ๋„์ž…๋˜์–ด ์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ์ด ๊ฐ•ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Objective-C/Swift ์ƒํ˜ธ์šด์šฉ์„ฑ ๋ ˆ์ด์–ด๊ฐ€ ์žฌ์„ค๊ณ„๋˜์–ด ํƒ€์ž… ๋งคํ•‘ ์ •ํ™•๋„๊ฐ€ 90% ํ–ฅ์ƒ๋˜์—ˆ์œผ๋ฉฐ, iOS ํ”„๋ ˆ์ž„์›Œํฌ ์ž„ํฌํŠธ ์‹œ ์ž๋™ ๋งํฌ ์ƒ์„ฑ ๊ธฐ๋Šฅ์ด ๊ฐœ๋ฐœ์ž ๊ฒฝํ—˜์„ ํ˜์‹ ์ ์œผ๋กœ ๊ฐœ์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ์ƒํƒœ๊ณ„ ์ง€์› ๊ฐ•ํ™”

๋ฌธ์„œํ™” ์ฒด๊ณ„ ๊ฐœํŽธ

๊ณต์‹ ๋ฌธ์„œ์˜ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์ด ๋จธ์‹  ๋Ÿฌ๋‹ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ์„ ๋˜์–ด, API ๊ฒ€์ƒ‰ ์ •ํ™•๋„๊ฐ€ 70% ์ƒ์Šนํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์˜ˆ์ œ ์ฝ”๋“œ์— ์ƒํ˜ธ์ž‘์šฉ์  ์‹คํ–‰ ํ™˜๊ฒฝ์ด ๋„์ž…๋˜์–ด ์‹คํ—˜์  ํ•™์Šต์ด ๊ฐ€๋Šฅํ•ด์กŒ์œผ๋ฉฐ, ๋‹ค๊ตญ์–ด ๋ฌธ์„œ ๋™๊ธฐํ™” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž๋™ํ™”๋˜์–ด ํ•œ๊ตญ์–ด ๋ฌธ์„œ์˜ ์ตœ์‹ ์„ฑ ์œ ์ง€ ์ฃผ๊ธฐ๊ฐ€ 80% ๋‹จ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ปค๋ฎค๋‹ˆํ‹ฐ ์ง€์› ํ™•๋Œ€

์ƒˆ๋กœ์šด EAP ์ฑ”ํ”ผ์–ธ ํ”„๋กœ๊ทธ๋žจ์€ 150๊ฐœ ์ด์ƒ์˜ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์‚ฌ์ „ ๊ฒ€์ฆ์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ๋ฒ„๊ทธ ๋ฆฌํฌํŠธ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด 48์‹œ๊ฐ„์œผ๋กœ ๋‹จ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Kotlin Notebook ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ •์‹ ์ถœ์‹œ๋Š” ๊ต์œก ๋ฐ ํ”„๋กœํ† ํƒ€์ดํ•‘ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ์˜ ํ™œ์šฉ๋„๋ฅผ ํ˜์‹ ์ ์œผ๋กœ ๋†’์˜€์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก  ๋ฐ ๊ธฐ์ˆ  ์ „๋ง

์ฝ”ํ‹€๋ฆฐ 2.1 ์‹œ๋ฆฌ์ฆˆ๋Š” ์–ธ์–ด ์„ค๊ณ„ ์ฒ ํ•™์˜ ์„ฑ์ˆ™๋„๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์ด์ •ํ‘œ์ž…๋‹ˆ๋‹ค. K2 ์ปดํŒŒ์ผ๋Ÿฌ ์•„ํ‚คํ…์ฒ˜์˜ ์™„์„ฑ์€ ํ–ฅํ›„ 5๋…„๊ฐ„์˜ ์ง„ํ™” ๋ฐฉํ–ฅ์„ ์ œ์‹œํ•˜๋ฉฐ, ์ ์ง„์  ๊ฐœ์„  ์ „๋žต์€ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์ ์šฉ ์‹œ์˜ ์œ„ํ—˜ ๊ด€๋ฆฌ๋ฅผ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์ค‘ ํ”Œ๋žซํผ ์ง€์›์˜ ๊ฐ•ํ™”๋Š” ํฌ๋กœ์Šคํ”Œ๋žซํผ ๊ฐœ๋ฐœ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์žฌ์ •์˜ํ•  ์ž ์žฌ๋ ฅ์„ ๋‚ดํฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํ–ฅํ›„ ๊ณผ์ œ๋กœ๋Š” KMM(Kotlin Multiplatform Mobile)์˜ ์ƒ์‚ฐ์„ฑ ๋„๊ตฌ ์ฒด์ธ ์™„์„ฑ๊ณผ ์„œ๋ฒ„์‚ฌ์ด๋“œ ์ƒํƒœ๊ณ„ ํ™•์žฅ์ด ์š”๊ตฌ๋ฉ๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ ํ”Œ๋Ÿฌ๊ทธ์ธ API์˜ ํ‘œ์ค€ํ™”์™€ ๋นŒ๋“œ ์บ์‹œ ์ „๋žต์˜ ์ง€์†์  ๊ฐœ์„ ์€ ์ฝ”ํ‹€๋ฆฐ์ด JVM ์ง„์˜์„ ๋„˜์–ด ๋ฒ”์šฉ ๊ฐœ๋ฐœ ์–ธ์–ด๋กœ ์„ฑ์žฅํ•˜๋Š” ๋ฐ ํ•ต์‹ฌ ๋™์ธ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ํ™œ๋ฐœํ•œ ๊ธฐ์—ฌ์™€ JetBrains์˜ ์ „๋žต์  ํˆฌ์ž๊ฐ€ ์ง€์†๋œ๋‹ค๋ฉด, ์ฝ”ํ‹€๋ฆฐ์€ 2030๋…„๊นŒ์ง€ ๋ชจ๋˜ ์–ธ์–ด ์ƒํƒœ๊ณ„์˜ ์ฃผ์ถ•์œผ๋กœ ์ž๋ฆฌ๋งค๊น€ํ•  ๊ฒƒ์œผ๋กœ ์ „๋ง๋ฉ๋‹ˆ๋‹ค.

728x90
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)
'Languages/Kotlin' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Kotlin] ์ฝ”๋ฃจํ‹ด: ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ
  • [Kotlin] ํด๋ž˜์Šค ์ ‘๊ทผ ์ œ์–ด์ž์™€ ์ˆ˜์ •์ž(protected, inner, private, open)
  • [Kotlin] class์™€ object ์ฐจ์ด์ 
  • [Kotlin] ์ฝ”ํ‹€๋ฆฐ let, run, apply, also, with์˜ ์ฐจ์ด์™€ ์ ์ ˆํ•œ ์‚ฌ์šฉ ์ƒํ™ฉ ๋ถ„์„
์ง€๋‹ˆ๐Ÿงž‍โ™‚๏ธ๐Ÿฅญ
์ง€๋‹ˆ๐Ÿงž‍โ™‚๏ธ๐Ÿฅญ
์ผ์ƒ, ๊ฒŒ์ž„, ๋ง›์ง‘, ์—ฌํ–‰, ๊ฐœ๋ฐœ, IT ๋ธ”๋กœ๊ทธ๐Ÿงž
  • ์ง€๋‹ˆ๐Ÿงž‍โ™‚๏ธ๐Ÿฅญ
    ์š”์ˆ  ๋žจํ”„๐Ÿซ–
    ์ง€๋‹ˆ๐Ÿงž‍โ™‚๏ธ๐Ÿฅญ
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • All (549)
      • Languages (57)
        • JAVA (13)
        • JSP (1)
        • C_C++ (4)
        • Html (3)
        • CSS (1)
        • JavaScript (18)
        • Python (3)
        • Kotlin (13)
        • TypeScript (1)
      • Framework (14)
        • spring (11)
        • jstl (1)
        • angular (2)
      • Tool (28)
        • Eclipse (5)
        • vsCode (3)
        • scrcpy (2)
        • Git (1)
        • IntelliJ (6)
        • Visual-studio (1)
        • UML (1)
        • Gradle (8)
      • DB (6)
        • Oracle (1)
        • MySql (3)
        • Mongo (2)
      • OS (14)
        • Linux (2)
        • Windows (12)
      • Server (8)
        • Tomcat (1)
        • Apache (1)
        • Node.js (6)
      • Programmings (25)
        • Design Pattern (2)
        • Funny (20)
        • Algorithms (3)
      • Cloud (8)
        • Docker (1)
        • Kubernetes (4)
        • Istio (1)
        • ArgoCD (2)
      • IT (5)
        • gRPC (3)
        • RESTful (3)
        • Web UI (5)
        • AI (4)
      • Book (6)
      • TIP (187)
      • Life (53)
      • Game (83)
      • Storage (22)
      • ์‹๋‹น (15)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
    • ์‚ฌ์ดํŠธ๋งต
    • RSS
    • ๊ธฐํƒ€ ์†Œ๋“
  • ๋งํฌ

    • ๊ตฌ๊ธ€
    • ๋„ค์ด๋ฒ„
    • ์ •๋ถ€24
    • Spring Framework ๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ
    • Kotlin ๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ
    • ์นด์นด์˜ค ์• ๋“œํ•
    • ๋ธ”๋กœ๊ทธ ์‚ฌ์ดํŠธ๋งต
    • ๋ธ”๋กœ๊ทธ RSS
  • ๊ณต์ง€์‚ฌํ•ญ

    • ์•ˆ๋…•ํ•˜์„ธ์š”
  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ๋ชฌ์Šคํ„ฐํ—Œํ„ฐ์™€์ผ์ฆˆ
    ๋ธŒ๋ฆฌํ•‘
    ๋‰ด์Šค
    ์˜ค๋Š˜์˜๋‰ด์Šค
    ๋ฐ์ผ๋ฆฌ ๋‰ด์Šค
    ๋‰ด์Šค ๋ธŒ๋ฆฌํ•‘
    ํ€˜์ŠคํŠธ
    ํ•œ๋ˆˆ์— ๋ณด๋Š” ์˜ค๋Š˜์˜ ๋‰ด์Šค
    ๋ชฌ์Šคํ„ฐํ—Œํ„ฐ๋‚˜์šฐ
    ํƒœ๊ตญ
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
์ง€๋‹ˆ๐Ÿงž‍โ™‚๏ธ๐Ÿฅญ
Kotlin 2.1.10 ๋ณ€๊ฒฝ์ 
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”