WIPIVERSE

코틀린

코틀린(Kotlin, IPA: /ˈkɒtlɪn/)은 소프트웨어 개발 회사인 젯브레인즈(JetBrains)가 개발한 크로스 플랫폼 범용 프로그래밍 언어이다. 정적 타입을 사용하며 타입 추론을 지원하는 고급 언어로, 자바(Java)와 완전한 상호 운용성을 가지도록 설계되었다. 주로 자바 가상 머신(JVM)에서 실행되지만, 자바스크립트 및 LLVM 기반 네이티브 코드로도 컴파일될 수 있다. 파일 확장자는 일반적으로 .kt를 사용하며, 스크립트 파일은 .kts를 사용한다.

명칭의 유래

코틀린이라는 이름은 러시아 상트페테르부르크 근처 핀란드만에 위치한 코틀린 섬(Kotlin Island)에서 유래하였다. 전임 수석 설계자인 안드레이 브레슬라프(Andrey Breslav)에 따르면, 팀은 자바 프로그래밍 언어가 인도네시아의 자와(Java) 섬에서 이름을 가져온 것에 착안하여 섬 이름을 차용하기로 결정하였다고 한다.

역사

코틀린 프로젝트는 2010년부터 개발이 시작되었다. 2011년 7월, 젯브레인즈는 약 1년간 개발해 온 JVM용 신규 언어인 '프로젝트 코틀린'을 공개하였다. 젯브레인즈의 개발 책임자 드미트리 예메로프(Dmitry Jemerov)는 당시 대부분의 언어들이 원하는 기능을 갖추지 못했으며, 유일하게 스칼라(Scala)가 그러한 기능을 갖추었으나 컴파일 속도가 느리다는 단점을 지적하였다. 코틀린의 명시적 목표 중 하나는 자바만큼 빠르게 컴파일되는 것이었다. 2012년 2월, 젯브레인즈는 이 프로젝트를 아파치 2.0 라이선스로 오픈소스화하였다.

코틀린 v1.0은 2016년 2월 15일에 출시되었으며, 이는 최초의 공식 안정판으로 간주된다. 젯브레인즈는 이 버전부터 장기간의 하위 호환성을 약속하였다.

2017년 5월 구글 I/O에서 구글은 안드로이드 공식 지원 언어에 코틀린을 추가한다고 발표하였다. 이후 2019년 5월 7일, 구글은 코틀린을 안드로이드 앱 개발을 위한 선호 언어(preferred language)로 지정한다고 공식 발표하였다.

2024년 5월, 젯브레인즈는 코틀린 역사상 가장 큰 변화로 평가되는 K2 컴파일러를 안정화한 코틀린 2.0을 출시하였다. K2 컴파일러는 기존 컴파일러 프론트엔드를 완전히 새로 작성한 것으로, JVM, 자바스크립트, 웹어셈블리, 네이티브 등 모든 타깃 플랫폼을 단일 파이프라인으로 통합한다. 같은 시기 구글 I/O 2024에서 구글은 코틀린 멀티플랫폼(Kotlin Multiplatform)을 공식적으로 지지한다고 밝혔으며, 구글 워크스페이스가 구글 문서(Google Docs)의 공유 비즈니스 로직에 이를 사용 중이라고 공개하였다.

주요 특징

코틀린은 다중 패러다임 언어로서 객체 지향 프로그래밍과 함수형 프로그래밍을 모두 지원한다. C#, 자바, 스칼라, ML, 그루비, 고수(Gosu) 등의 언어에서 영향을 받았다.

주요 특징으로는 다음과 같은 것들이 있다:

  • null 안전성: 코틀린은 null이 될 수 있는 타입과 그렇지 않은 타입을 구분한다. null 가능 타입은 타입 이름 뒤에 ?를 붙여 선언하며, 안전 호출 연산자(?.)와 엘비스 연산자(?:)를 통해 null 관련 런타임 오류를 줄인다.
  • 타입 추론: 변수 타입을 명시하지 않아도 컴파일러가 타입을 추론하여 자바보다 간결한 문법을 제공한다.
  • 가변/불변 변수 구분: var 키워드는 가변 변수, val 키워드는 불변 변수를 선언한다.
  • 기본 인자와 명명된 인자: 함수와 메서드는 기본 인자값, 가변 인자 목록, 명명된 인자를 지원한다.
  • 데이터 클래스: data class 키워드를 통해 데이터 보관용 클래스를 간결하게 정의할 수 있다.
  • 코루틴: 비동기 프로그래밍을 위한 코루틴을 지원하며, kotlinx.coroutines 라이브러리를 통해 사용할 수 있다.
  • 세미콜론 선택: 대부분의 경우 줄바꿈만으로 문장 종료를 판단하므로 세미콜론이 선택적이다.

플랫폼

코틀린은 다양한 플랫폼을 지원하며, 각각의 하위 프로젝트로 구분된다.

  • Kotlin/JVM: JVM에서 동작하기 위한 런타임 및 컴파일러. 코틀린 표준 라이브러리는 자바 API를 기반으로 작성되었다. 안드로이드 및 서버 사이드(스프링 프레임워크 등) 개발에 주로 사용된다.
  • Kotlin/JS: 웹 브라우저 및 Node.js 등 자바스크립트 엔진에서 동작하기 위한 런타임 및 컴파일러. 자바스크립트와의 상호 운용성을 보장한다.
  • Kotlin/Native: LLVM을 기반으로 동작하며, 윈도우, 리눅스, macOS, iOS 등 네이티브 바이너리로 컴파일할 수 있다. C, 오브젝티브-C와의 상호 운용성을 지원한다. 2023년 11월 1.9.20 버전에서 안정화되었다.
  • Kotlin/Multiplatform (KMP): 하나의 코드베이스로 안드로이드, iOS, 서버, 데스크톱, 웹 등 여러 플랫폼을 타깃할 수 있게 한다. 2023년 11월 안정 상태에 도달하였다.

활용 및 채택

코틀린은 2019년 이후 구글의 공식 안드로이드 앱 개발 선호 언어로 지정되었다. 2024년 기준 구글 플레이 상위 1,000개 안드로이드 앱 중 95% 이상이 코틀린 코드를 포함하는 것으로 보고되었다.

2018년 코틀린은 GitHub에서 가장 빠르게 성장하는 언어로 집계되었으며, 2020년 스택 오버플로 개발자 설문조사에서 네 번째로 사랑받는 언어로 선정되었다. 또한 2019년 오라일리 오픈소스 소프트웨어 컨퍼런스(OSCON)에서 브레이크아웃 프로젝트 상을 수상하였다.

스프링 프레임워크는 버전 5(2017년 1월)부터 공식적으로 코틀린을 지원하며, 코틀린 전용 웹 프레임워크인 Ktor도 젯브레인즈에 의해 개발되고 있다. 포브스, 필립스, 맥도날드, 스퀘어 등의 기업이 코틀린을 생산 환경에서 사용하는 것으로 알려져 있다.

개발 도구

코틀린은 안드로이드 스튜디오(Android Studio), 인텔리J IDEA, 이클립스 등 주요 통합 개발 환경(IDE)에서 공식 지원된다. Gradle, Maven, Ant 등 자바 기반 빌드 도구와의 통합이 지원되며, 이맥스(Emacs)용 코틀린 모드도 존재한다.

라이선스 및 관리

코틀린은 아파치 2.0 라이선스로 배포되는 오픈소스 프로젝트이다. 언어 개발 비용은 젯브레인즈가 부담하며, 코틀린 재단(Kotlin Foundation)이 코틀린 상표를 보호하고 관리한다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기