[UMC] 1์ฃผ์ฐจ๐Ÿ’ป - ๋ถ€์ŠคํŠธ์ฝ”์Šค ์ฝ”ํ‹€๋ฆฐ ์ˆ˜๊ฐ•(1)

Madeline๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ปยท2022๋…„ 9์›” 21์ผ
0

kotlin study

๋ชฉ๋ก ๋ณด๊ธฐ
1/19

๋ถ€์ŠคํŠธ์ฝ”์Šค ์ฝ”ํ‹€๋ฆฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

๐Ÿ“– 1. ์ฝ”ํ‹€๋ฆฐ ๊ธฐ๋ณธ

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

C์–ธ์–ด๋Š” ์ ˆ์ฐจ ์ง€ํ–ฅ ์–ธ์–ด๋กœ ์ž„๋ฒ ๋””๋“œ ๋ถ„์•ผ์— ์ ํ•ฉํ•œ ๋ฐ˜๋ฉด, ์ž๋ฐ”๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด๋กœ ๋Œ€ํ˜• ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ์— ์ ํ•ฉํ•˜๋‹ค.

-๋ชฉ์ : ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ(์›น, ์•ˆ๋“œ๋กœ์ด๋“œ, ios ์•ฑ, ๋“ฑ)์—์„œ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ.

-ํŠน์ง•:
1) IDE๋กœ ์œ ๋ช…ํ•œ JetBrains์—์„œ ๊ฐœ๋ฐœํ•˜๊ณ  ๋ณด๊ธ‰
2) ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•˜๊ณ  ๋‹ค์žฌ๋‹ค๋Šฅํ•˜์—ฌ ํ˜ธํ™˜์„ฑ์ด ๋†’๋‹ค.
3) ๋ฌธ์žฅ ๋์— ์„ธ๋ฏธ์ฝœ๋ก ์€ ์˜ต์…˜(์ƒ๋žต ๊ฐ€๋Šฅ)
4) ๋ณ€์ˆ˜๋Š” Nullable๊ณผ NotNull๋กœ ๋‚˜๋‰˜๋Š”๋ฐ, ๋ณ€์ˆ˜ ์„ ์–ธ์‹œ '?'๋ฅผ ๋ถ™์—ฌ Nuulable๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
-> ๋„ ํฌ์ธํ„ฐ๋กœ ์ธํ•œ ํ”„๋กœ๊ทธ๋žจ์˜ ์ค‘๋‹จ์„ ์˜ˆ๋ฐฉํ•  ์ˆ˜ ์žˆ๋‹ค.
- ์ฝ”ํ‹€๋ฆฐ์€ NPE์—์„œ ์ž์œ ๋กญ๋‹ค.
5) ์•ˆ๋“œ๋กœ์ด๋“œ ๊ณต์‹ ์–ธ์–ด
6) ์ž๋ฃŒํ˜•์— ๋Œ€ํ•œ ์˜ค๋ฅ˜๋ฅผ ๋ฏธ๋ฆฌ ์žก์„ ์ˆ˜ ์žˆ๋Š” ์ •์  ์–ธ์–ด์ด๋‹ค.
(Statically typed)
์ •์  ํ˜•์‹: ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํƒ€์ž…์„ ๊ฒ€์ฆํ•ด์ค€๋‹ค.
(๋‹ค๋ฅธ ์–ธ์–ด๋Š” interprete, ์ฝ”๋“œ ๊ฒ€์‚ฌํ•ด์ฃผ์–ด์•ผ ํ•จ)
7) ์ž๋ฐ”์™€ ์™„๋ฒฝํ•˜๊ฒŒ ์ƒํ˜ธ์šด์˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค. JVM์ƒ์—์„œ ๋Œ ์ˆ˜ ์žˆ์Œ.
(๋ฌธ๋ฒ•์  ํŠน์ง•์€ ์กฐ๊ธˆ ๋‹ค๋ฅด๋‹ค!)
8) ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๋ชจ๋‘ ๊ฐ€๋Šฅํ•˜๋‹ค.

-๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ(์šฉ๋„):
Kotlin/JVM - ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹  ์ƒ์—์„œ ๋™์ž‘ํ•˜๋Š” ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
Kotlin/JS - ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ์˜ํ•ด ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋™์ž‘ํ•˜๋Š” ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
Kotlin/Native - LLVM๊ธฐ๋ฐ˜์˜ ๋„ค์ดํ‹ฐ๋ธŒ ์ปดํŒŒ์ผ์„ ์ง€์›ํ•ด ์—ฌ๋Ÿฌ ํƒ€๊นƒ์˜ ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ํŠน์ • ํ•˜๋“œ์›จ์–ด ์•„ํ‚คํ…์ณ(์•ˆ๋“œ๋กœ์ด๋“œ, ์œˆ๋„์šฐ, MacOS, ios, WebAssembly๋“ฑ ์˜ ๊ฐ์ข… ํ”„๋กœ์„ธ์„œ๊ฐ€ ๋‹ค๋ฅธ ํ™˜๊ฒฝ๋“ค)๊ฐ€ ๋‹ฌ๋ผ๋„, LLVM์ด๋ผ๋Š” ํŠน์ • ์ค‘๊ฐ„ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

*ํ•˜์ง€๋งŒ ํ˜„์žฌ๊นŒ์ง€ ์“ฐ์—ฌ์ง„ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ๋Š” ๊ฐ€์žฅ ๋ฐœ์ „๋œ ๊ฒƒ์ด JVM์ด๋‹ค

๐Ÿ“– 2. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊พธ๋ฏธ๊ธฐ

๐Ÿ“– 3. ํ—ฌ๋กœ ์›”๋“œ

1) ์ฝ”ํ‹€๋ฆฐ์˜ ํ•จ์ˆ˜ ๊ตฌํ˜„ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค!

2) ์ฝ”ํ‹€๋ฆฐ ์ฝ”๋“œ๋ฅผ JVM์ƒ์—์„œ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ, main ๋ฉ”์˜๋“œ๊ฐ€ ํŒŒ์ผ๋ช…์„ ๊ธฐ์ค€์œผ๋กœ ์ž๋™์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
[[Tools -> Kotlin -> Show Kotlin Bytecode]]

[[Decompile]] ์‹œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‹ค์ œ๋กœ ์–ด๋–ค javaํŒŒ์ผ๋กœ ๋ณ€ํ™˜๋˜์–ด JVM์ƒ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ๋ณด์—ฌ์ค€๋‹ค. ์›๋ฆฌ๋ฅผ ๋‹ค ์•Œ ํ•„์š”๋Š” ์—†๋‹ค!

์‚ฌ์ง„์—์„œ ๋ณด์ด๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด
class๋กœ ์ •์˜๋˜์–ด ์žˆ๊ณ , ๊ทธ ์•ˆ์— ํ•˜๋‚˜์˜ ๋ฉค๋ฒ„ ๋ฉ”์†Œ๋“œ๋กœ์จ main์ด ์ •์˜๋˜์–ด ์žˆ๋‹ค.
HelloKotline์ด ์ŠคํŠธ๋ง ํ˜•ํƒœ๋กœ ์ •์˜๋˜์–ด, java ํ‘œ์ค€์ถœ๋ ฅ ๋˜์–ด์žˆ๋‹ค.

์ด์ฒ˜๋Ÿผ java ์ฝ”๋“œ๋ณด๋‹ค ์ฝ”ํ‹€๋ฆฐ ์ฝ”๋“œ๊ฐ€ ํ›จ์”ฌ ๊ฐ„๋‹จํ•จ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค!

argument๊ฐ€ ์žˆ๋Š” main:
maina => fun main(args: Array)
๋ฌธ์ž ๋ฐฐ์—ด ์ธ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์ธ ํ•จ์ˆ˜!

=> ์ธ์ž๊ฐ€ ์—†๋Š” ์ƒํƒœ์—์„œ ๊ทธ๋Œ€๋กœ ์‹คํ–‰ํ–ˆ์œผ๋‹ˆ ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค!
์ธ์ž๋Š” ์‹คํ–‰ Configuration์— ๋„ฃ์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

๊ณต๋ฐฑ์„ ๊ธฐ์ค€์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ธ์ž๋ฅผ ๋„ฃ์–ด๋ณด์ž

**๊ฟ€ํŒ: Ctrl+D: ์ค„๊ฐ„ ๋ณต์‚ฌ!!

ํ•„์š”์— ๋”ฐ๋ผ ์ถœ๋ ฅํ•ด๋ณด๋ฉด,

๋ฌธ์ž์—ด ๋‚ด์— ๋ณ€์ˆ˜๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ${์‹}๊ณผ ๊ฐ™์ด ํ‘œํ˜„ํ•œ๋‹ค!

๐Ÿ“– 4. ์ •๋ฆฌ

-main()์€ ์ตœ์ƒ์œ„ ํ•จ์ˆ˜๋กœ ์‹คํ–‰ ์ง„์ž…์ ์ด๋‹ค.
์ž๋ฐ”์™€ ๊ฐ™์€ ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํด๋ž˜์Šค์™€ ๊ทธ ์•ˆ์— main()์ด ํ•„์š”ํ•˜๋‹ค.
์ฝ”ํ‹€๋ฆฐ์€ ํด๋ž˜์Šค ์—†์ด main()ํ•จ์ˆ˜ ํ•˜๋‚˜๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋‹ค.

profile
Major interest in iOS ๐Ÿ€ & ๐ŸŽ

0๊ฐœ์˜ ๋Œ“๊ธ€