1. Kotlin 언어 개요

2020. 3. 2. 16:31소프트웨어 공학/코딩 공부

본 내용은 kotlinlang.org 공식 문헌과 기타 자료들을 바탕으로 필자가 학습한 내용을 정리한 것입니다.

필자의 허락 없이 글을 상업적 목적으로 인용, 수정, 재배포할 수 없습니다. 내용의 오류 지적은 덧글로 받습니다.

 

What is Kotlin?

Kotlin 언어는 Jetbrains사가 2011년 출시한 이래 꾸준히 업데이트되고 있다. Java를 완벽하게 상호 호환하기 때문에 안드로이드, 웹 개발자가 많이 넘어오는 추세이다. 구글은 2017년 I/0 콘퍼런스에서 Kotlin을 안드로이드 개발 공식 언어로 채택하였다.

 


기능

크로스 플랫폼

Kotlin은 Java뿐만 아니라 JavaScript도 대응하며, LLVM을 통해 기계어 컴파일도 가능하다. Kotlin에서 Java코드를 호출할 수 있고, vice versa이다. 덕분에 이것만 배워도 웹 개발, 크로스 플랫폼 애플리케이션 개발 등 넓은 분야를 커버할 수 있게 된다.

정적 타입

val x: Int = 1 // 명시적으로 Int 타입을 선언
val y = 1  // 컴파일러가 y를 Int 타입으로 추론

Kotlin에 존재하는 모든 개체 - 멤버 변수, 지역 변수, 클래스, 심지어 함수까지 - 모두 타입을 갖는다. 그리고 사용자가 이를 명시적으로 형 변환하기 전까지 타입은 저절로 바뀌지 않는다. 하지만 변수를 선언할 때 자료형을 빠뜨리면, 편의를 위해 컴파일러가 타입을 추론하고 암묵적으로(implicitly) 정해준다.

Nullable 처리

/* Java */
String name = null

if (name == null) {
    System.out.println("Undefined"); // 출력 결과: Undefined
} else {
    System.out.println(name.length());
}
/* Kotlin */
val text: String? = null
val length = text?.length ?: "Undefined" // Elvis 연산자 ?:

println(length) // 출력 결과: Undefined

대놓고 Java와 비교한 예제이다.

Kotlin은 이렇게 타입 생략이 되고, 세미콜론(;)도 생략되고, Nullable 처리도 간단하여 읽기 쉽다.

복합 패러다임

함수형 프로그래밍과 객체지향 프로그래밍을 동시에 지원한다. 사용자는 자신의 취향에 맞게 적당히 골라 쓰면 된다.

C와 같은 포인터 개념이 없어도 함수를 변수로 취급할 수 있고, Lambda 와 Inline 함수도 사용할 수 있다. 클래스와 객체, 추상화의 개념은 Java와 비슷하지만 접근제어자가 기본 public이고 internal 키워드가 추가되었다는 차이가 있겠다.

 

'소프트웨어 공학 > 코딩 공부' 카테고리의 다른 글

3-3. Kotlin 클래스 추상화  (0) 2020.03.04
3-2. Kotlin 클래스 상속  (1) 2020.03.03
3-1. Kotlin 클래스 생성자  (0) 2020.03.03
3. Kotlin 클래스  (0) 2020.03.03
2. Kotlin 자료형  (1) 2020.03.02