맨위로가기

코틀린 (프로그래밍 언어)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

코틀린은 젯브레인즈가 개발한 JVM, JavaScript, 네이티브 플랫폼을 위한 정적 형식의 프로그래밍 언어이다. 자바의 단점을 보완하고, 스칼라의 특징을 차용하여 간결하고 안전한 코드를 작성하는 것을 목표로 한다. 2011년 공개 이후, 2016년 1.0 버전 출시와 함께 공식적으로 안정화되었으며, 2017년 구글 I/O에서 안드로이드 공식 지원 언어로 채택되어 널리 사용되고 있다. 코틀린은 널 안전성, 간결한 문법, 자바와의 상호 운용성을 제공하며, 안드로이드 앱 개발, 서버 개발, 웹 개발 등 다양한 분야에서 활용된다.

더 읽어볼만한 페이지

  • 2011년 개발된 프로그래밍 언어 - 다트 (프로그래밍 언어)
    구글이 개발한 다트는 웹, 서버, 모바일, IoT 애플리케이션 개발을 위한 프로그래밍 언어로, 자바스크립트의 문제점을 해결하고 플러터 프레임워크를 통해 크로스 플랫폼 앱 개발에 널리 사용되며, 2023년에는 널 안전성 기능이 기본으로 도입되었다.
  • 자바 프로그래밍 언어 계열 - 스칼라 (프로그래밍 언어)
    스칼라는 마틴 오더스키가 설계한 객체 지향 및 함수형 프로그래밍 언어이며, 자바 플랫폼에서 실행되고 자바 코드와 상호 운용이 가능하며, 아파치 스파크 등 다양한 곳에서 활용된다.
  • 자바 프로그래밍 언어 계열 - 아파치 그루비
    아파치 그루비는 자바 가상 머신에서 실행되는 동적 타이핑 프로그래밍 언어이며, 자바와 파이썬 등의 특징을 결합하여 웹 애플리케이션 개발 등 다양한 분야에서 활용된다.
  • 명령형 프로그래밍 언어 - 자바 (프로그래밍 언어)
    자바는 제임스 고슬링 등에 의해 개발된 객체 지향 프로그래밍 언어로, 다양한 플랫폼에서 실행 가능하며 샌드박스 모델 기반의 보안 기능, 자동 메모리 관리, 멀티스레딩 등을 지원한다.
  • 명령형 프로그래밍 언어 - 스칼라 (프로그래밍 언어)
    스칼라는 마틴 오더스키가 설계한 객체 지향 및 함수형 프로그래밍 언어이며, 자바 플랫폼에서 실행되고 자바 코드와 상호 운용이 가능하며, 아파치 스파크 등 다양한 곳에서 활용된다.
코틀린 (프로그래밍 언어) - [IT 관련 정보]에 관한 문서
기본 정보
Kotlin 로고 2021
Kotlin 로고
분류다중 패러다임 프로그래밍 언어
패러다임객체 지향 프로그래밍
함수형 프로그래밍
명령형 프로그래밍
선언형 프로그래밍
범용 프로그래밍 언어
블록 (프로그래밍)
반영 (컴퓨터 과학)
병행 컴퓨팅
설계자젯브레인즈
개발자젯브레인즈
최신 안정화 버전 날짜|df=no}}
자료형정적 자료형, 강한 자료형, 추론적 자료형
구현체해당 없음
방언Gradle Kotlin DSL
영향을 준 언어C#
Eiffel
Gosu
Groovy
Java
JavaScript
ML
Python
Scala
영향을 받은 언어V (Vlang)
플랫폼Android
JVM
JavaScript (https://kotlinlang.org/docs/js-overview.html)
macOS (Apple silicon 지원 포함)
iOS, tvOS, watchOS
Linux
Windows
WebAssembly
LLVM (https://kotlinlang.org/docs/native-overview.html)
운영 체제크로스 플랫폼
라이선스Apache License 2.0
파일 확장자.kt, .kts, .kexe, .klib
발음
기타
언어 분류객체 지향 언어
명령형 언어
함수형 언어
선언형 언어
병행 프로그래밍 언어
최신 릴리스 정보
최신 릴리스 버전2.0.10

2. 역사

코틀린 마스코트의 2D 그림


코틀린 마스코트의 3D 그림


젯브레인즈는 2011년 7월, 1년 동안 개발해 온 JVM용 새로운 언어인 프로젝트 코틀린을 공개했다.[111] 젯브레인즈의 개발을 주도하던 드미트리(Dmitry Jemerov)는 스칼라를 제외한 대부분의 언어들에는 찾고자 하던 기능이 존재하지 않았다고 언급하였다. 그러나 스칼라의 느린 컴파일 시간을 단점으로 지적하였다.[111] 코틀린의 언급된 목표들 가운데 하나는 자바만큼 빠르게 컴파일하는 것이다.

코틀린이라는 이름은 코틀린섬에서 비롯된 것이다. Andrey Breslav는 팀이 이 이름을 결정하게 된 이유로는 자바가 인도네시아의 자와섬에서 이름을 가져왔듯, 코틀린도 똑같이 코틀린섬에서 이름을 가져오기로 한 것에서 비롯된다고 하였다.[113](그러나 프로그래밍 언어 자바는 커피 '자바'에서 이름을 가져온 것으로 추정된다)[114]

젯브레인즈는 이 새로운 언어가 IntelliJ IDEA 판매를 상승시켜주길 희망하였다.[115]

2012년 2월, 젯브레인즈는 이 프로젝트를 아파치 2 라이선스로 오픈 소스화했다.[112]

응용 프로그래밍 인터페이스[90]가 공개되었고, 웹사이트에서 데모[91][92] 외에도, 스탠드얼론 컴파일러 형태로, JetBrains에서 제공하는 통합 개발 환경IntelliJ IDEA영어플러그인으로, 마일스톤 안정 버전 "M1"이 2012년 4월 12일부터 제공되었다[93]

"M2"에서는 언어 기능이 강화되었고, 안드로이드영어 상에서의 개발 및 동작도 가능해졌으며, 자바스크립트영어로의 컴파일도 지원되었다[94]。"M3"에서는 약 400건의 버그 수정을 진행, 성능 향상, 형식 인수 추론 강화 등을 수행했다[95]。"M4"에서는 128건의 버그 수정, 형식 인수 추론 속도 향상, JDK 7 지원, 데이터 클래스의 `copy` 메서드 신설 등을 수행했다[96]。"M6"에서는, 안드로이드 스튜디오 플러그인에 의한 지원이 추가되었고, Maven 지원, 언어 개선으로 SAM(Single Abstract Method) 변환 지원 및 어노테이션 개선 등을 수행했다[97]

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

구글 I/O 2017에서 구글은 안드로이드에서 코틀린이 공식 지원 언어에 추가 되었으며[117] 2019년부터는 안드로이드 개발을 위한 공식 언어로 지정되었다.[118][119]

2017년 11월 28일, 코틀린 1.2가 출시되었다. JVM과 JavaScript 플랫폼 간의 코드 공유 기능이 지원되어, 여러 컴포넌트(백엔드, 프론트엔드, 안드로이드 애플리케이션 등)를 동일 코드에서 생성할 수 있게 되었다[99]

2018년 10월 29일에 출시된 코틀린 1.3의 일부로, 코틀린 코드를 통해 네이티브 바이너리를 생성하는 "Kotlin/Native"의 베타 버전이 번들로 제공되었다[100]

2021년 5월 5일, 코틀린 1.5가 출시되었다[102]

2021년 11월, 코틀린 1.6이 출시되었다.

2022년 6월, 코틀린 1.7이 출시되었고, 새로운 코틀린 K2 컴파일러의 알파 버전이 포함되었다[103]

2024년 5월, 코틀린 2.0이 출시되었다.[104] K2 컴파일러가 안정 버전으로 정식 도입되었고, 모든 컴파일러 백엔드가 많은 로직을 공유하고, 통일된 파이프라인을 사용할 수 있게 되었다.

2. 1. 개발 배경

젯브레인즈는 2011년 7월, 1년 동안 개발해 온 JVM용 새로운 언어인 프로젝트 코틀린을 공개했다.[12] 젯브레인즈의 책임자인 드미트리 예메로프는 스칼라를 제외한 대부분의 언어가 그들이 찾고 있는 기능을 갖추지 못했다고 언급하며, 스칼라의 느린 컴파일 시간을 단점으로 지적했다.[12] 코틀린은 Java만큼 빠르게 컴파일되는 것을 목표 중 하나로 하였다. 2012년 2월, 젯브레인즈는 Apache 2 라이선스로 프로젝트를 오픈 소스로 공개했다.[13] 젯브레인즈는 새로운 언어가 IntelliJ IDEA 판매를 견인하기를 희망했다.[14] Kotlin Git 저장소에 대한 첫 번째 커밋은 2010년 11월 8일에 이루어졌다.[15]

코틀린 1.0은 2016년 2월 15일에 출시되었으며,[16] 이는 공식적으로 안정적인 첫 번째 릴리스로 간주되어 젯브레인즈는 이 버전을 시작으로 장기적인 하위 호환성을 약속했다. Google I/O 2017에서 구글은 안드로이드에서 코틀린에 대한 최우선 지원을 발표했다.[17] 코틀린 1.2는 2017년 11월 28일에 출시되었으며,[18] JVM과 JavaScript 플랫폼 간의 코드 공유 기능이 이 릴리스에 새로 추가되었다.[19] 코틀린 1.3은 2018년 10월 29일에 출시되었으며, 비동기 프로그래밍에 사용하기 위한 코루틴 지원이 추가되었다.[22]

2019년 5월 7일, 구글은 코틀린 프로그래밍 언어가 이제 안드로이드 앱 개발자를 위한 선호하는 언어라고 발표했다.[5] 코틀린 1.4는 2020년 8월에 출시되었으며, Objective-C/Swift 상호 운용 등 애플 플랫폼 지원에 약간의 변경 사항이 있었다.[23] 코틀린 1.5, 1.6, 1.7, 1.8, 1.9는 각각 2021년 5월, 2021년 11월, 2022년 6월, 2022년 12월, 2023년 7월에 출시되었다.[24][25][26] 코틀린 2.0은 2024년 5월에 출시되었다.[27]

Kotlincs은 러시아 상트페테르부르크에 있는 젯브레인즈 연구소에서 개발되었다. 젯브레인즈는 Java영어, Ruby영어, Python영어 등의 프로그래밍 언어를 위한 개발 환경 등을 개발하여 판매해왔으며, 코틀린은 이 회사의 경험을 바탕으로 Java영어를 더욱 간결하고 안전하게 개선한 산업용 범용 언어로 개발되어 2011년7월 20일에 발표되었다. Java 가상 머신에서 실행되므로 Java영어로 작성된 프로그램과 거의 동일한 속도로 컴파일되고 실행될 수 있다고 한다. Java영어에서 필요하지만 호환성 때문에 구현되지 않은 기능이나, 미래의 Java영어 사양에서 구현될 예정인 기능 중에서 유용한 기능을 채택했다. 또한 Java영어 가상 머신에서 실행된다는 점에서 유사한 스크립트 언어 Groovy영어와 함수형 프로그래밍 언어의 요소가 강한 Scala영어로부터 기능과 간이 표기법(구문 설탕)을 채택했으며, 제네릭스의 구문 등에서 C#의 영향을 받은 부분도 있다.[87]

2. 2. 초기 개발 및 공개 (2010~2012)

2010년 11월 8일, Kotlin Git 저장소에 첫 번째 커밋이 이루어졌다.[15] 2011년 7월, 젯브레인즈는 1년 동안 개발해 온 JVM용 새로운 언어인 프로젝트 코틀린을 공개했다.[12] 젯브레인즈의 책임자인 드미트리 예메로프는 스칼라를 제외한 대부분의 언어가 그들이 찾고 있는 기능을 갖추지 못했으며, 스칼라의 느린 컴파일 시간을 단점으로 언급했다.[12] 코틀린의 목표 중 하나는 자바만큼 빠르게 컴파일하는 것이었다. 젯브레인즈는 새로운 언어가 IntelliJ IDEA 판매를 견인하기를 희망했다.[14] 2012년 2월 14일, 젯브레인즈는 코틀린을 아파치 2 라이선스로 오픈 소스화했다.[13][88][89]

응용 프로그래밍 인터페이스[90]가 공개되었고, 웹사이트에서 데모[91][92] 외에도, 스탠드얼론 컴파일러 형태, JetBrains에서 제공하는 통합 개발 환경IntelliJ IDEA영어플러그인으로, 마일스톤 안정 버전 "M1"이 2012년 4월 12일부터 제공되었다[93]

2. 3. 공식 출시 및 발전 (2016~현재)

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

2017년 구글 I/O에서 구글안드로이드에서 코틀린을 공식 지원 언어에 추가하였으며,[17] 2019년부터는 안드로이드 개발을 위한 공식 언어로 지정하였다.[5][101]

2017년 11월 28일, 코틀린 1.2가 출시되었다.[18][99] JVM과 자바스크립트 플랫폼 간의 코드 공유 기능이 이 릴리스에 새로 추가되었다.

2018년 10월 29일에 출시된 코틀린 1.3에서는 비동기 프로그래밍을 위한 코루틴 지원이 추가되었다.[22][100]

2020년 8월에 출시된 코틀린 1.4에서는 오브젝티브-C스위프트 상호 운용에 약간의 변경 사항이 있었다.[23]

2021년 5월 5일 코틀린 1.5가 출시되었다.[102] 2021년 11월에는 코틀린 1.6이 출시되었다. 2022년 6월에는 코틀린 K2 컴파일러의 알파 버전이 포함된 코틀린 1.7이 출시되었다.[103] 2022년 12월에는 코틀린 1.8이 출시되었다. 2023년 7월에는 코틀린 1.9가 출시되었다.

2024년 5월, 코틀린 2.0이 출시되었다.[104] K2 컴파일러가 안정 버전으로 정식 도입되었다.

버전출시일주요 변경 사항
1.02016년 2월 14일[120]정식 버전 (안정화 버전) 출시
1.12016년 2월 15일[121]Kotlin/JS 안정화 버전
1.22017년 11월 27일[122]Kotlin/Multiplatform 실험 버전 출시
JVM과 자바스크립트간의 코드 공유 기능 추가
1.32018년 10월 29일[123]코루틴 지원 추가
1.4.02020년 8월 17일[123]오브젝티브-C스위프트 지원 추가
Kotlin/Multiplatform 알파 버전 출시
1.5.02021년 5월 5일[123]자바 레코드 클래스 지원 추가
serial 클래스 지원 추가
신규 IR 컴파일러 공개
1.6.02021년 11월 16일[123]Kotlin/Native 신규 메모리 관리자 추가
Duration API 안정화
1.7.02022년 6월 9일[123]코틀린 K2 컴파일러 알파 버전 공개
Gradle 증분 빌드 시 새로운 접근 방법 적용
1.8.02022년 12월 28일[123]kotlin-reflect 성능 개선
오브젝티브-C스위프트 상호운용성 개선
1.9.02023년 7월 26일[124]코틀린 K2 컴파일러 베타 버전 업데이트
2.0.0?[125]코틀린 K2 컴파일러 안정화


2. 4. 버전 정보

코틀린은 2016년 2월 15일 1.0 정식 버전이 출시된 이후, 지속적으로 업데이트되고 있다.[98] 1.4 버전 출시까지는 로드맵의 기능이 모두 준비 완료되어야 출시하는 방식을 사용했지만, 1.5 버전부터는 새로운 릴리즈 주기를 도입하였다.[126]

버전출시일주요 변경 사항
1.02016년 2월 14일[120]정식 버전 (안정화 버전) 출시
1.12016년 2월 15일[121]Kotlin/JS 안정화 버전
1.22017년 11월 27일[122]Kotlin/Multiplatform 실험 버전 출시
JVM과 자바스크립트간의 코드 공유 기능 추가
1.32018년 10월 29일[123]코루틴 지원 추가
1.4.02020년 8월 17일[123]오브젝티브-C스위프트 지원 추가
Kotlin/Multiplatform 알파 버전 출시
1.5.02021년 5월 5일[123]자바 레코드 클래스 지원 추가
serial 클래스 지원 추가
신규 IR 컴파일러 공개
1.6.02021년 11월 16일[123]Kotlin/Native 신규 메모리 관리자 추가
Duration API 안정화
1.7.02022년 6월 9일[123]코틀린 K2 컴파일러 알파 버전 공개
Gradle 증분 빌드 시 새로운 접근 방법 적용
1.8.02022년 12월 28일[123]kotlin-reflect 성능 개선
오브젝티브-C스위프트 상호운용성 개선
1.9.02023년 7월 26일[124]코틀린 K2 컴파일러 베타 버전 업데이트
2.0.02024년 5월[104]코틀린 K2 컴파일러 안정화



새로운 릴리즈 주기는 다음과 같다:[126]


  • 기능 릴리즈: 주요 기능 및 언어 자체가 업데이트되며, 1년에 두 번 출시된다. (예: 1.5.0, 1.6.0)
  • 증분 릴리즈: 컴파일러 개선, 성능 향상 등이 포함되며, 언어 변경사항은 없다. 2~3개월마다 출시된다. (예: 1.5.10, 1.5.20)
  • 버그 수정 릴리즈: 핫픽스 및 중요하지 않은 버그 수정이 포함된다. 기능/증분 릴리즈 후 1~2주 내에 출시되거나, 증분 릴리즈에 포함되기도 한다. (예: 1.3.71, 1.3.72)


2012년 2월 14일, 코틀린은 아파치 라이선스 버전 2.0에 따라 오픈 소스화되었다.[88][89]

3. 명칭

코틀린이라는 이름은 러시아 상트페테르부르크 근처 핀란드만의 코틀린 섬에서 유래되었다.[9][105] 젯브레인즈는 프로그래밍 언어 자바가 인도네시아의 자바 섬에서 이름을 따온 것처럼[9], 섬의 이름을 따서 코틀린으로 명명하기로 결정했다. 자바는 자바 품종의 커피에서 영감을 얻었으며, 이 커피 품종 자체도 섬의 이름에서 유래되었다.[10][11] 코틀린 섬은 상트페테르부르크 근처 발트해 핀란드만에 있으며, 길이가 약 12km인 길쭉한 섬이다.

공식 사이트에는[106] "이 섬에서 이름을 딴 코틀린급 구축함(en:Kotlin-class destroyer)이 있습니다만, 코틀린은 별도로 클래스를 파괴하려는 것은 아닙니다."라거나, "이 섬에서는 커피 등 외래 식물을 별로 재배하지 않는다고 생각합니다."라는 농담이 게재되어 있다.

4. 특징

스칼라에서 차용한 특징이 많다. Java영어 보다 간결하게 작성하는 것을 목표로 한다.[107]

세미콜론은 문 종료자로서 선택 사항이며, 대부분의 경우 줄 바꿈만으로도 컴파일러가 문이 종료되었음을 추론하기에 충분하다.[29]

스칼라에서 차용하여, 코틀린의 변수 선언과 매개변수 목록은 자료형이 변수 이름 뒤에 오며 (콜론으로 구분), 이는 에이다, 베이직, 파스칼, TypeScript, 러스트와 유사하다. 변수 이름의 정렬을 유도하여, 특히 연속된 변수 선언이 많고, 자료형 중 하나 이상이 타입 추론에 너무 복잡하거나, 사람이 이해하기 위해 명시적으로 선언해야 할 경우, 보기에 더 좋다.[30][31]

스칼라에서 차용하여, 코틀린의 변수는 읽기 전용이거나, 변경 가능할 수 있다.[32]

스칼라에서 차용하여, 클래스 멤버는 기본적으로 public이며, 클래스 자체는 기본적으로 final 클래스이므로, 기본 클래스가 키워드로 선언되지 않는 한 파생 클래스를 생성할 수 없다.

객체 지향 프로그래밍의 클래스와 멤버 함수 (메서드와 동일) 외에도, 코틀린은 절차적 프로그래밍함수를 사용하여 지원한다.[33]

코틀린 함수와 생성자는 기본 인수, 가변 길이 인수 목록, 명명된 매개변수, 고유 시그니처에 의한 오버로딩을 지원한다. 클래스 멤버 함수는 가상 함수이며, 호출되는 객체의 런타임 유형에 따라 디스패치된다.

코틀린 1.3은 계약(contracts)에 대한 지원을 추가했으며,[34] 이는 표준 라이브러리 선언에 대해 안정적이지만, 사용자 정의 선언에 대해서는 여전히 실험적이다. 계약은 아이펠의 계약에 의한 설계 프로그래밍 패러다임에서 영감을 받았다.[35]

[https://www.scala-js.org/ ScalaJS]에 따라, 코틀린 코드는 트랜스파일되어 자바스크립트로 변환될 수 있으며, 두 언어로 작성된 코드 간의 상호 운용성을 허용한다. 이는 코틀린으로 전체 웹 애플리케이션을 작성하거나, 코틀린 백엔드와 자바스크립트 프론트엔드 간에 코드를 공유하는 데 사용될 수 있다.[36]

특징적인 기능은 다음과 같다[107]


  • 정적 Null 안전 보장
  • 연산자 오버로딩
  • 고차 함수, 클로저
  • 믹스인과 제1급 위임
  • 프로퍼티 (필드는 없음)
  • 제네릭 선언 측에서의 변성 지정과 타입 프로젝션
  • 확장 함수
  • 모듈 및 빌드 기반
  • 인라인 함수 (오버헤드 없는 클로저)
  • 패턴 매칭
  • Java영어 와의 상호 운용성 (Kotlinfi 에서 Java영어 를 호출하는 것도, Java영어 에서 Kotlinfi 를 호출하는 것도 가능)
  • 구조화된 동시성을 기반으로 한 코루틴[108]


구문 규칙적인 특징은 Scala에 가깝고, 문장의 끝에 세미콜론이 필요 없으며, 또한 "변수명 : 타입명"의 순서로 변수를 선언한다. 타입 추론을 다양한 상황에서 지원한다.

4. 1. 간결성

코틀린은 자바보다 간결하게 코드를 작성하는 것을 목표로 한다.[107] 타입 추론을 지원하며, 문장 끝에 세미콜론이 필요 없는 등 Scala와 유사한 구문 규칙을 갖는다. 변수 선언 시에는 "변수명 : 타입명" 순서로 작성한다. 이러한 특징들을 통해 코드의 가독성을 향상시키고, 보일러플레이트 코드를 줄이는 데 기여한다.

4. 2. 안전성

코틀린은 널 가능 및 널 불가능 데이터 유형을 구분한다.[107] 모든 널 가능 객체는 유형 이름 뒤에 "?" 접미사를 사용하여 선언해야 하며, 널 가능 객체에 대한 연산은 개발자의 특별한 주의가 필요하다. 값을 사용하기 전에 명시적으로, 또는 코틀린의 널 안전 연산자를 사용하여 널 검사를 수행해야 한다.[107]

  • 안전 호출 연산자(?.): 널일 수 있는 객체의 메서드나 속성에 안전하게 접근하는 데 사용한다. 객체가 널인 경우 메서드는 호출되지 않으며 표현식은 널로 평가된다.
  • 엘비스 연산자(?:) (null 병합 연산자): 널이 아니면 첫 번째 피연산자를 반환하고, 그렇지 않으면 두 번째 피연산자를 반환한다.


이러한 특징들은 Java보다 간결하게 코드를 작성할 수 있도록 돕는다. 또한 정적 Null 안전을 보장한다.[107]

4. 3. 상호운용성

코틀린은 자바와의 상호운용성을 목표로 한다.[107] 코틀린에서 자바를 호출하거나, 자바에서 코틀린을 호출하는 것이 모두 가능하다.[107]

4. 4. 도구 지원

코틀린은 IntelliJ IDEA, 안드로이드 스튜디오, 이클립스, NetBeans 등 다양한 통합 개발 환경(IDE)에서 사용 가능하다.[44][45][46] 특히, 안드로이드 스튜디오는 3.0 버전부터 코틀린을 공식 지원한다.[40] JetBrains에서 제공하는 C/C++용 통합 개발 환경인 CLion은 Kotlin/Native를 지원한다.

일반적인 자바 빌드 도구와의 통합을 지원하며, 아파치 메이븐[41], 아파치 앤트[42], 그레이들[43][48]이 포함된다. 이맥스(Emacs)는 MELPA 패키지 저장소에 코틀린 모드를 가지고 있다.

5. 플랫폼

5. 1. Kotlin/JVM

코틀린을 JVM에서 작동하기 위한 런타임컴파일러로 코틀린 표준 라이브러리자바 API를 기반으로 작성되었으며 코틀린 리플렉션을 통해 자바 리플렉션 기능을 지원한다. 일반적인 필수 활용 코드를 자바와 더불어 기능적 지원 또한 가능하다.

일반적으로 안드로이드서버 사이드(스프링 프레임워크 등) 개발에 사용된다.

자바와의 상호운용성을 보장한다.

5. 2. Kotlin/JS

코틀린은 웹 브라우저Node.js자바스크립트 엔진에서 작동하기 위한 런타임컴파일러를 제공한다.[127] 타입스크립트 타입 정의 파일을 감지, 생성할 수 있고 사용하지 않는 코틀린 표준 라이브러리에서 사용되지 않는 코드를 제거하는 플러그인이 내장되어 있다.[127]

자바스크립트와의 상호운용성을 보장한다.

5. 3. Kotlin/Native

LLVM을 기반으로 작동하는 코틀린 컴파일러런타임으로, 응용 소프트웨어 및 모바일 응용 소프트웨어 개발에 사용된다. 마이크로소프트 윈도우, 리눅스, macOS, iOS 응용 소프트웨어 개발 및 웹어셈블리 개발을 지원한다. C, 오브젝티브-C, 코코아팟(CocoaPods)과의 상호운용성을 보장한다.

5. 4. Kotlin/Multiplatform

코틀린은 크로스 플랫폼 개발을 위한 런타임컴파일러로 사용된다. 라이브러리, 백엔드 서버, 웹, 데스크톱 앱(마이크로소프트 윈도우, 리눅스, macOS) 및 모바일 앱(iOS, 안드로이드) 개발에 사용된다.

6. 문법

6. 1. 일반적인 사용법

wikitext

코틀린 프로그램의 진입점은 "main"이라는 함수이며, 이는 명령 줄 인수를 포함하는 배열을 전달받을 수 있다. 코틀린 1.3부터는 선택 사항이다.[37] Perl, PHP, 그리고 유닉스 셸 스타일의 문자열 보간법이 지원된다. 타입 추론 또한 지원된다.

코틀린은 Java의 제한을 완화하여 static 메서드와 변수가 클래스 본문 내에서만 존재하도록 허용하는 제약을 없앴다. 정적 객체와 함수는 불필요한 클래스 레벨 없이 패키지의 최상위 레벨에서 정의될 수 있다. 자바와의 호환성을 위해 코틀린은 `JvmName` 어노테이션을 제공하며, 이 어노테이션은 패키지를 자바 프로젝트에서 볼 때 사용되는 클래스 이름을 지정한다. 예를 들어, `@file:JvmName("JavaClassName")`이 있다.

다음은 변수 선언, 문자열 템플릿, 반복문 등 기본적인 코틀린 코드 작성 방법을 보여주는 예시이다.

```kotlin

fun main() {

val name = "stranger" // 첫번째 변수 선언

println("Hi, $name!") // ...그리고 사용!

print("Current count:")

for (i in 0..10) { // 0에서 10까지 반복

print(" $i")

}

}

```

다음은 Hello, World! 예제이다.

```kotlin

// Hello, World! 예제

fun main() {

val scope = "World"

println("Hello, $scope!")

}

fun main(args: Array) {

for (arg in args)

println(arg)

}

```

(https://kotlinlang.org/docs/kotlin-tour-hello-world.html에서 가져와 설명함.)

```kotlin

fun main() {

println("Hello, world!")

// Hello, world!

}

```

6. 2. 비동기 코드

코틀린은 코루틴을 사용하여 비동기 코드를 작성할 수 있다. 코루틴은 일시 중단 후 나중에 재개할 수 있는 기능이다. 비동기 코드 작성을 위해서는 `kotlinx.coroutines` 라이브러리를 별도로 설치해야 한다.

```kotlin

import kotlinx.coroutines.*

suspend fun main() {

val start = System.currentTimeMillis()

coroutineScope {

for (i in 1..10) {

launch {

delay(3000L - i * 300)

log(start, "Countdown: $i")

}

}

}

log(start, "Liftoff!")

}

fun log(start: Long, msg: String) {

println("$msg " +

"(on ${Thread.currentThread().name}) " +

"after ${(System.currentTimeMillis() - start)/1000F}s")

}

```

위 코드는 `coroutineScope`를 사용하여 코루틴 범위를 생성하고, `launch`를 사용하여 10개의 병렬 작업을 시작한다. 각 작업은 `delay` 함수를 통해 지정된 시간만큼 일시 중지된다. `coroutineScope` 안의 모든 내용이 실행되면 "Liftoff!" 메시지가 출력된다.

6. 3. 객체 지향

코틀린은 클래스, 추상 클래스, 인터페이스, 상속 등 객체 지향 프로그래밍(OOP) 관련 문법을 지원한다. 기반 클래스 타입으로부터 새로운 클래스를 파생하기 위해서는 기반 클래스를 명시적으로 `open`으로 표시해야 한다. 이는 클래스가 기본적으로 열려 있는 자바와 같은 대부분의 객체 지향 프로그래밍 언어와 대조적이다.

```kotlin

// 클래스에 open을 사용하면 이 클래스는 파생 클래스를 허용합니다.

open class MegaButton {

// 함수에 open이 없으면

// 파생 클래스에서 함수가 재정의되는 경우 다형적 동작이 비활성화됩니다.

fun disable() { ... }

// 함수에 open을 사용하면

// 파생 클래스에서 함수가 재정의되는 경우 다형적 동작이 허용됩니다.

open fun animate() { ... }

}

class GigaButton: MegaButton() {

// 파생 클래스에서 함수를 재정의하려면 override 키워드를 명시적으로 사용해야 합니다.

override fun animate() { println("Giga Click!") }

}

```

추상 클래스는 파생 클래스에서 정의될 추상 또는 "순수 가상" 자리 표시자 함수를 정의하며, 기본적으로 열려 있다.

코틀린은 클래스와 같은 최상위 선언 및 클래스 멤버의 가시성을 제한하기 위해 다음과 같은 키워드를 제공한다: `public`, `internal`, `protected`, 그리고 `private`.

클래스 멤버에 적용될 때:

키워드가시성
public (기본값)어디에서나
internal모듈 내에서
protected하위 클래스 내에서
private클래스 내에서



최상위 선언에 적용될 때:

키워드가시성
public (기본값)어디에서나
internal모듈 내에서
private파일 내에서


6. 4. 함수형

코틀린은 고차 함수익명 함수, 즉 '''람다'''를 지원한다.[39] 람다는 중괄호 를 사용하여 선언되며, 매개변수를 사용하는 경우 중괄호 안에 선언되고 연산자가 뒤따른다.

```kotlin

// 다음 함수는 람다 f를 받아 "lambda" 문자열을 전달하여 f를 실행한다.

// (String) -> Unit은 String 매개변수와 Unit 반환 유형을 가진 람다를 나타낸다.

fun executeLambda(f: (String) -> Unit) {

f("lambda")

}

```

```kotlin

// 다음 문은 단일 매개변수를 취하여 println 함수에 전달하는 람다를 정의한다.

val l = { c : Any? -> println(c) }

// 매개변수가 없는 람다는 { }를 사용하여 간단하게 정의할 수 있다.

val l2 = { print("no parameters") }

```

C#과 유사하게 코틀린은 새로운 함수로 파생 클래스를 만드는 형식적인 절차 없이 모든 클래스에 확장 함수를 추가할 수 있다. 확장 함수는 클래스의 모든 공개 인터페이스에 접근할 수 있으며, 이를 사용하여 대상 클래스에 새로운 함수 인터페이스를 만들 수 있다. 확장 함수는 클래스의 함수와 똑같이 보이며, 클래스 함수의 코드 완성 검사에서 표시된다.

```kotlin

package MyStringExtensions

fun String.lastChar(): Char = get(length - 1)

>>> println("Kotlin".lastChar())

```

위 코드를 패키지의 최상위에 배치하면 String 클래스가 String 클래스의 원래 정의에 포함되지 않은 함수를 포함하도록 확장된다.

```kotlin

// 확장 함수를 사용하여 '+' 연산자 오버로딩

operator fun Point.plus(other: Point): Point {

return Point(x + other.x, y + other.y)

}

>>> val p1 = Point(10, 20)

>>> val p2 = Point(30, 40)

>>> println(p1 + p2)

Point(x=40, y=60)

```

코틀린의 `data class` 구조는 데이터를 저장하는 것을 주된 목적으로 하는 클래스를 정의하며, 이는 자바의 `record` 타입과 유사하다. 데이터 클래스는 일반적인 클래스와 유사하지만, 주요 메서드인 `equals`, `hashCode` 및 `toString`은 클래스 속성으로부터 자동으로 생성된다. 데이터 클래스는 상속이 가능하다는 점에서 자바의 레코드와는 차이점이 있다.

```kotlin

data class Message( // 데이터 클래스 생성

val sender: String,

val body: String,

val isRead: Boolean = false, // 인수에 기본 값 정의

)

val messages = listOf( // 리스트 생성

Message("Ma", "Hey! Where are you?"),

Message("Adam", "Everything going according to plan today?"),

Message("Ma", "Please reply. I've lost you!"),

)

```

```kotlin

fun main() {

// 누가 가장 많은 메시지를 보냈을까요?

val frequentSender = messages

.groupBy(Message::sender)

.maxByOrNull { (_, messages) -> messages.size }

?.key // 이름을 가져옵니다

println(frequentSender) // [Ma]

// Who are the senders?

val senders = messages

.asSequence() // 작업을 비동기로 만듬

.filter { it.body.isNotBlank() && !it.isRead } // 람다를 사용하거나...

.map(Message::sender) // ...멤버 참조를 사용하세요

.distinct()

.sorted()

.toList() // 시퀸스를 다시 리스트로 변환합니다.

println(senders) // [Adam, Ma]

}

6. 5. Null Safety

코틀린은 널 가능 및 널 불가능 데이터 유형을 구분한다. 모든 널 가능 객체는 유형 이름 뒤에 "?" 접미사를 사용하여 선언해야 한다. 널 가능 객체에 대한 연산은 개발자의 특별한 주의가 필요하다. 값을 사용하기 전에 명시적으로, 또는 코틀린의 널 안전 연산자를 사용하여 널 검사를 수행해야 한다.

  • `?.` (안전 호출 연산자)는 널일 수 있는 객체의 메서드나 속성에 안전하게 접근하는 데 사용할 수 있다. 객체가 널인 경우 메서드는 호출되지 않으며 표현식은 널로 평가된다.
  • `?:` (null 병합 연산자)는 널이 아니면 첫 번째 피연산자를 반환하고, 그렇지 않으면 두 번째 피연산자를 반환하는 이항 연산자이다. 이 연산자는 엘비스 프레슬리의 이모티콘 표현과 유사하여 엘비스 연산자라고도 한다.

6. 6. 기타 문법

'''구조 분해 선언'''은 객체를 한 번에 여러 변수로 분해한다. 예를 들어, 2D 좌표 객체는 두 개의 정수 x/Var영어와 y/Var영어로 ''구조 분해''될 수 있다. 예를 들어, `Map.Entry` 객체는 키와 값 필드에 대한 접근을 단순화하기 위해 구조 분해를 지원한다.

```kotlin

for ((key, value) in map)

println("$key: $value")

```

코틀린은 다른 함수나 메서드 내부에 지역 함수를 선언할 수 있다.

```kotlin

class User(val id: Int, val name: String, val address: String)

fun saveUserToDb(user: User) {

fun validate(user: User, value: String, fieldName: String) {

require(value.isNotEmpty()) { "사용자 ${user.id}를 저장할 수 없습니다: $fieldName 이(가) 비어있습니다" }

}

validate(user, user.name, "이름")

validate(user, user.address, "주소")

// 데이터베이스에 사용자 저장

...

}

```

'''밀봉된''' 클래스와 인터페이스는 하위 클래스 계층 구조를 제한하여 상속 계층 구조를 더 효과적으로 제어할 수 있게 한다.

밀봉된 인터페이스와 클래스 선언:

```kotlin

sealed interface Expr

sealed class Job

```

밀봉된 클래스의 모든 하위 클래스는 컴파일 시간에 정의된다. 밀봉된 클래스를 포함하는 모듈의 컴파일 이후에는 새로운 하위 클래스를 추가할 수 없다. 예를 들어, 컴파일된 jar 파일의 밀봉된 클래스는 하위 클래스를 가질 수 없다.

```kotlin

sealed class Vehicle

data class Car(val brandName: String, val owner: String, val color: String): Vehicle()

class Bike(val brandName: String, val owner: String, val color: String): Vehicle()

class Tractor(val brandName: String, val owner: String, val color: String): Vehicle()

val kiaCar = Car("KIA", "John", "Blue")

val hyundaiCar = Car("Hyundai", "Britto", "Green")

7. 활용

2017년 구글 I/O에서 코틀린이 공식 안드로이드 개발 언어로 발표되면서, 코틀린은 안드로이드에서 완벽하게 지원되는 세 번째 언어가 되었다.[49] 2020년 기준으로 코틀린은 안드로이드에서 가장 널리 사용되는 언어이며, 구글은 Play 스토어 상위 1,000개 앱 중 70%가 코틀린으로 작성되었다고 추정한다.[50] 구글 자체는 지도 및 드라이브를 포함하여 코틀린으로 작성된 60개의 앱을 가지고 있다.[50] 구글 홈과 같은 많은 안드로이드 앱이 코틀린으로 마이그레이션되는 과정에 있으며, 따라서 코틀린과 자바를 모두 사용한다.[50] 안드로이드의 코틀린은 널 포인터 안전성뿐만 아니라 더 짧고 읽기 쉬운 코드를 만들 수 있는 기능으로 인해 유용하게 여겨진다.[50]

스프링 프레임워크는 2017년 1월 4일 버전 5에서 공식적으로 코틀린 지원을 추가했다.[51] 스프링은 모든 문서를 코틀린으로 번역했으며, 코루틴과 같은 코틀린 고유 기능에 대한 내장 지원을 추가하여 코틀린을 더욱 지원한다.[52] 스프링 외에도, 젯브레인즈는 웹 애플리케이션 구축을 위한 코틀린 우선 프레임워크인 Ktor를 개발했다.[53]

코틀린은 서버 측 개발에서도 점차 사용이 늘고 있다. 2020년 젯브레인이 코틀린을 사용하는 개발자를 대상으로 한 설문 조사에서 47%가 웹 백엔드에 코틀린을 사용하고 있음을 발견했다.[54]

많은 회사/조직이 백엔드 개발에 코틀린을 사용하고 있다.[58][59][60][61][62][63][64][65][66][67][68][69][70][71][72][73]



골드만삭스, 웰스 파고, J.P. Morgan, 도이치 은행, UBS, HSBC, BNP 파리바, 소시에테 제네랄 등 유명 은행 컨소시엄에서 개발한 분산 원장인 코다(Corda)는 코드베이스의 90% 이상이 코틀린 코드이다.

2020년 젯브레인은 코틀린을 사용하는 개발자를 대상으로 한 설문 조사에서 56%가 모바일 앱에 코틀린을 사용하고, 47%가 웹 백엔드에 코틀린을 사용하고 있음을 발견했다. 전체 코틀린 개발자의 3분의 1이 조금 넘는 수가 다른 언어에서 코틀린으로 마이그레이션하고 있다고 답했다. 대부분의 코틀린 사용자는 안드로이드(또는 JVM에서)를 타겟으로 하고 있었으며, 코틀린 네이티브를 사용하는 경우는 6%에 불과했다.[54]

2018년, 코틀린은 깃허브에서 가장 빠르게 성장하는 언어였으며, 2017년 대비 2.6배 더 많은 개발자를 확보했다.[55] 2020년 Stack Overflow 개발자 설문 조사에 따르면 4번째로 가장 사랑받는 프로그래밍 언어이다.[56]

코틀린은 2019년 O'Reilly 오픈 소스 소프트웨어 컨퍼런스 브레이크아웃 어워드도 수상했다.[57]

일부 회사/조직은 웹 개발에 코틀린을 사용하고 있다.

다수의 회사들이 코틀린을 사용하고 있다고 공개적으로 밝혔다.

7. 1. 안드로이드 앱 개발

2017년 구글 I/O에서 코틀린이 안드로이드 개발 공식 언어로 발표되면서, 코틀린은 안드로이드에서 완벽하게 지원되는 세 번째 언어가 되었다.[49] 2020년 기준으로 코틀린은 안드로이드에서 가장 널리 사용되는 언어이며, 구글은 Play 스토어 상위 1,000개 앱 중 70%가 코틀린으로 작성되었다고 추정한다.[50] 구글 자체는 지도 및 드라이브를 포함하여 코틀린으로 작성된 60개의 앱을 가지고 있다.[50] 구글 홈과 같은 많은 안드로이드 앱이 코틀린으로 마이그레이션되는 과정에 있으며, 따라서 코틀린과 자바를 모두 사용한다.[50] 안드로이드의 코틀린은 널 포인터 안전성뿐만 아니라 더 짧고 읽기 쉬운 코드를 만들 수 있는 기능으로 인해 유용하게 여겨진다.[50]

7. 2. 서버 개발

스프링 프레임워크는 2017년 1월 4일 버전 5에서 공식적으로 코틀린 지원을 추가했다.[51] 스프링은 모든 문서를 코틀린으로 번역했으며, 코루틴과 같은 코틀린 고유 기능에 대한 내장 지원을 추가하여 코틀린을 더욱 지원한다.[52] 스프링 외에도, 젯브레인즈는 웹 애플리케이션 구축을 위한 코틀린 우선 프레임워크인 Ktor를 개발했다.[53]

코틀린은 서버 측 개발에서도 점차 사용이 늘고 있다. 2020년 젯브레인이 코틀린을 사용하는 개발자를 대상으로 한 설문 조사에서 47%가 웹 백엔드에 코틀린을 사용하고 있음을 발견했다.[54]

많은 회사/조직이 백엔드 개발에 코틀린을 사용하고 있다.[58][59][60][61][62][63][64][65][66][67][68][69][70][71][72][73]

골드만삭스, 웰스 파고, J.P. Morgan, 도이치 은행, UBS, HSBC, BNP 파리바, 소시에테 제네랄 등 유명 은행 컨소시엄에서 개발한 분산 원장인 코다(Corda)는 코드베이스의 90% 이상이 코틀린 코드이다.

7. 3. 기타 분야

코틀린은 스크립트 언어로서도 사용될 수 있으며, `.kts` 파일 확장자를 사용하는 코틀린 소스 파일이다. 스크립트는 컴파일러에 `-script` 옵션과 해당 스크립트 파일을 전달하여 실행할 수 있다.

```bash

$ kotlinc -script list_folders.kts "path_to_folder_to_inspect"

```

2017년 5월 구글 I/O에서 코틀린이 공식 안드로이드 개발 언어로 발표되면서, 안드로이드에서 널리 사용되고 있다.[49] 2020년 기준으로, 구글은 Play 스토어 상위 1,000개 앱 중 70%가 코틀린으로 작성되었다고 추정한다. 구글 자체는 지도 및 드라이브를 포함하여 코틀린으로 작성된 60개의 앱을 가지고 있다. 안드로이드의 코틀린은 널 포인터 안전성뿐만 아니라 더 짧고 읽기 쉬운 코드를 만들 수 있는 기능으로 인해 유용하게 여겨진다.[50]

안드로이드 외에도 코틀린은 서버 측 개발에서도 점차 사용이 늘고 있다. 스프링 프레임워크는 2017년 1월 4일, 버전 5에서 공식적으로 코틀린 지원을 추가했다.[51] 스프링은 모든 문서를 코틀린으로 번역했으며, 코루틴과 같은 많은 코틀린 고유 기능에 대한 내장 지원을 추가했다.[52] 젯브레인(JetBrains)은 웹 애플리케이션 구축을 위한 코틀린 우선 프레임워크인 Ktor를 개발했다.[53]

2020년 젯브레인이 코틀린을 사용하는 개발자를 대상으로 한 설문 조사에서 56%가 모바일 앱에, 47%가 웹 백엔드에 코틀린을 사용하고 있음을 발견했다. 전체 코틀린 개발자의 3분의 1이 조금 넘는 수가 다른 언어에서 코틀린으로 마이그레이션하고 있다고 답했다. 대부분의 코틀린 사용자는 안드로이드(또는 JVM에서)를 타겟으로 하고 있었으며, 코틀린 네이티브를 사용하는 경우는 6%에 불과했다.[54]

8. 코틀린 생태계

8. 1. 개발 도구

코틀린은 IntelliJ IDEA[46], 안드로이드 스튜디오[40], 이클립스[44][45], NetBeans를 포함한 통합 개발 환경에서 사용할 수 있다. IntelliJ IDEA 15는 IntelliJ 설치 프로그램에 코틀린 플러그인을 번들로 제공하고 즉시 코틀린을 지원하는 최초의 버전이었다.[47] 이맥스(Emacs)는 MELPA 패키지 저장소에 코틀린 모드를 가지고 있다. JetBrains사에서 제공하는 C/C++용 통합 개발 환경인 CLion은 Kotlin/Native를 지원한다.

코틀린은 일반적인 자바 빌드 도구와의 통합을 지원하며, 여기에는 아파치 메이븐(Apache Maven)[41], 아파치 앤트(Apache Ant)[42], 그레이들(Gradle)[43][48]이 포함된다.

8. 2. 커뮤니티

9. 한국과 코틀린

코틀린은 2018년 깃허브에서 가장 빠르게 성장하는 언어였으며, 2017년 대비 2.6배 더 많은 개발자를 확보했다.[55] 2020년 Stack Overflow 개발자 설문 조사에 따르면 4번째로 가장 사랑받는 프로그래밍 언어였다.[56]

알레그로[58], 아마존(Amazon)[59], 아틀라시안(Atlassian)[60], 캐시 앱(Cash App)[61][62], 플럭스(Flux)[63], 구글(Google)[64], 그레이들(Gradle)[65], 젯브레인즈(JetBrains)[66], 메쉬클라우드(Meshcloud)[67], 노르웨이 국세청(Norwegian Tax Administration)[68], OLX[69], 피보탈(Pivotal)[70], 로켓 트래블(Rocket Travel)[71], 샤잠(Shazam)[72], 잘란도(Zalando)[73] 등 많은 회사/조직이 백엔드 개발에 코틀린을 사용하고 있다.

바클레이즈 은행(Barclay's Bank)[74], Data2viz[75], Fritz2[76], 젯브레인즈(JetBrains)[77] 등은 웹 개발에 코틀린을 사용하고 있다.

베이스캠프(Basecamp)[78], 코세라(Coursera)[79], DripStat[80], 듀오링고(Duolingo)[81], 넷플릭스(Netflix)[82], 핀터레스트(Pinterest)[83], 트렐로(Trello)[84], 우버(Uber)[85] 등 다수의 회사들이 코틀린을 사용하고 있다고 공개적으로 밝혔다. 골드만삭스(Goldman Sachs), 웰스 파고(Wells Fargo), J.P. Morgan, 도이치 은행(Deutsche Bank), UBS, HSBC, BNP 파리바(BNP Paribas), 소시에테 제네랄(Société Générale) 등 유명 은행 컨소시엄에서 개발한 분산 원장인 코다(Corda)는 코드베이스의 90% 이상이 코틀린 코드이다.

참조

[1] 웹사이트 What is the correct English pronunciation of Kotlin? https://discuss.kotl[...] 2019-10-16
[2] 웹사이트 Kotlin for JavaScript - Kotlin Programming Language https://kotlinlang.o[...] 2020-08-20
[3] 웹사이트 Kotlin for cross-platform mobile development https://www.jetbrain[...] 2020-08-20
[4] 웹사이트 Kotlin Foundation - Kotlin Programming Language https://kotlinlang.o[...] 2019-12-16
[5] 웹사이트 Kotlin is now Google's preferred language for Android app development https://techcrunch.c[...] 2019-05-07
[6] 웹사이트 Kotlin FAQ https://kotlinlang.o[...] 2024-08-20
[7] 웹사이트 Stability of Kotlin Components https://kotlinlang.o[...] 2021-05-21
[8] 웹사이트 Kotlin 1.5.0 – the First Big Release of 2021 https://blog.jetbrai[...] 2021-05-04
[9] 간행물 Андрей Бреслав — Kotlin для Android: коротко и ясно https://www.youtube.[...] 2015-01-08
[10] 웹사이트 So why did they decide to call it Java? https://www.javaworl[...] 1996-10-04
[11] 웹사이트 Java Definition & Meaning https://www.merriam-[...] 2023-06-08
[12] 웹사이트 JetBrains readies JVM language Kotlin https://www.infoworl[...] 2011-07-22
[13] 웹사이트 Kotlin Goes Open Source https://adtmag.com/a[...] 1105 Enterprise Computing Group 2012-02-22
[14] 웹사이트 Why JetBrains needs Kotlin https://blog.jetbrai[...] 2011-08-02
[15] 웹사이트 test · JetBrains/kotlin@3e4dce3 https://github.com/J[...] 2022-10-17
[16] 웹사이트 Kotlin 1.0 Released: Pragmatic Language for JVM and Android | Kotlin Blog https://blog.jetbrai[...] 2016-02-15
[17] 웹사이트 Kotlin on Android. Now official https://blog.jetbrai[...] 2017-05-17
[18] 웹사이트 Kotlin 1.2 Released: Sharing Code between Platforms | Kotlin Blog https://blog.jetbrai[...] 2017-11-28
[19] 웹사이트 Multiplatform Projects - Kotlin Programming Language https://kotlinlang.o[...] 2020-08-20
[20] 웹사이트 Kotlin/kotlin-full-stack-application-demo https://github.com/K[...] Kotlin 2020-04-03
[21] 웹사이트 Kotlin full stack app demo: update all involving versions to work with 1.3.70 release https://youtrack.jet[...] 2020-04-04
[22] 뉴스 Kotlin 1.1 Released with JavaScript Support, Coroutines and more https://blog.jetbrai[...] 2017-05-01
[23] 웹사이트 What's New in Kotlin 1.4 - Kotlin Programming Language https://kotlinlang.o[...] 2020-08-20
[24] 웹사이트 What's new in Kotlin 1.7.0 {{!}} Kotlin https://kotlinlang.o[...] 2022-06-20
[25] 웹사이트 Kotlin 1.8.0 adds recursive copy, delete for directories https://www.infoworl[...] 2023-01-12
[26] 웹사이트 Kotlin 1.9.0 Released https://blog.jetbrai[...] 2023-07-06
[27] 웹사이트 Kotlin 2.0.0 https://github.com/J[...] 2024-05-21
[28] 웹사이트 JVM Languages Report extended interview with Kotlin creator Andrey Breslav https://zeroturnarou[...] 2013-04-22
[29] 웹사이트 Semicolons https://confluence.j[...] 2014-02-08
[30] 웹사이트 Types are moving to the right https://elizarov.med[...] 2020-07-16
[31] 웹사이트 Roman Elizarov is the new Project Lead for Kotlin https://blog.jetbrai[...] JetBrains 2020-11-19
[32] 웹사이트 Basic Syntax https://kotlinlang.o[...] Jetbrains 2018-01-19
[33] 웹사이트 functions https://confluence.j[...] 2014-02-08
[34] 웹사이트 What's New in Kotlin 1.3 - Kotlin Programming Language https://kotlinlang.o[...] 2020-04-04
[35] 웹사이트 Design by Contract (DbC) design considerations https://discuss.kotl[...] 2020-04-04
[36] 웹사이트 Kotlin for JavaScript {{!}} Kotlin https://kotlinlang.o[...] 2021-01-21
[37] 웹사이트 Kotlin Examples: Learn Kotlin Programming By Example https://play.kotlinl[...]
[38] 웹사이트 Scope functions {{!}} Kotlin https://kotlinlang.o[...] 2024-08-10
[39] 웹사이트 Higher-Order Functions and Lambdas https://kotlinlang.o[...] Jetbrains
[40] 웹사이트 Kotlin and Android https://developer.an[...]
[41] 웹사이트 Using Maven – Kotlin Programming Language https://kotlinlang.o[...]
[42] 웹사이트 Using Ant – Kotlin Programming Language https://kotlinlang.o[...]
[43] 웹사이트 Using Gradle – Kotlin Programming Language https://kotlinlang.o[...]
[44] 웹사이트 Getting Started with Eclipse Neon – Kotlin Programming Language https://kotlinlang.o[...] 2016-11-10
[45] 웹사이트 JetBrains/kotlin-eclipse: Kotlin Plugin for Eclipse https://github.com/J[...] GitHub
[46] 웹사이트 Kotlin :: JetBrains Plugin Repository https://plugins.jetb[...] 2017-03-31
[47] 웹사이트 What's New in IntelliJ IDEA 2017.1 https://www.jetbrain[...]
[48] 웹사이트 Gradle {{!}} Kotlin https://kotlinlang.o[...] 2024-04-08
[49] 뉴스 Google makes Kotlin a first-class language for writing Android apps https://techcrunch.c[...] 2017-05-17
[50] 웹사이트 Kotlin programming language: How Google is using it to squash the code bugs that cause most crashes https://www.zdnet.co[...]
[51] 웹사이트 Introducing Kotlin support in Spring Framework 5.0 https://spring.io/bl[...] Pivotal 2017-01-04
[52] 웹사이트 The State of Kotlin Support in Spring https://blog.jetbrai[...] 2020-08-14
[53] 웹사이트 Review of Microservices Frameworks: A Look at Spring Boot Alternatives https://dzone.com/ar[...]
[54] 웹사이트 Kotlin Programming - The State of Developer Ecosystem 2020 https://www.jetbrain[...]
[55] 웹사이트 The state of the Octoverse https://octoverse.gi[...]
[56] 웹사이트 Stack Overflow Developer Survey 2020 https://insights.sta[...]
[57] 웹사이트 Kotlin wins Breakout Project of the Year award at OSCON '19 https://blog.jetbrai[...] 2019-07-18
[58] 웹사이트 Kotlin at Allegro https://talkingkotli[...] 2018-10
[59] 웹사이트 QLDB at Amazon https://talkingkotli[...] 2020-06-30
[60] Youtube Future of Jira Software powered by Kotlin https://www.youtube.[...] 2019-10-29
[61] 웹사이트 Going Full Kotlin Multiplatform https://talkingkotli[...] 2020-04-14
[62] 웹사이트 square/sqldelight https://github.com/s[...]
[63] 웹사이트 Using Kotlin for backend development at Flux https://talkingkotli[...] 2019-08-14
[64] Youtube State of Kotlin on Android https://www.youtube.[...] 2020-06-10
[65] 웹사이트 Gradle Kotlin DSL Primer https://docs.gradle.[...]
[66] 웹사이트 Kotless https://talkingkotli[...] 2020-01-30
[67] 웹사이트 Kotlin on the backend at Meshcloud https://talkingkotli[...] 2018-02-28
[68] Youtube KotlinConf 2019: Kotlin Runs Taxes in Norway by Jarle Hansen & Anders Mikkelsen https://www.youtube.[...] 2019-12-16
[69] 웹사이트 Greenfield Kotlin at OLX https://talkingkotli[...] 2018-08-24
[70] 웹사이트 Application Monitoring with Micrometer https://talkingkotli[...] 2018-06-14
[71] 웹사이트 Groovy and Kotlin Interop at Rocket Travel https://talkingkotli[...] 2018-05-14
[72] 웹사이트 Kotlin at Shazam https://talkingkotli[...] 2018-07-29
[73] 웹사이트 Zally - An API Linter https://talkingkotli[...] 2018-01-29
[74] 웹사이트 Java/Kotlin Developer - Barclays - Prague - Wizbii https://www.wizbii.c[...] 2020-09-29
[75] 웹사이트 KotlinConf 2017 - Frontend Kotlin from the Trenches by Gaetan Zoritchak https://www.youtube.[...] 2017-11-30
[76] 웹사이트 Fritz2 https://talkingkotli[...] 2020-09-14
[77] 웹사이트 KotlinConf 2019: Kotlin in Space by Maxim Mazin https://www.youtube.[...] 2019-12-18
[78] 뉴스 How we made Basecamp 3's Android app 100% Kotlin – Signal v. Noise https://m.signalvnoi[...] Signal v. Noise 2017-04-29
[79] 웹사이트 Becoming bilingual@coursera https://medium.com/c[...] 2018-04-26
[80] 웹사이트 Kotlin in Production – What works, Whats broken https://blog.dripsta[...] 2016-09-24
[81] 웹사이트 Duolingo on Twitter https://twitter.com/[...] 2020-04-13
[82] 웹사이트 Rob Spieldenner on twitter https://twitter.com/[...] 2019-07-24
[83] 웹사이트 Droidcon NYC 2016 - Kotlin in Production https://www.youtube.[...] 2016-11-03
[84] 웹사이트 Dan Lew on Twitter https://twitter.com/[...] 2019-07-24
[85] 웹사이트 Measuring Kotlin Build Performance at Uber https://www.uber.com[...] 2019-04-30
[86] 웹사이트 Releases Kotlin 2.0.10 https://github.com/J[...] Kotlin Foundation 2024-08-16
[87] 웹사이트 Generics: in, out, where - Kotlin Programming Language https://kotlinlang.o[...] 2020-09-07
[88] 웹사이트 Language of the Month: Kotlin http://www.drdobbs.c[...] 2012-02-14
[89] 웹사이트 Java「Kotlin」、オープソース化 http://news.mynavi.j[...] 2018-06-08
[90] 웹사이트 kotlin-stdlib - Kotlin Programming Language https://kotlinlang.o[...] 2020-09-07
[91] 웹사이트 Kotlin Playground: Edit, Run, Share Kotlin Code Online https://play.kotlinl[...] 2020-09-07
[92] 웹사이트 JetBrainsの新言語「Kotlin」を Web ブラウザで試してみよう! https://news.mynavi.[...] 2018-06-08
[93] 웹사이트 Kotlin Programming Language by JetBrains – Kotlin Blog {{!}} JetBrains https://blog.jetbrai[...] 2020-09-07
[94] 웹사이트 Kotlin M2 is Out! {{!}} The Kotlin Blog https://blog.jetbrai[...] 2021-04-02
[95] 웹사이트 Kotlin M3 is Out! {{!}} The Kotlin Blog https://blog.jetbrai[...] 2021-04-02
[96] 웹사이트 Kotlin M4 is Out! {{!}} The Kotlin Blog https://blog.jetbrai[...] 2021-04-02
[97] 웹사이트 Kotlin M6 is here! {{!}} The Kotlin Blog https://blog.jetbrai[...] 2021-07-09
[98] 웹사이트 Kotlin 1.0 Released: Pragmatic Language for JVM and Android {{!}} The Kotlin Blog https://blog.jetbrai[...] 2021-04-02
[99] 웹사이트 Kotlin 1.2 Released: Sharing Code between Platforms {{!}} The Kotlin Blog https://blog.jetbrai[...] 2021-07-09
[100] 웹사이트 Kotlin 1.3 Released with Coroutines, Kotlin/Native Beta, and more https://blog.jetbrai[...] 2018-10-29
[101] 웹사이트 Kotlin is now Google’s preferred language for Android app development {{!}} TechCrunch https://techcrunch.c[...] 2021-04-02
[102] 웹사이트 Kotlin 1.5.0 – the First Big Release of 2021 {{!}} The Kotlin Blog https://blog.jetbrai[...] 2021-07-09
[103] 웹사이트 What's new in Kotlin 1.7.0 {{!}} Kotlin https://kotlinlang.o[...] 2023-06-09
[104] 웹사이트 Kotlin 2.0 リリース記念: 高速、スマート、マルチプラットフォーム対応 {{!}} The Kotlin Blog https://blog.jetbrai[...] 2024-07-29
[105] 간행물 ロシア出身の「Kotlin」がAndroidの正式開発言語に https://www.itmedia.[...] ITmedia 2017-05-18
[106] 웹사이트 Reference - Kotlin Programming Language https://kotlinlang.o[...] 2020-09-07
[107] 간행물 The Kotlin Programming Language
[108] 웹사이트 Coroutines basics https://kotlinlang.o[...] 2021-03-03
[109] 웹인용 What is the correct English pronunciation of Kotlin? https://discuss.kotl[...] 2022-09-30
[110] 웹인용 Kotlin is now Google’s preferred language for Android app development http://social.techcr[...] 2019-05-08
[111] 웹인용 JetBrains readies JVM language Kotlin https://www.infoworl[...] InfoWorld 2011-07-22
[112] 웹인용 Kotlin Goes Open Source https://adtmag.com/a[...] 1105 Enterprise Computing Group 2012-02-22
[113] 인용 Андрей Бреслав — Kotlin для Android: коротко и ясно https://www.youtube.[...] 2017-05-28
[114] 웹인용 So why did they decide to call it Java? https://www.javaworl[...] 2017-10-14
[115] 웹인용 Why JetBrains needs Kotlin https://blog.jetbrai[...]
[116] 웹인용 Kotlin 1.0 Released: Pragmatic Language for JVM and Android | Kotlin Blog https://blog.jetbrai[...] 2017-04-11
[117] 웹인용 Kotlin on Android. Now official https://blog.jetbrai[...] 2017-05-17
[118] 문서 https://kotlinlang.org/docs/android-overview.html
[119] 문서 https://twitter.com/jmslau/status/1087827632752738304
[120] 웹인용 Kotlin 1.0 Released: Pragmatic Language for the JVM and Android https://blog.jetbrai[...] 2023-03-10
[121] 웹인용 What's new in Kotlin 1.1 https://kotlinlang.o[...] 2023-03-10
[122] 웹인용 What's new in Kotlin 1.2 https://kotlinlang.o[...] 2023-03-10
[123] 웹인용 Kotlin releases https://kotlinlang.o[...] 2023-03-10
[124] 웹인용 Kotlin 1.9.0 릴리스 {{!}} The Kotlin Blog https://blog.jetbrai[...] 2023-12-27
[125] 웹인용 K2 컴파일러가 Kotlin 2.0에서 안정화됩니다 https://blog.jetbrai[...] 2023-03-10
[126] 웹인용 New Release Cadence for Kotlin and the IntelliJ Kotlin Plugin https://blog.jetbrai[...] 2023-03-10
[127] 웹인용 Kotlin/JS dead code elimination https://kotlinlang.o[...] 2022-10-04



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com