코틀린은 안전성, 간결성, 상호 운용성을 강조하는 다중 패러다임, 다중 플랫폼 프로그래밍 언어다. 코틀린은 자바보다 더 나은 대안을 제공하는 것과 다중 플랫폼을 지원하는 것이 목적이다.
코틀린으로 개발 가능한 분야
코틀린의 설계 목표 중 하나는 프로그램의 안전성과 개발자의 생산성을 덜 해치는 트레이드 오프의 황금비율을 찾는 것이었다. 즉, 자바보다 더 안전성을 보장하는 언어를 설계하되, 개발자의 생산성을 덜 해치는 언어를 만드는 것이었다.
코틀린은 객체지향 패러다임 외 함수형 프로그래밍을 지원한다. 자바에는 익명 클래스를 통해 람다를 도입했지만 함수형 코드를 작성하는데 편리한 문법을 제공하지 않는다. 반면 코틀린은 함수 타입 시스템을 제공하여 자바보다 편리한 문법을 제공한다.
뿐 아니라 API를 도메인 특화 언어(Domain Specific Language, DSL)로 정의할 수 있는 기능을 지원하여 코틀린을 선언적인 스타일로 개발할 수 있도록 지원하고, Golang언어와 같이 동시성 프로그래밍을 위해 코틀린은 코루틴을 제공한다.
코틀린은 Getter, Setter, 익명 클래스, 명시적인 위임 등과 같은 자바의 보일러 플레이트를 제거하여 언어를 가능한 간결하게 작성할 수 있도록 노력했다.
코틀린은 독립적인 언어가 아닌 자바 언어 호환 가능한 언어이다. 기존 자바 코드를 코틀린에서 사용할 수 있고, 코틀린의 코드를 큰 노력없이 자바에서 사용할 수 있도록 상호 운용성을 보장한다.
최근에는 자바스크립트, C, C++, Objective-C, Swift 코드와 상호 작용할 수 있도록 확장되고 있다.