λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸš€ Development/Kotlin

μ½”ν‹€λ¦° Kotlin μ΄λž€?

by Jay Din 2023. 5. 17.
728x90
λ°˜μ‘ν˜•
λ°˜μ‘ν˜•

μ½”ν‹€λ¦° (Kotlin)μ΄λž€ 무엇인가?

코틀린은 μžλ°”  ν”Œλž«νΌμ—μ„œ λŒμ•„κ°€λŠ” μƒˆλ‘œμš΄ ν”„λ‘œκ·Έλž˜λ° 언어이닀.

코틀린은 κ°„κ²°ν•˜κ³  μ‹€μš©μ μ΄λ©°, μžλ°” μ½”λ“œμ™€μ˜ μƒν˜Έμš΄μš©μ„±μ„ μ€‘μ‹œν•œλ‹€.

ν˜„μž¬ μžλ°”κ°€ μ‚¬μš© 쀑인 곳이라면 거의 λŒ€λΆ€λΆ„ 코틀린을 ν™œμš©ν•  수 μžˆλ‹€.

λŒ€ν‘œμ μœΌλ‘œ μ„œλ²„ 개발, μ•ˆλ“œλ‘œμ΄λ“œ μ•± 개발 λ“±μ˜ λΆ„μ•Όμ—μ„œ 코틀린을 μ“Έ 수 μžˆλ‹€.

 

μ½”ν‹€λ¦° 맛보기

nameκ³Ό ageλΌλŠ” ν”„λ‘œνΌν‹°κ°€ λ“€μ–΄κ°„ κ°„λ‹¨ν•œ 데이터 클래슀(data calss)λ₯Ό μ •μ˜ν•œλ‹€.

age ν”„λ‘œνΌν‹°μ˜ λ””ν΄νŠΈ 값은 (λ”°λ‘œ μ§€μ •ν•˜μ§€ μ•Šμ€ 경우) null이닀.

maxBy ν•¨μˆ˜μ—μ„œ μ—˜λΉ„μŠ€ μ—°μ‚°μžλΌκ³  λΆ€λ₯΄λŠ” ?: λŠ” ageκ°€ null인 경우 0을 λ°˜ν™˜ν•˜κ³ , 그렇지 μ•Šμ€ 경우 age의 값을 λ°˜ν™˜ν•œλ‹€.

data class Person(val name: String, val age: Int ?= null)

fun main(args:Array<String>){
    val person = listOf(Person("영희"), Person("철수", age=29))

    val oldest = person.maxBy { it.age ?: 0 }

    print(oldest)
}

/* μ‹€ν–‰κ²°κ³Ό
Person(name=철수, age=29)
*/

 

μ½”ν‹€λ¦° λŒ€μƒ ν”Œλž«νΌ

μžλ°”κ°€ μ‹€ν–‰λ˜λŠ” λͺ¨λ“  곳이라고 λ³Ό 수 μžˆλ‹€.

μ½”ν‹€λ¦°μ˜ μ£Όλͺ©μ μ€ ν˜„μž¬ μžλ°”κ°€ μ‚¬μš©λ˜κ³  μžˆλŠ” λͺ¨λ“  μš©λ„μ— μ ν•©ν•˜λ©΄μ„œλ„ κ°„κ²°ν•˜κ³  생산적이며 μ•ˆμ „ν•œ λŒ€μ²΄ μ–Έμ–΄λ₯Ό μ œκ³΅ν•˜λŠ” 것이닀.

  • μ„œλ²„μƒμ˜ μ½”λ“œ (특히 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ°±μ—”λ“œ)
  • μ•ˆλ“œλ‘œμ΄λ“œ λ””λ°”μ΄μŠ€μ—μ„œ μ‹€ν–‰λ˜λŠ” λͺ¨λ“  μ• ν”Œλ¦¬μΌ€μ΄μ…˜

ν•˜μ§€λ§Œ 코틀린은 λ‹€λ₯Έ ν™˜κ²½μ—μ„œλ„ 잘 μž‘λ™ν•œλ‹€.

예λ₯Ό λ“€μ–΄ μΈν…”μ˜ λ©€ν‹° OS 엔진을 μ‚¬μš©ν•˜λ©΄ 코틀린을 iOS λ””λ°”μ΄μŠ€μ—μ„œ μ‹€ν–‰ν•  수 μžˆλ‹€. 이 밖에도 μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό κ³΅μ‹μ μœΌλ‘œ μ§€μ›λŠ” λ“± λ‹€λ₯Έ ν™˜κ²½μ—μ„œλ„ μž‘λ™ κ°€λŠ₯ν•˜κ²Œ λ§Œλ“€ 수 μžˆλ‹€.

 

정적 νƒ€μž… 지정 μ–Έμ–΄ vs 동적 νƒ€μž… 지정 μ–Έμ–΄

정적 νƒ€μž… 지정 μ–Έμ–΄

정적 νƒ€μž… μ§€μ •μ΄λΌλŠ” 말은 λͺ¨λ“  ν”„λ‘œκ·Έλž¨ ꡬ성 μš”μ†Œμ˜ νƒ€μž…μ„ 컴파일 μ‹œμ μ— μ•Œ 수 있고 ν”„λ‘œκ·Έλž¨ μ•ˆμ—μ„œ 객체의 ν•„λ“œλ‚˜ λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•  λ•Œλ§ˆλ‹€ μ»΄νŒŒμΌλŸ¬κ°€ νƒ€μž…μ„ κ²€μ¦ν•΄μ€€λ‹€λŠ” λœ»μ΄λ‹€.

정적 νƒ€μž… 지정 μ–Έμ–΄ μž₯점

  • μ„±λŠ₯
    μ‹€ν–‰ μ‹œμ μ— μ–΄λ–€ λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν• μ§€ μ•Œμ•„λ‚΄λŠ” 과정이 ν•„μš” μ—†μœΌλ―€λ‘œ λ©”μ„œλ“œ 호좜이 더 λΉ λ₯΄λ‹€.
  • μ‹ λ’°μ„±
    μ»΄νŒŒμΌλŸ¬κ°€ ν”„λ‘œκ·Έλž¨μ˜ 정확성을 κ²€μ¦ν•˜κΈ° λ•Œλ¬Έμ— μ‹€ν–‰ μ‹œ ν”„λ‘œκ·Έλž¨μ΄ 였λ₯˜λ‘œ 쀑단될 κ°€λŠ₯성이 더 적어진닀.
  • μœ μ§€ λ³΄μˆ˜μ„±
    μ½”λ“œμ—μ„œ λ‹€λ£¨λŠ” 객체가 μ–΄λ–€ νƒ€μž…μ— μ†ν•˜λŠ”μ§€ μ•Œ 수 있기 λ•Œλ¬Έμ— 처음 λ³΄λŠ” μ½”λ“œλ₯Ό λ‹€λ£° λ•Œλ„ 더 쉽닀.
  • 도ꡬ 지원
    정적 νƒ€μž… 지정을 ν™œμš©ν•˜λ©΄ 더 μ•ˆμ „ν•˜κ²Œ λ¦¬νŒ©ν† λ§ ν•  수 있고, λ„κ΅¬λŠ” 더 μ •ν™•ν•œ μ½”λ“œ μ™„μ„± κΈ°λŠ₯을 μ œκ³΅ν•  수 있으며, IDE의 λ‹€λ₯Έ 지원 κΈ°λŠ₯도 더 잘 λ§Œλ“€ 수 μžˆλ‹€.

동적 νƒ€μž… 지정 μ–Έμ–΄

동적 νƒ€μž… 지정 μ–Έμ–΄μ—μ„œλŠ” νƒ€μž…κ³Ό 관계없이 λͺ¨λ“  값을 λ³€μˆ˜μ— 넣을 수 있고, λ©”μ„œλ“œλ‚˜ ν•„λ“œ 접근에 λŒ€ν•œ 검증이 μ‹€ν–‰ μ‹œμ μ— μΌμ–΄λ‚˜λ©°, 그에 따라 μ½”λ“œκ°€ 더 짧아지고 데이터 ꡬ쑰λ₯Ό 더 μœ μ—°ν•˜κ²Œ μƒμ„±ν•˜κ³  μ‚¬μš©ν•  수 μžˆλ‹€.

ν•˜μ§€λ§Œ λ°˜λŒ€λ‘œ 이름을 잘λͺ» μž…λ ₯ν•˜λŠ” λ“±μ˜ μ‹€μˆ˜λ‘œ 컴파일 μ‹œ κ±ΈλŸ¬λ‚΄μ§€ λͺ»ν•˜κ³  μ‹€ν–‰ μ‹œμ μ— 였λ₯˜κ°€ λ°œμƒν•œλ‹€.

 

코틀린은 정적 νƒ€μž… 지정 언어이닀.

var a = 1

코틀린은 이 λ³€μˆ˜μ˜ νƒ€μž…μ΄ Intμž„μ„ μžλ™μœΌλ‘œ μ•Œμ•„λ‚Έλ‹€. μ»΄νŒŒμΌλŸ¬κ°€ λ¬Έλ§₯을 κ³ λ €ν•΄ λ³€μˆ˜ νƒ€μž…μ„ κ²½μ €ν•˜λŠ” 이런 κΈ°λŠ₯을 νƒ€μž… μΆ”λ‘ (type interence)이라고 λΆ€λ₯Έλ‹€.

 

ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°

  • 일급 μ‹œλ―ΌμΈ ν•¨μˆ˜
    ν•¨μˆ˜ (ν”„λ‘œκ·Έλž¨μ˜ 행동을 λ‚˜νƒ€λ‚΄λŠ” μ½”λ“œ 쑰각)λ₯Ό 일반 κ°’μ²˜λŸΌ λ‹€λ£° 수 μžˆλ‹€.
    ν•¨μˆ˜λ₯Ό λ³€μˆ˜μ— μ €μž₯ν•  수 있고, ν•¨μˆ˜λ₯Ό 인자둜 λ‹€λ₯Έ ν•¨μˆ˜μ— 전달할 수 있으며, ν•¨μˆ˜μ—μ„œ μƒˆλ‘œμš΄ ν•¨μˆ˜λ₯Ό λ§Œλ“€μ–΄μ„œ λ°˜ν™˜ν•  수 μžˆλ‹€.
  • λΆˆλ³€μ„±
    ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°μ—μ„œλŠ” 일단 λ§Œλ“€μ–΄μ§€κ³  λ‚˜λ©΄ λ‚΄λΆ€ μƒνƒœκ°€  μ ˆλŒ€λ‘œ λ°”λ€Œμ§€ μ•ŠλŠ” λΆˆλ³€ 객체λ₯Ό μ‚¬μš©ν•΄ ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•œλ‹€.
  • λΆ€μˆ˜ 효과(side effect) μ—†μŒ
    ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°μ—μ„œλŠ” μž…λ ₯이 κ°™μœΌλ©΄ 항상 같은 좜λ ₯을 내놓고 λ‹€λ₯Έ 객체의 μƒνƒœλ₯Ό λ³€κ²½ν•˜μ§€ μ•ŠμœΌλ©°, ν•¨μˆ˜ μ™ΈλΆ€λ‚˜ λ‹€λ₯Έ λ°”κΉ₯ ν™˜κ²½κ³Ό μƒν˜Έμž‘μš©ν•˜μ§€ μ•ŠλŠ” 순수 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•œλ‹€.

이런 핡심 κ°œλ…μ„ μ‚¬μš©ν•˜λŠ” ν•¨μˆ˜ν˜• μŠ€νƒ€μΌλ‘œ ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜λ©΄,

  • κ°„κ²°μ„±
  • 닀쀑 μŠ€λ ˆλ“œλ₯Ό μ‚¬μš©ν•΄λ„ μ•ˆμ „
  • ν…ŒμŠ€νŠΈν•˜κΈ° 쉽닀.

μ½”ν‹€λ¦°μ˜ 철학이라 μ“°κ³  μž₯점이라 μ½λŠ”λ‹€.

μ‹€μš©μ„±

코틀린은 μ‹€μ œ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ λ§Œλ“€μ–΄μ§„ μ‹€μš©μ μΈ μ–Έμ–΄λ‹€. 코틀린은 연ꡬλ₯Ό μœ„ν•œ μ–Έμ–΄κ°€ μ•„λ‹ˆλ‹€. λ‹€λ₯Έ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄κ°€ μ±„νƒν•œ 이미 μ„±κ³΅μ μœΌλ‘œ κ²€μ¦λœ 해법과 κΈ°λŠ₯에 μ˜μ‘΄ν•œλ‹€. 이둜 인해 μ–Έμ–΄μ˜ λ³΅μž‘λ„κ°€ 쀄어듀고 이미 μ•Œκ³  μžˆλŠ” κΈ°μ‘΄ κ°œλ…μ„ 톡해 코틀린을 더 μ‰½κ²Œ 배울 수 μžˆλ‹€.  

κ°„κ²°μ„±

κ°œλ°œμžκ°€ μ½”λ“œλ₯Ό μƒˆλ‘œ μž‘μ„±ν•˜λŠ” μ‹œκ°„λ³΄λ‹€ κΈ°μ‘΄ μ½”λ“œλ₯Ό μ½λŠ” μ‹œκ°„μ΄ 더 κΈΈλ‹€λŠ” 사싀은 잘 μ•Œλ €μ Έ μžˆλ‹€.

큰 ν”„λ‘œμ νŠΈλ₯Ό μˆ˜ν–‰ν•˜λŠ” νŒ€μ— 속해 있고, ν”„λ‘œμ νŠΈμ—μ„œ λ§Œλ“€μ–΄λ‚Έ μ†Œν”„νŠΈμ›¨μ–΄μ˜ 버그λ₯Ό μˆ˜μ •ν•œλ‹€κ³  κ°€μ •ν•  λ•Œ,

μˆ˜μ •ν•΄μ•Όλ§Œ ν•˜λŠ” 뢀뢄을 μ•Œμ•„λ‚΄κΈ° μœ„ν•΄ μ—„μ²­λ‚œ λ…Έλ ₯을 ν•΄μ•Όν•œλ‹€.

μ½”λ“œκ°€ 더 κ°„λ‹¨ν•˜κ³  κ°„κ²°ν• μˆ˜λ‘ λ‚΄μš©μ„ νŒŒμ•…ν•˜κΈ°κ°€ 더 쉽닀. λ•Œλ¬Έμ— μ–΄λ–€ μ–Έμ–΄λ₯Ό μ‚¬μš©ν•΄ μ½”λ“œλ₯Ό μž‘μ„±ν–ˆκ³  κ·Έ μ–Έμ–΄κ°€ μ–Όλ§ˆλ‚˜ κ°„κ²°ν•œ 언어인지도 μ€‘μš”ν•˜λ‹€. 

μ–΄λ–€ μ–Έμ–΄κ°€ κ°„κ²°ν•˜λ‹€λŠ” 말은 κ·Έ μ–Έμ–΄λ‘œ μž‘μ„±λœ μ½”λ“œλ₯Ό 읽을 λ•Œμ˜λ„λ₯Ό μ‰½κ²Œ νŒŒμ•…ν•  수 μžˆλŠ” ꡬ문 ꡬ쑰λ₯Ό μ œκ³΅ν•˜κ³ , κ·Έ μ˜λ„λ₯Ό λ‹¬μ„±ν•˜λŠ” 방법을 이해할 λ•Œ λ°©ν•΄κ°€ λ μˆ˜μžˆλŠ”λΆ€κ°€μ μΈ μ€€λΉ„ μ½”λ“œκ°€ μ λ‹€λŠ” λœ»μ΄λ‹€.   

μ½”ν‹€λ¦° 같은 경우,

  • κ²Œν„° getter, μ„Έν„° setter, μƒμ„±μž νŒŒλΌλ―Έν„°
  • λžŒλ‹€ 지원
  • 일반적인 κΈ°λŠ₯ 라이브러리 μΊ‘μŠν™”

ν•„λ“œμ— λŒ€μž…ν•˜κΈ° μœ„ν•œ 둜직 λ“± μžλ°”μ— μ‘΄μž¬ν•˜λŠ” μ—¬λŸ¬ 가지 번거둜운 μ€€λΉ„ μ½”λ“œλ₯Ό 코틀린은 λ¬΅μ‹œμ μœΌλ‘œ μ œκ³΅ν•˜κΈ° λ•Œλ¬Έμ— μ½”ν‹€λ¦° μ†ŒμŠ€μ½”λ“œλŠ” 그런 μ€€λΉ„ μ½”λ“œλ‘œ 인해 μ§€μ €λΆ„ν•΄μ§€λŠ” 일이 μ—†λ‹€.  

μ•ˆμ •μ„±

일반적으둜 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄κ°€ μ•ˆμ „ν•˜λ‹€λŠ” λ§μ€ν”„λ‘œκ·Έλž¨μ—μ„œ λ°œμƒν•  수 μžˆλŠ” 였λ₯˜μ€‘μ—μ„œ 일뢀 μœ ν˜•μ˜ 였λ₯˜λ₯Ό ν”„λ‘œκ·Έλž¨ 섀계가 μ›μ²œμ μœΌλ‘œ λ°©μ§€ν•΄μ€€λ‹€λŠ” λœ»μ΄λ‹€.

코틀린을 JVMμ—μ„œ μ‹€ν–‰ν•œλ‹€λŠ” 사싀은 이미 μƒλ‹Ήν•œ μ•ˆμ „μ„±μ„ 보μž₯ν•  수 μžˆλ‹€λŠ” λœ»μ΄λ‹€.

JVM을 μ‚¬μš©ν•˜λ©΄,

  1. λ©”λͺ¨λ¦¬ μ•ˆμ •μ„± 보μž₯
  2. 버퍼 μ˜€λ²„ν”Œλ‘œλ₯Ό 방지
  3. λ™μ μœΌλ‘œ ν• λ‹Ήν•œ λ©”λͺ¨λ¦¬λ₯Ό 잘λͺ» μ‚¬μš©ν•¨μœΌλ‘œ 인해 λ°œμƒν•  수 μžˆλŠ” λ‹€μ–‘ν•œ 문제 예방
  4. JVMμ—μ„œ μ‹€ν–‰λ˜λŠ” 정적 νƒ€μž… μ§€μ •μ–Έμ–΄λ‘œ νƒ€μž… μ•ˆμ •μ„± 보μž₯ 

λ˜ν•œ, 코틀린은 μ‹€ν–‰ μ‹œμ μ— 였λ₯˜λ₯Ό λ°œμƒμ‹œν‚€λŠ” λŒ€μ‹ μ»΄νŒŒμΌ μ‹œμ  검사λ₯Ό 톡해 였λ₯˜λ₯Ό 더 많이 방지해쀀닀.

μ½”ν‹€λ¦°μ˜ νƒ€μž… μ‹œμŠ€ν…œμ€ null이 될 수 μ—†λŠ” 값을 μΆ”μ ν•˜λ©°, μ‹€ν–‰ μ‹œμ  NullPinterException이 λ°œμƒν•  수 μžˆλŠ” 연산을 μ‚¬μš©ν•˜λŠ” μ½”λ“œλ₯Ό κΈˆμ§€ν•œλ‹€. 

// 널이 될 수 있음 
val s: String? = null
// 널이 될 수 μ—†μŒ
val s2: String = ""

μƒν˜Έμš΄μš©μ„±

μžλ°”μ˜ λΌμ΄λΈŒλŸ¬λ¦¬κ°€ μ–΄λ–€ APIλ₯Ό μ œκ³΅ν•˜λ˜ 간에 μ½”ν‹€λ¦°μ—μ„œ κ·Έ APIλ₯Ό ν™œμš©ν•  수 μžˆλ‹€. 즉, μžλ°”μ½”λ“œμ—μ„œ μ½”ν‹€λ¦° μ½”λ“œλ₯Ό ν˜ΈμΆœν•  λ•Œ μ•„λ¬΄λŸ° λ…Έλ ₯이 ν•„μš” μ—†λ‹€. 이에 λ”°λΌμžλ°”μ™€ μ½”ν‹€λ¦° μ½”λ“œλ₯Ό ν”„λ‘œμ νŠΈμ—μ„œ μ›ν•˜λŠ” λŒ€λ‘œ μ„žμ–΄ μ“Έ 수 μžˆλŠ” ꢁ극적인 μœ μ—°μ„±μ„ λ°œνœ˜ν•  수 μžˆλ‹€.

 

λ°˜μ‘ν˜•

 

μ½”ν‹€λ¦° μ½”λ“œ 컴파일 κ³Όμ •

μ½”ν‹€λ¦° μ»΄νŒŒμΌλŸ¬λŠ” μžλ°”μ»΄νŒŒμΌλŸ¬κ°€ μžλ°” μ†ŒμŠ€μ½”λ“œλ₯Ό μ»΄νŒŒμΌν•  떄와 λ§ˆμ°¬κ°€μ§€λ‘œ μ½”ν‹€λ¦° μ†ŒμŠ€μ½”λ“œλ₯Ό λΆ„μ„ν•΄μ„œ .class νŒŒμΌμ„ λ§Œλ“€μ–΄λ‚Έλ‹€.

λ§Œλ“€μ–΄μ§„ .class νŒŒμΌμ€ 개발 쀑인 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μœ ν˜•μ— λ§žλŠ” ν‘œμ€€ νŒ¨ν‚€μ§• 과정을 거쳐 싀행될 수 μžˆλ‹€.

μ½”ν‹€λ¦° λΉŒλ“œ κ³Όμ •

μ½”ν‹€λ¦°μ»΄νŒŒμΌλŸ¬λ‘œ μ»΄νŒŒμΌν•œ μ½”λ“œλŠ” μ½”ν‹€λ¦° λŸ°νƒ€μž„λΌμ΄λΈŒλŸ¬λ¦¬μ— μ˜μ‘΄ν•œλ‹€. λŸ°νƒ€μž„ λΌμ΄λΈŒλŸ¬λ¦¬μ—λŠ” μ½”ν‹€λ¦° 자체 ν‘œμ€€ 라이브러리 ν΄λž˜μŠ€μ™€ μ½”ν‹€λ¦°μ—μ„œ μžλ°” API의 κΈ°λŠ₯을 ν™•μž₯ν•œλ‚΄μš©μ΄ λ“€μ–΄μžˆλ‹€. μ½”ν‹€λ¦°μœΌλ‘œ μ»΄νŒŒμΌν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ 배포할 λ•ŒλŠ” λŸ°νƒ€μž„ λΌμ΄λΈŒλŸ¬λ¦¬λ„ ν•¨κ»˜ 배포해야 ν•œλ‹€.

μ‹€μ œλ‘œ κ°œλ°œμ„ μ§„ν–‰ν•œλ‹€λ©΄ ν”„λ‘œμ νŠΈλ₯Ό μ»΄νŒŒμΌν•˜κΈ° μœ„ν•΄ 메이븐, κ·Έλ ˆμ΄λ“€, μ•€νŠΈ λ“±μ˜ λΉŒλ“œ μ‹œμŠ€ν…œμ„ μ‚¬μš©ν•  것이닀. 코틀린은 그런 λΉŒλ“œ μ‹œμŠ€ν…œκ³Ό ν˜Έν™˜λœλ‹€.     

  

μš”μ•½

  • 코틀린은 νƒ€μž… 좔둠을 μ§€μ›ν•˜λŠ” 정적 νƒ€μž… 지정 μ–Έμ–΄λ‹€. λ”°λΌμ„œ μ†ŒμŠ€μ½”λ“œμ˜ μ •ν™•μ„±κ³Ό μ„±λŠ₯을 보μž₯ν•˜λ©΄μ„œλ„ μ†ŒμŠ€μ½”λ“œλ₯Ό κ°„κ²°ν•˜κ²Œ μœ μ§€ν•  수 μžˆλ‹€.
  • 코틀린은 객체지ν–₯κ³Ό ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ° μŠ€νƒ€μΌμ„ λͺ¨λ‘ μ§€μ›ν•œλ‹€ μ½”ν‹€λ¦°μ—μ„œλŠ” 일급 μ‹œλ―Όν•¨μˆ˜λ₯Ό μ‚¬μš©ν•΄ μˆ˜μ€€ 높은 좔상화가 κ°€λŠ₯ν•˜κ³ , λΆˆλ³€ κ°’ 지원을 톡해 닀쀑 μŠ€λ ˆλ“œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 개발과 ν…ŒμŠ€νŠΈλ₯Ό 더 μ‰½κ²Œ ν•  수 μžˆλ‹€.
  • 코틀린을 μ•ˆλ“œλ‘œμ΄λ“œμ—λ„ ν™œμš©ν•  수 μžˆλ‹€. μ½”ν‹€λ¦°μ˜ λŸ°νƒ€μž„ λΌμ΄λΈŒλŸ¬λ¦¬λŠ” 크기가 μž‘κ³ , μ½”ν‹€λ¦° μ»΄νŒŒμΌλŸ¬λŠ” μ•ˆλ“œλ‘œμ΄λ“œ APIλ₯Ό νŠΉλ³„νžˆ μ§€μ›ν•œλ‹€. 그리고 μ½”ν‹€λ¦°μ˜  λ‹€μ–‘ν•œ λΌμ΄λΈŒλŸ¬λ¦¬λŠ” μ•ˆλ“œλ‘œμ΄λ“œμ—μ„œ ν”νžˆ ν•˜λŠ” μž‘μ—…μ— μ‚¬μš©ν•  수 μžˆμœΌλ©΄μ„œ μ½”ν‹€λ¦°κ³Ό 잘 톡합될 수 μžˆλŠ” ν•¨μˆ˜λ₯Ό μ œκ³΅ν•œλ‹€. 
  • 코틀린은 μ‹€μš©μ μ΄λ©° μ•ˆμ „ν•˜κ³ , κ°„κ²°ν•˜λ©° μƒν˜Έμš΄μš©μ„±μ΄ μ’‹λ‹€ μ΄λŠ” 코틀린을 μ„€κ³„ν•˜λ©΄μ„œ 일반적인 μž‘μ—…μ— λŒ€ν•΄ 이미 잘 μ•Œλ €μ§„ 해법을 μ±„νƒν•˜κ³ , NullPointerExceptionκ³Ό 같이 ν”νžˆ λ°œμƒν•˜λŠ” 였λ₯˜λ₯Ό λ°©μ§€ν•˜λ©°, 읽기 쉽고 κ°„κ²°ν•œ μ½”λ“œλ₯Ό μ§€μ›ν•˜λ©΄μ„œ μžλ°”μ™€ μ•„λ¬΄λŸ° μ œμ•½ 없이 톡합될 수 μžˆλŠ” μ–Έμ–΄λ₯Ό λ§Œλ“œλŠ”λ° μ΄ˆμ μ„ λ§žμ·„λ‹€λŠ” λœ»μ΄λ‹€.    

μ°Έκ³ 

[λ„μ„œ] Kotlin in Action : μ½”ν‹€λ¦° 컴파일러 κ°œλ°œμžκ°€ 직접 μ•Œλ €μ£ΌλŠ” μ½”ν‹€λ¦° μ–Έμ–΄ 핡심

728x90
λ°˜μ‘ν˜•