CS

[Kotlin] 코틀린

바디스 2022. 11. 3. 04:16

코틀린

intellj, pycharm 등의 IDE 툴을 만든 Jetbrains 에서 개발한 언어로 2011년에 발표되었고, 2017년에 구글에서 안드로이드 공식언어로 선택 되었습니다.

 

코틀린은 자바를 대체할 수 있는 언어로 다양한 프로그래밍이 가능한 멀티 플랫폼 입니다.

  • Kotlin/JVM - 자바 가상 머신 상세서 동작하는 앱(자바앱/ 안드로이드앱) 개발
  • Kotlin/JS - 자바스크립트에 의해 DB부터 서버, 클라이언트까지 다루는 풀스택 웹 개발
  • Kotlin/Native - 안드로이드와 IOS뿐만 아니라 임베디드, IoT 등 앱 개발

즉, 서버, 안드로이드 등 자바가 실행되는 모든 곳에서 사용 할 수 있다.

 

코틀린 특징

정적 타입 지정 언어

  • 컴파일 시 변수의 자료형(Type)이 결정되어 안전 - 자바와 동일
  • 자료형(Type)을 명시하지 않아도 자료형 추론 가능 - 컴파일러가 자동으로 변수 타입을 유추, 프로그램 오류↓
  • 단, Kotlin/JS는 동적 타입 지원을 위해 dynamic 키워드 제공

Java와 호환됨

  • 자바와 100% 호환됨
  • 자바에서 제공하는 라이브러리 그대로 사용 가능

Null 안전성

  • 널이 가능한 자료형(Nullable Type)과 불가능한 자료형(Non-Null Type)을 구분한다.
  • 널값 허용 여부를 컴파일 단계에서 검사하기에 널 포인터로 인한 프로그램 중단도 예방 가능 (자바는 런타임에서 NPE 발생)

Java

@Nullable String strNullable = null;
@NonNull String strNonNull = "";

Java는 @(Annotation)을 사용해서 Nullable과 NonNull을 구분 할 수 있습니다. @Nullable은 null이 들어 올 수 있는 변수고, @NonNull은 null이 될 수 없는 변수입니다. Default는 Nullable입니다.

 

Kotlin

var strNullable: String? = null
var strNonNull: String = ""

Kotlin은 ?(Optional)을 사용해서 Nullable과 NonNull을 구분 할 수 있습니다. ?(Optional)을 사용하기 위해서는 변수뒤에 자료형을 꼭 붙여주셔야 하고 ?을 붙이게 되면 null이 들어올 수 있고, 붙이지 않으면 null이 될 수 없습니다. Default는 NonNull 입니다.

함수 타입에 대한 지원

  • 코틀린은 함수형 프로그래밍을 지원한다. (Java 8 부터 지원 시작)
  • 함수를 작성해서 변수에 저장할 수 있고, 다른 함수에 전달/반환 할 수도 있다.
var sum: (Int, Int) -> Int = { a, b -> a + b }

// 컴파일러가 함수 타입을 추론할 수 있으므로 다음과 같이 쓸 수 있습니다.
var sum = { a: Int, b: Int -> a + b }

var sum = fun(a: Int, b: Int): Int = a + b

var sum: Int.(Int) -> Int = { x -> plus(x) }

 

자바와 코틀린의 차이

성능

 

코드 비교

 

비교 자바 코틀린
성능 컴파일 - .class - JVM 컴파일 - .class - JVM
개발 편의성 코드양이 많다 자바보다 간편하다
활용 앱, 서버 등 현재 자바가 많은 부분에서 활용 되었다. 코틀린으로 대체 가능
참고소스 참고 자료 많은 구글 2017 부터 활성화
라이센스 Oracle JDK 11 유료 무료 라이센스