CodeGym/Java Blog/๋ฌด์ž‘์œ„์˜/์ฃผ์š” Java ๊ฒฝ์Ÿ์ž. Kotlin์ด ๋ชจ๋“  ์žฅ์ ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  Java๋ณด๋‹ค ์—ฌ์ „ํžˆ ๋œ ์ธ๊ธฐ ์žˆ๋Š” ์ด์œ ๋Š” ...
John Squirrels
๋ ˆ๋ฒจ 41
San Francisco

์ฃผ์š” Java ๊ฒฝ์Ÿ์ž. Kotlin์ด ๋ชจ๋“  ์žฅ์ ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  Java๋ณด๋‹ค ์—ฌ์ „ํžˆ ๋œ ์ธ๊ธฐ ์žˆ๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋ฌด์ž‘์œ„์˜ ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
ํšŒ์›
๊ฐœ๋ฐœ, ํŠนํžˆ Android ๋ชจ๋ฐ”์ผ ์•ฑ ๊ฐœ๋ฐœ๊ณผ ๊ด€๋ จํ•˜์—ฌ ์‹œ์žฅ์—๋Š” ์—„์ฒญ๋‚œ ์ž ์žฌ๋ ฅ์„ ์ง€๋‹Œ "๋น„๊ต์  ์ƒˆ๋กœ์šด" ํ”Œ๋ ˆ์ด์–ด์ธ Kotlin์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ž๋ฐ”์˜ '์ฃผ์š” ๊ฒฝ์Ÿ์ž'๋กœ ๋ถˆ๋ฆฌ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๊ธฐ๋„ ํ•˜๋‹ค. ์ด ๊ธฐ์‚ฌ์—์„œ๋Š” Kotlin์ด Android ์•ฑ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ๋” ๋‚˜์€ ๋Œ€์•ˆ์ธ์ง€ ์•Œ์•„๋ณด๊ณ , Kotlin์˜ ์ด์ ์— ๋Œ€ํ•ด ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๋ฉฐ, Java๊ฐ€ ์—ฌ์ „ํžˆ ์šฐ์œ„๋ฅผ ์œ ์ง€ํ•˜๋Š”์ง€ ์•Œ๋ ค๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฃผ์š” Java ๊ฒฝ์Ÿ์ž.  Kotlin์ด ๋ชจ๋“  ์žฅ์ ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  Java๋ณด๋‹ค ์—ฌ์ „ํžˆ ๋œ ์ธ๊ธฐ ์žˆ๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?  - 1

์ฝ”ํ‹€๋ฆฐ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

Kotlin์€ ์˜ค๋žซ๋™์•ˆ ํฐ ์ธ๊ธฐ๋ฅผ ๋Œ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํŠนํžˆ Java์— ๋Œ€ํ•œ ๋ณด๋‹ค ๊ฐ„๊ฒฐํ•˜๊ณ  ํšจ์œจ์ ์ธ ๋Œ€์•ˆ์„ ์ฐพ๋Š” ๊ฐœ๋ฐœ์ž๋“ค ์‚ฌ์ด์—์„œ ์ตœ๊ทผ ๋ช‡ ๋…„ ๋™์•ˆ ๋†€๋ผ์šด ์ธ๊ธฐ๋ฅผ ์–ป์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ ๋’ค์—๋Š” ๋ฌด์—‡์ด ์žˆ์„๊นŒ์š”? Kotlin์€ 10์—ฌ๋…„ ์ „ JetBrains ํšŒ์‚ฌ์—์„œ ๊ฐœ๋ฐœํ•˜์—ฌ 2016๋…„์— ์ถœ์‹œ๋œ ํฌ๋กœ์Šค ํ”Œ๋žซํผ, ์ •์ ์ธ ์œ ํ˜•์˜ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. 2017๋…„ Google์ด Kotlin์„ Android ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ๊ณต์‹์ ์œผ๋กœ ์ง€์›๋˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ๋งŒ๋“ค๋ฉด์„œ ์ธ๊ธฐ๊ฐ€ ๊ธ‰์†ํžˆ ๋†’์•„์กŒ์Šต๋‹ˆ๋‹ค. . ๋”ฐ๋ผ์„œ ํ˜„์žฌ Play ์Šคํ† ์–ด์— ์žˆ๋Š” ์•ฑ ์ค‘ 20% ์ด์ƒ์ด Kotlin์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๋†€๋ผ์šด ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ฆ‰, Kotlin์€ Android ์•ฑ์—๋งŒ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ”„๋ŸฐํŠธ์—”๋“œ ๋ฐ ๋ฐฑ์—”๋“œ ์›น ๊ฐœ๋ฐœ, ๋ฐ์ดํ„ฐ ๊ณผํ•™, ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๋ชจ๋ฐ”์ผ ๊ฐœ๋ฐœ์—๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Kotlin์ด ๋‹๋ณด์ด๋Š” ์ด์œ 

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

Kotlin์˜ ์ฃผ์š” ์ด์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋›ฐ์–ด๋‚œ ๊ฐ€๋…์„ฑ . Kotlin์€ Java๋ณด๋‹ค ๋” ๊ฐ„๊ฒฐํ•œ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์ฝ”๋“œ๋ฅผ ๋” ์‰ฝ๊ฒŒ ์ฝ๊ณ  ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ธ๋ฏธ์ฝœ๋ก  ๋ฐ ์ค‘๊ด„ํ˜ธ์™€ ๊ฐ™์€ ์ƒ์šฉ๊ตฌ ์ฝ”๋“œ๋ฅผ ์ค„์ด๊ณ  ์œ ํ˜• ์œ ์ถ”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ช…์‹œ์ ์ธ ์œ ํ˜• ์„ ์–ธ์˜ ํ•„์š”์„ฑ์„ ์ค„์ž…๋‹ˆ๋‹ค.

    ๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ์•ฝ๊ฐ„์˜ ํ•™์Šต ๊ณก์„ ์„ ๊ฑฐ์นœ ํ›„์— Java ๊ฐœ๋ฐœ์ž๋Š” Kotlin์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

    Kotlin์€ ๋ณ€์ˆ˜์— null ๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ธฐ๋ณธ์ ์œผ๋กœ null๋กœ๋ถ€ํ„ฐ ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.

  • ํ™•์žฅ ๊ธฐ๋Šฅ . Kotlin์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๋Š” ์›๋ณธ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ ๋„ ๊ธฐ์กด ํด๋ž˜์Šค์— ์ƒˆ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์›๋ž˜ ํด๋ž˜์Šค์˜ ์ผ๋ถ€์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ํ™•์žฅ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

  • ์ฝ”๋ฃจํ‹ด . ๊ธฐ๋ณธ์ ์œผ๋กœ Kotlin์—๋Š” ์Šค๋ ˆ๋“œ๋ณด๋‹ค ๋” ๋งค๋ ฅ์ ์ธ ๋Œ€์•ˆ์ธ ์ฝ”๋ฃจํ‹ด ์ง€์› ๊ธฐ๋Šฅ์ด ๋‚ด์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋ฃจํ‹ด์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๋Š” ๊ธฐ์กด ์ฝœ๋ฐฑ ๊ธฐ๋ฐ˜ ์ฝ”๋“œ๋ณด๋‹ค ๋” ์ฝ๊ธฐ ์‰ฝ๊ณ  ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฌ์šด ๋น„๋™๊ธฐ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ฒŒํ„ฐ์™€ ์„ธํ„ฐ . Java์—์„œ ๊ฐœ๋ฐœ์ž๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ชจ๋‹ฌ ํด๋ž˜์Šค์˜ ๋ณ€์ˆ˜์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•˜๊ธฐ ์œ„ํ•ด getter ๋ฐ setter ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด Kotlin์—์„œ๋Š” getter ๋ฐ setter ํ•จ์ˆ˜๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ๋ณ€์ˆ˜ ์ด๋ฆ„ ์ž์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ๋ฐ์ดํ„ฐ์— ๊ฐ„๋‹จํžˆ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ „๋ฐ˜์ ์œผ๋กœ Kotlin์€ ๋งค์šฐ ์‚ฌ์šฉ์ž ์นœํ™”์ ์ธ ํ˜„๋Œ€์ ์ธ ๊ณ ๊ธ‰ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ, ๊ฐ„๋‹จํ•˜๊ณ  ๋Œ€์ค‘์ ์ธ ๊ฒƒ์œผ๋กœ ์‹œ์ž‘ํ•˜๋ ค๋Š” ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž์—๊ฒŒ ํƒ์›”ํ•œ ์„ ํƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ •๋ง ์˜๋ฏธ ์žˆ๋Š” ์ผ์„ ํ•˜๊ณ  ์ฝ”๋”ฉ์˜ ์ž ์žฌ๋ ฅ์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋…ธ๋ ฅํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์„๊นŒ์š”?

์ž๋ฐ”๋ž€ ๋ฌด์—‡์ธ๊ฐ€? ์ฃผ์š” ์ด์ 

์•ž์„œ ์–ธ๊ธ‰ํ•œ ๋ชจ๋“  ์žฅ์ ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  Kotlin์€ ์—ฌ์ „ํžˆ โ€‹โ€‹Java๋ณด๋‹ค ๋œ ์ธ๊ธฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ? Java ๋Š” 1995๋…„์— ์ถœ์‹œ๋œ ์ž˜ ์ •๋ฆฝ๋œ ๊ณ ๊ธ‰ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Java์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์žฅ์ ์€ Java Virtual Machine์„ ์ง€์›ํ•˜๋Š” ๋ชจ๋“  ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ ๋…๋ฆฝ์ ์ธ ์–ธ์–ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค . . Java๋Š” ์•ฑ ๊ฐœ๋ฐœ, ๊ธฐ์—… ๊ฐœ๋ฐœ, ๊ฒŒ์ž„ ๊ฐœ๋ฐœ, ๋น…๋ฐ์ดํ„ฐ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ, ๋ฐ์Šคํฌํ†ฑ/์›น/IoT ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์œผ๋กœ ์ธํ•ด Kotlin์„ ๋น„๋กฏํ•œ ๋‹ค๋ฅธ ์–ธ์–ด ๊ฐœ๋ฐœ์—๋„ ์˜ํ–ฅ์„ ๋ฏธ์ณค์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  Java๋Š” ์ˆ˜๋งŽ์€ ๊ธฐํšŒ์™€ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ํ—ˆ์šฉํ•˜๋Š” ๊ธฐ๋ณธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 2015๋…„๋ถ€ํ„ฐ 2020๋…„๊นŒ์ง€ Java๊ฐ€ ์‚ฌ์šฉ ์ค‘์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์ค‘ ํ™•์‹คํ•œ 1์œ„์˜€์œผ๋ฉฐ ์—ฌ์ „ํžˆ ์ƒ์œ„ 3์œ„ ์•ˆ์— ๋“œ๋Š” ๊ฒƒ์€ ๋†€๋ผ์šด ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค . Java์˜ ์ฃผ์š” ์ด์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • ์ด์‹์„ฑ . ๋ฐฉ๊ธˆ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด Java๋Š” ํ”Œ๋žซํผ ๋…๋ฆฝ์ ์ธ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์ฝ”๋“œ๋ฅผ ํ•œ ๋ฒˆ๋งŒ ์ž‘์„ฑํ•˜๋ฉด JVM์„ ์ง€์›ํ•˜๋Š” ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

  • ์“ฐ๋ ˆ๊ธฐ ์ˆ˜๊ฑฐ . ์ฃผ์š” ์žฅ์  ์ค‘ ํ•˜๋‚˜๋Š” Java์˜ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์ž๋™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋ฐ ํ• ๋‹น ํ•ด์ œ๋ฅผ ์ˆ˜๋™์œผ๋กœ ๊ด€๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๋ฐ ๊ธฐํƒ€ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ จ ์˜ค๋ฅ˜๊ฐ€ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

  • ๋Œ€๊ทœ๋ชจ ์ปค๋ฎค๋‹ˆํ‹ฐ . Java๋Š” ์•„๋งˆ๋„ ๊ฐ€์žฅ ํฐ ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์ž๋ž‘ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ํšŒ์‚ฌ๊ฐ€ ๊นŒ๋‹ค๋กœ์šด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ๊ณ  ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋กœ๋ถ€ํ„ฐ ๋ฐฐ์šฐ๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๊ฐ€์žฅ ์‰ฌ์šด ์–ธ์–ด์ž…๋‹ˆ๋‹ค.

  • ๋ณด์•ˆ . Java์—๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์ฝ”๋“œ๋ฅผ ์‹œ์Šคํ…œ์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„๊ณผ ๊ฒฉ๋ฆฌํ•˜๋Š” ์ƒŒ๋“œ๋ฐ•์Šค ํ™˜๊ฒฝ๊ณผ ๊ฐ™์€ ๋งค์šฐ ์šฐ์ˆ˜ํ•œ ๋ณด์•ˆ ๊ธฐ๋Šฅ์ด ๋‚ด์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์•…์„ฑ ์ฝ”๋“œ๊ฐ€ ์‹œ์Šคํ…œ์— ํ•ด๋ฅผ ๋ผ์น˜๊ฑฐ๋‚˜ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ๋„์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ‰, Java๋Š” ์ด์‹์„ฑ, ๋Œ€๊ทœ๋ชจ ์ปค๋ฎค๋‹ˆํ‹ฐ, ๋‚ด์žฅ๋œ ๋ณด์•ˆ, ์ž๋™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ, ํ™•์žฅ์„ฑ ๋“ฑ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋งŽ์€ ์ด์ ์„ ์ œ๊ณตํ•˜๋Š” ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ์ด์ ์œผ๋กœ ์ธํ•ด ์—ฌ๋Ÿฌ ํ”Œ๋žซํผ์—์„œ ์‹คํ–‰๋˜๋Š” ๋ณต์žกํ•œ ์•ฑ์„ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ธ๊ธฐ ์žˆ๋Š” ์„ ํƒ์ด ๋ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ์ฐจ์ด์ : Kotlin๊ณผ Java

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

์›์ฒœ

Java ์ธก๋ฉด์—์„œ ๋˜ ํ•œ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ์ ์€ Java๊ฐ€ ๊ฝค ์˜ค๋žซ๋™์•ˆ ๊ฐœ๋ฐœ ์‹œ๋‚˜๋ฆฌ์˜ค์— ์žˆ์—ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Java์— ๋Œ€ํ•œ ์žฅ๊ธฐ์ ์ธ ์ง€์›์ด ์žˆ์œผ๋ฏ€๋กœ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ํŒจ์น˜๋ฅผ ํ†ตํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Java์™€ ๋‹ฌ๋ฆฌ Kotlin์—๋Š” ์žฅ๊ธฐ ์ง€์› ๋ฒ„์ „์ด ์—†์Šต๋‹ˆ๋‹ค. Kotlin๊ณผ Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๋ชจ๋‘ ๋งŽ์€ ๋ฌธ์„œ๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ Java๋Š” ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š”ํ•œ ํŠœํ† ๋ฆฌ์–ผ์„ ์ฐพ๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์‰ฝ์Šต๋‹ˆ๋‹ค. Kotlin์ด Java๋ณด๋‹ค ๋œ ์ธ๊ธฐ ์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ์ด์œ ๋Š” ๊ธฐ์กด์˜ ๋งŽ์€ ์ฝ”๋“œ๋ฒ ์ด์Šค๊ฐ€ Java๋กœ ์ž‘์„ฑ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋งํ•  ๊ฒƒ๋„ ์—†์ด, Java์—๋Š” ์•„์ง Kotlin์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ํ’๋ถ€ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. "๋…๋ฆฝ์„ฑ"์— ์žˆ์–ด์„œ๋„ Java๊ฐ€ ์Šน๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์„ฑ๋Šฅ์ด๋‚˜ ์ƒ์‚ฐ์„ฑ ๋ฌธ์ œ ์—†์ด ์™„์ „ํžˆ Java๋กœ ๊ฐœ๋ฐœ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Kotlin์—๋Š” ์ถ”๊ฐ€ ๋„๊ตฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์ค‘์š”ํ•œ ๊ฒƒ์€. ์•ˆ์ •. Java๋Š” 20๋…„์ด ๋„˜๋Š” ์—ญ์‚ฌ๋ฅผ ๊ฐ–๊ณ  ์žˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ๋ฐœ์ „ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. JVM(Java Virtual Machine)์€ ์ง€์†์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜๊ณ  ์žˆ์œผ๋ฉฐ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๊ณผ API๊ฐ€ Java์— ์ถ”๊ฐ€๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Java๋Š” ๋˜ํ•œ ์˜คํ”ˆ ์†Œ์Šค์ด๋ฏ€๋กœ ๊ฐœ๋ฐœ์ž๊ฐ€ Java ๊ฐœ๋ฐœ์— ๊ธฐ์—ฌํ•˜๊ณ  ์ƒˆ๋กœ์šด ๋„๊ตฌ์™€ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ง€์†์ ์ธ ๋ฐœ์ „์€ Java๊ฐ€ ์—ฌ์ „ํžˆ ๊ด€๋ จ์„ฑ์„ ์œ ์ง€ํ•˜๊ณ  ๊ฐœ๋ฐœ์ž๋“ค ์‚ฌ์ด์—์„œ ๊ณ„์† ์ธ๊ธฐ ์žˆ๋Š” ์„ ํƒ์ž„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ๊ฒƒ์„ ์š”์•ฝํ•˜๋ฉด

์˜์‹ฌ์˜ ์—ฌ์ง€ ์—†์ด Kotlin์„ ์‚ฌ์šฉํ•˜๋ฉด Java์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ฆ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Kotlin์€ ์„ฑ๊ฐ€์‹  NullPointerException ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฐ์ดํ„ฐ ํด๋ž˜์Šค์™€ ๋žŒ๋‹ค๋ฅผ ์ง€์›ํ•˜๋ฏ€๋กœ ์ฝ”๋“œ๋ฅผ ๋”์šฑ ๊ฐ„๊ฒฐํ•˜๊ณ  ํ‘œํ˜„๋ ฅ์žˆ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๊ฒƒ์ด ๋‹น์‹ ์ด ๊ฐ€์žฅ ์†Œ์ค‘ํžˆ ์—ฌ๊ธฐ๋Š” ๊ฒƒ์ด๋ผ๋ฉด Kotlin์„ ํƒ์ƒ‰ํ•˜๊ณ  ๋ฐฐ์šฐ๋Š” ๋ฐ ์ •๋ง ๊ด€์‹ฌ์ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Kotlin์—๋Š” ๋ช‡ ๊ฐ€์ง€ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, Java๋งŒํผ Android ์ปค๋ฎค๋‹ˆํ‹ฐ๋กœ๋ถ€ํ„ฐ ๋งŽ์€ ์ง€์›์„ ์ œ๊ณตํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ์ƒˆ๋กœ์šด ์–ธ์–ด์ธ Kotlin์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค๋ฉด ํ•ด๊ฒฐํ•ด์•ผ ํ•  ๋ฌธ์ œ๊ฐ€ ์—ฌ์ „ํžˆ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— Java๋Š” ์ˆ˜๋…„ ๋™์•ˆ ์กด์žฌํ•ด ์™”์œผ๋ฉฐ ์˜ค๋žซ๋™์•ˆ ์ƒ์œ„ 5๊ฐœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ๋ฒ—์–ด๋‚˜์ง€ ์•Š์€ ์•ˆ์ •์ ์ธ ์–ธ์–ด์ž…๋‹ˆ๋‹ค . ๋Œ€๊ธฐ์—…์€ ์ด์ „์— Java๋ฅผ ์„ ํƒํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— Java๋ฅผ ์„ ํƒํ•˜๊ณ , ํŒŒํŠธ๋„ˆ๋„ ์ด์ „์— Java๋ฅผ ์„ ํƒํ–ˆ์œผ๋ฉฐ, ์ˆ˜๋ฐฑ๋งŒ ๋ช…์˜ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž์™€ ๊ฐœ๋ฐœ ํŒ€๋„ ์ด์ „์— Java๋ฅผ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ถ๊ทน์ ์œผ๋กœ ๋งŽ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ „๋ฌธ๊ฐ€๋“ค์€ Java๊ฐ€ ์—„์ฒญ๋‚œ ์ถ”์ง„๋ ฅ์„ ๊ฐ–๊ณ  ์žˆ์Œ์„ ์ธ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์šฐ๋ฆฌ๊ฐ€ Java์— ๊ด€์‹ฌ์„ ๊ฐ–๋„๋ก ์ œ์•ˆํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. Java์˜ ๊ฑฐ๋Œ€ํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ์ˆ˜๋งŽ์€ ๊ฐœ๋ฐฉํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ Java๋ฅผ ์ตœ์ดˆ์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ์„œ ๋” ๋นจ๋ฆฌ ๋ฐฐ์šฐ๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ๋งŒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ฒซ ๋ฒˆ์งธ " ํ”„๋กœ๊ทธ๋ž˜๋ฐ " ์ง์—…์„ ๋” ๋นจ๋ฆฌ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค . ๋ฌผ๋ก  Kotlin์€ ๋ฉ‹์ง€์ง€๋งŒ Java๋Š” ์—ฌ์ „ํžˆ ์„ธ๊ณ„๋ฅผ ์ง€๋ฐฐํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ˆ™๋ จ๋œ Java ์ „๋ฌธ๊ฐ€๋ฅผ ์œ„ํ•œ ์ž๋ฆฌ๋Š” ํ•ญ์ƒ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ๋ฌธ์ œ์•ผ!
์ฝ”๋ฉ˜ํŠธ
  • ์ธ๊ธฐ
  • ์‹ ๊ทœ
  • ์ด์ „
์ฝ”๋ฉ˜ํŠธ๋ฅผ ๋‚จ๊ธฐ๋ ค๋ฉด ๋กœ๊ทธ์ธ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
์ด ํŽ˜์ด์ง€์—๋Š” ์•„์ง ์ฝ”๋ฉ˜ํŠธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค