Kotlin Programming

μ½”ν‹€λ¦° 곡뢀λ₯Ό μ‹œμž‘ν•˜λ©°...

ν”„λ‘œκ·Έλž˜λ¨Έ μ˜€μ›” 2024. 9. 17.

Spring 을 μ‚¬μš©ν•˜λŠ” λ§Žμ€ IT νšŒμ‚¬μ—μ„œ μžλ°”μ™€ 코틀린을 겸용으둜 μ‚¬μš©ν•˜λŠ” 좔세인 κ±Έ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€. κ·Έ 이유λ₯Ό μ°Ύμ•„λ³΄λ‹ˆ 코틀린은 μžλ°”μ™€ JVMμ—μ„œ ν˜Έν™˜λ˜λ©°, μžλ°”μ˜ μž₯점을 μœ μ§€ν•˜λ©΄μ„œλ„ ν˜„λŒ€μ μΈ μ–Έμ–΄ 섀계λ₯Ό λ°˜μ˜ν•˜μ—¬ 개발 생산성을 λ†’μ—¬μ£ΌκΈ° λ•Œλ¬Έμ— 많이 μ±„νƒλ˜κ³  μžˆλ‹€λŠ” κ±Έ μ•Œμ•˜μŠ΅λ‹ˆλ‹€.

저도 μ½”ν‹€λ¦°μœΌλ‘œ Lv1 μ½”λ”©ν…ŒμŠ€νŠΈλ₯Ό 문제λ₯Ό ν’€κ³ , μ‚¬μ΄λ“œ ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ©΄μ„œ μžλ°”μ— λΉ„ν•΄ 쒋은 점과 차이점을 ν•™μŠ΅ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

 

첫 번째둜 코틀린은 μžλ°”λ³΄λ‹€ 더 κ°„κ²°ν•˜κ³  가독성이 λ›°μ–΄λ‚¬μŠ΅λ‹ˆλ‹€. μžλ°”λ„ ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°μ„ μ§€μ›ν•˜μ§€λ§Œ, μ½”ν‹€λ¦°μ˜ 문법이 쑰금 더 짧고 κ°„κ²°ν•©λ‹ˆλ‹€. μžλ°”μ—μ„  길게 ν‘œν˜„ν–ˆλ˜ 문법듀을 μ‘°κΈˆμ”© ν•¨μΆ•ν•΄μ„œ μ λŠ”λ‹€λŠ” λŠλ‚Œμ„ λ°›μ•˜μŠ΅λ‹ˆλ‹€.

μ½”ν‹€λ¦°μ˜ data class λŠ” μžλ°”μ˜ record 와 맀우 λΉ„μŠ·ν•˜λ‹€λŠ” κ±Έ 느꼈고, 코틀린에선 둬볡을 쓸일이 μ•„μ§κΉŒμ§„ μ „ν˜€ μ—†μ—ˆμŠ΅λ‹ˆλ‹€. λ§€κ°œλ³€μˆ˜λ₯Ό κ°–λŠ” μƒμ„±μž 같은 경우 μžλ™μœΌλ‘œ 컴파일 ν•΄μ£ΌκΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

μ½”ν‹€λ¦°μ˜ 문법은 직관적이며, λ°˜λ³΅λ˜λŠ” μ½”λ“œ μž‘μ„±μ„ μ€„μ—¬μ€ŒμœΌλ‘œμ¨ 개발 생산성을 크게 ν–₯μƒμ‹œν‚΅λ‹ˆλ‹€.

 

두 번째 null-safety ν–ˆμŠ΅λ‹ˆλ‹€. 코틀린을 μ“°λ©° μ˜΅μ…”λ„μ„ 쓸일이 μ—†μ–΄μ‘Œκ³ , λ§€κ°œλ³€μˆ˜λŠ” 항상 λΆˆλ³€μ„±μΈκ²Œ μ²˜μŒμ— μ½”λ”©ν•  λ•Œ 쑰금 μ–΄μƒ‰ν–ˆμŠ΅λ‹ˆλ‹€. μ½”ν‹€λ¦°μ˜ νƒ€μž… μ‹œμŠ€ν…œμ€ null 문제λ₯Ό 컴파일 λ‹¨κ³„μ—μ„œ μ˜ˆλ°©ν•  수 μžˆλ„λ‘ μ„€κ³„λ˜μ–΄ NPE λ₯Ό λ§‰μ•„μ€λ‹ˆλ‹€. null 이 κ°€λŠ₯ν•˜κ²Œλ” ν•˜λ €λ©΄ ? ν‚€μ›Œλ“œλ₯Ό ν•¨κ»˜ μ¨μ•Όν–ˆμŠ΅λ‹ˆλ‹€.

μžλ°”μ—μ„  λΆˆλ³€μ„±μ΄ μΌλ°˜μ μ΄μ§€ μ•Šκ³ , λΆˆλ³€μ„±μ„ λͺ…μ‹œν•˜λ €λ©΄ final ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•΄μ•Όν–ˆμ§€λ§Œ, 코틀린은 λΆˆλ³€μ„±μ΄ 기본으둜 보μž₯ 되고(var λ³€μˆ˜ μ œμ™Έ), λΆˆλ³€μ„±μ„ 지킀지 μ•ŠμœΌλ €λ©΄ open 같은 ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•΄μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€. 이 점이 차이점으둜 κ°€μž₯ 크게 λ‹€κ°€μ™”μŠ΅λ‹ˆλ‹€.

 

μ„Έ 번째 코틀린은 ꡬ글이 μ•ˆλ“œλ‘œμ΄λ“œμ˜ 곡식 μ–Έμ–΄λ‘œ μ±„νƒν•˜λ©΄μ„œ κΈ‰κ²©νžˆ μ„±μž₯ν–ˆμœΌλ©°, 이와 λ”λΆˆμ–΄ μ„œλ²„ μͺ½ κ°œλ°œμ—μ„œλ„ 점점 인기λ₯Ό μ–»κ³  μžˆμŠ΅λ‹ˆλ‹€. μžλ°”μ™€μ˜ μƒν˜Έ μš΄μš©μ„± 덕뢄에 κΈ°μ‘΄ μžλ°” 기반 ν”„λ‘œμ νŠΈμ™€μ˜ 톡합도 μ‰½μŠ΅λ‹ˆλ‹€.

 

μ½”ν‹€λ¦° 문법과 μƒνƒœκ³„λ₯Ό μ–Όλ₯Έ μ²΄λ“ν•˜κ³  λ‚˜μ„œ μ½”ν‹€λ¦°μœΌλ‘œ 코루틴과 Spring WebFlux λ₯Ό ν™œμš©ν•œ ν”„λ‘œμ νŠΈλ₯Ό ν•˜κ³  μ‹Άλ‹€λŠ” 생각이 λ“­λ‹ˆλ‹€. μ²˜μŒμ— 아무것도 λͺ°λžμ„땐 코루틴이 μ½”ν‹€λ¦°μ˜ λ…μžμ μΈ κΈ°μˆ μΈμ€„ μ•Œμ•˜μ§€λ§Œ, 발음이 λΉ„μŠ·ν• λΏ 그렇지 μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

코루틴은 비동기 ν”„λ‘œκ·Έλž˜λ°μ„ μ‰½κ²Œ κ΅¬ν˜„ν•  수 μžˆλŠ” κ°•λ ₯ν•œ λ„κ΅¬λ‘œ, μ„œλ²„μ˜ I/O μž‘μ—…μ„ 효율적으둜 μ²˜λ¦¬ν•  수 μžˆλ‹€κ³  ν•˜λŠ”λ°, 비동기에 λŒ€ν•œ κ°œλ…μ€ μ•Œμ§€λ§Œ 아직 Spring μ—μ„œ 비동기 ν”„λ‘œκ·Έλž˜λ°μ— λŒ€ν•΄μ„  μƒμ„Ένžˆ μ•Œμ§€ λͺ»ν•΄, ν”„λ‘œμ νŠΈλ₯Ό ν•˜λ©° μ•Œμ•„κ°€κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

 

μ°Έκ³  λ¬Έν—Œ

https://kotlinlang.org/docs/server-overview.html

 

Kotlin for server side | Kotlin

 

kotlinlang.org

 

 

λŒ“κΈ€