Kotlin은 JetBrains사가 공개한 JVM에서 동작하는 프로그래밍 언어로서, 간결하고 실용적이며 자바코드와 상호운용성이 100%인 언어이다.
코틀린의 주 목적은 현재 자바가 사용되고 있는 모든 용도에 적합하면서 더 간결하고 생산적이며 안전한 대체 언어를 제공하는 것이다.
정적 타입 지정 언어는 프로그래밍 구성 요소의 타입을 컴파일 시점에 알 수 있고 프로그램 안에서 객체의 필드나 메서드를 사용할 때마다 컴파일러가 타입을 검증해준다. 즉, 컴파일 시점에 해당 타입이 올바른지 아닌지 알 수 있다.
- 성능: 실행 시점에 어떤 메서드를 호출할지 알아내는 과정이 필요 없으므로 메서드 호출이 더 빠르다.
- 신뢰성: 컴파일러가 프로그램의 정확성을 검증하기 때문에 런타임 시점에 타입 오류가 발생할 가능성이 적다.
- 유지 보수성: 코드에서 다루는 객체가 어떤 타입에 속하는지 알 수 있기 때문에 처음보는 코드를 다룰때도 더 쉽다.
자바와 달리 코틀린에서는 모든 변수의 타입을 프로그래머가 직접 명시할 필요가 없다.
대부분의 경우 코틀린 컴파일러가 문맥으로부터 변수 타입을 자동으로 유추할 수 있기 때문에 프로그래머는 타입 선언을 생략해도 무방하다.
var x = 1 // Int
var y = 1.1 // Double
코틀린은 null이 될 수 있는 타입을 지원함에 따라 컴파일 시점에 null pointer exception의 발생 여부를 검사할 수 있어 프로그램의 신뢰성을 높일 수 있다.
?
를 사용해서 nullable type을 선언할 수 있다. ?
가 없으면 compile errorr가 발생한다.
- Kotlin은 자바의 기존 라이브러리들을 그대로 사용할 수 있다. 라이브러리가 어떤 API를 제공하던 간에 코틀린에서는 메서드 호출, 클랙스 상속, 인터페이스 구현 등 모든 일이 가능하다.
- 자바 코드에서 코틀린 코드를 호출할 때도 마찬가지로 아무런 노력이 필요 없다.
- 자체 컬렉션 라이브러리를 제공하지 않고, 자바 표쥰 라이브러리에 의존한다.
- 코틀린이 제공하는 도구도 다중 언어 프로젝트를 완전히 지원한다. 코틀린과 자바의 소스 파일이 임의로 섞여 있어도 제대로 프로그램을 컴파일 가능하다.
Kotlin파일은 코틀린 컴파일러로 컴파일을 한 후 컴파일한 코드는 코틀린 런타임 라이브러리에 의존한다. 이 라이브러리에는 코틀린 자체 표준 라이브러리 클래스와 자바 API의 기능을 확장한 내용이 있다.
자바에서 사용한 빌드 도구로는 Maven, Gradle 등이 있는데 이러한 빌드 도구는 애플리케이션을 패키징 할 때, 알아서 코틀린 라이브러리를 포함시켜준다.
Java와 Kotlin 코드의 빌드 과정은 다음과 같은 순서로 이뤄진다.
- Kotlin 컴파일러가 Kotlin 코드를 컴파일해 .class 파일을 생성한다. 이 과정에서 Kotlin 코드가 참조하는 Java코드와 함께 로딩되어 사용된다.
- Java 컴파일러가 Java코드를 컴파일해 .class 파일을 생성한다. 이때 이미 Kotlin이 컴파일한 .class 파일의 경로를 클래스 패스해 추가해 컴파일한다.