본문 바로가기

Programming/Kotlin

[Kotlin] Kotlin IN ACTION 내용정리 (1)

회사에서 안드로이드 개발 업무를 진행하다가 Kotlin이라는게 계속보여서 검색해봤었다.

JetBrains사에서 만든 JAVA를 완벽하게 호환하는 언어라고 하는데 조금 둘러보니 요즘 핫한 언어인것 같아서 공부하려고 회사 도서관에서 책을 빌려왔다.

 

예스 24에서 책을 검색한 모습

코틀린 언어를 개발한 JetBrains사의 코틀린 컴파일러 개발자들이 직접 쓴 책이라 일종의 공식 개발지침서 라고 볼수도 있을 것 같다.


1장. 코틀린이란 무엇이며, 왜 필요한가

코틀린은 자바 플랫폼에서 돌아가는 새로운 프로그래밍 언어로, 간결, 실용적, 자바 코드와의 상호운영성(interoperability)를 중시한다.

서버, 안드로이드 등 현재 자바가 사용중인 곳이라면 거의 대부분 코틀린을 활용가능하고, 자바와 같은 수준의 성능으로 기존 자바 라이브러리나 프레임워크를 사용할 수 있다.

정적 타입(statically typed) 지정언어이다. 즉, 모든 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있고 프로그램 안에서 객체의 필드나 메소드를 사용할 때마다 컴파일러가 타입을 검증해준다는 뜻이다.

정적 타입 지정시의 장점은 다음과 같다.

  1. 성능 : 실행 시점에 어떤 메소드를 호출할지 알아내는 과정이 필요 없으므로 메소드 호출이 더 빠르다.
  2. 신뢰성 : 컴파일러가 프로그램의 정확성(correctness)을 검증하기 떄문에 실행 시 프로그램이 오류로 중단될 가능성이 적어진다.
  3. 유지 보수성 : 코드에서 다루는 객체가 어떤 타입에 속하는지 알 수 있기 때문에 처음 보는 코드를 다룰 때도 더 쉽다.
  4. 도구 지원 : 더 안전하게 리팩토링(refactoring)할 수 있고, 도구는 더 정확한 코드 완성 기능을 제공할 수 있으며, IDE의 다른 지원기능도 더 잘 만들 수 있다.

컴퓨터가 문맥을 고려해 변수 타입을 결정하는 타입 추론(type inference) 기능을 가진다.

널이 될 수 있는 타입(nullable type)을 지원한다. 그럼으로서 컴파일 시점에 널 포인터 예외가 발생할 수 있는지 여부를 검사할 수 있어서 좀 더 프로그램의 신뢰성을 높일 수 있다.

함수 타입(function type)을 지원한다.