코틀린은 무엇이며 왜 필요한가?

코틀린의 주요 특성

어디에서 실행되는가?

  • 자바가 실행되는 모든 곳(JVM)
  • Android
  • IOS
  • Web (최근에는 js로도 컴파일된다.)

정적 타입

  • 실행속도가 빠름(런타임에 실행하고 있는 코드가 무슨타입인지 추론할 필요가 없기 때문)
  • 개발 단계에서 컴파일 에러 나기 때문에 런타임 에러를 대부분 방지
  • 타입추론이 되기 때문에 안전한 리팩토링이 가능하며 IDE에서도 자동완성을 잘 지원해준다.

함수형 프로그래밍 도구 지원

  • Lambda
  • Data class(Immutable VO)
  • Collection을 함수형 스타일로 다룰 수 있는 API들 제공

코틀린의 철학

실용성

  • 대규모 시스템을 만들어온 실무자들이 고민해서 만듬
  • Jetbrains 에서 만들었기 때문에 IDE 지원이 쩔어줌.

간결성

  • 문법이 많이 간결해졌다. (ex. data class를 사용하면 getter/setter, toString, equals 생략 가능)
  • 빵빵한 표준 라이브러리 제공

안전성

  • NullPointerException 예방
  • ClassCastException 예방 (타입검사하면 타입캐스팅까지 알아서 해버림)

상호운용성

  • JVM 위에서 돌아가기 때문에 자바 라이브러리 그대로 사용 가능