Kotlin(프로그래밍 언어)
Kotlin (programming language)| 패러다임 | 다중 패러다임: 객체 지향, 기능, 필수, 블록 구조화, 선언, 범용, 반사, 동시 |
|---|---|
| 설계자 | 제트브레인 |
| 개발자 | 제트브레인 |
| 처음 등장한 | 2011년 7월 22일, 전( |
| 안정된 릴리스 | 1.7.10[1] / 2022년 7월 7일; 전 7일) |
| 타이핑 분야 | 추정, 정적, 강력 |
| 플랫폼 | |
| OS | 크로스 플랫폼 |
| 면허증. | Apache 라이센스 2.0 |
| 파일 이름 확장자 | .kt, .kts, .ktm |
| 웹 사이트 | kotlinlang |
| 영향을 받다 | |
Kotlin(/kktltlnn/)[2]은 타입 추론을 가진 크로스 플랫폼, 정적 유형의 범용 프로그래밍 언어입니다.Kotlin은 Java와 완전히 상호 운용되도록 설계되었으며 Kotlin의 표준 라이브러리의 JVM 버전은 Java Class [3][failed verification]Library에 의존하지만 유형 추론을 통해 구문을 보다 간결하게 할 수 있습니다.Kotlin은 주로 JVM을 대상으로 하며, LLVM을 통해 JavaScript(예를 들어 React를 사용하는[4] 프런트엔드 웹 애플리케이션) 또는 네이티브 코드(예를 들어 Android [5]앱과 비즈니스 로직을 공유하는 네이티브 iOS 앱)로 컴파일합니다.언어 개발 비용은 JetBrains가 부담하고 Kotlin Foundation은 Kotlin [6]상표권을 보호합니다.
2019년 5월 7일, 구글은 코틀린 프로그래밍 언어가 안드로이드 [7]앱 개발자들이 선호하는 언어가 되었다고 발표했다.2017년 10월 Android Studio 3.0 출시 이후 표준 자바 컴파일러의 대안으로 Kotlin이 포함되었습니다.Android Kotlin 컴파일러는 기본적으로 Java 8 바이트 코드를 생성하지만 프로그래머는 최적화를 [8]위해 Java 9를 최대 18까지 대상으로 선택하거나 더 많은 기능을 허용합니다. Java 16에서 도입된 양방향 레코드 클래스 상호 운용성 지원은 Kotlin 1.5에서 안정적이라고 간주됩니다.
Kotlin은 JavaScript로 컴파일하여 웹을 지원합니다(즉, 기존 백엔드를 가진 Kotlin/JS는 버전 1.30 이후 안정적이라고 선언됨). 반면 새로운 Kotlin/JS(IR 기반)는 버전 1.5.30 이후 베타 버전입니다(예: Kotlin/Native(예:Apple Silicon Support)는 버전 1.[9][10]3 이후 베타 버전으로 간주되고 있습니다.
역사
2011년 7월 JetBrains는 JVM의 새로운 언어인 Project Kotlin을 공개했습니다.이 언어는 [11]1년간 개발되어 왔습니다.JetBrains의 리더인 Dmitry Jemerov는 Scala를 제외하고 대부분의 언어에는 그들이 찾고 있는 특징이 없다고 말했다.그러나 그는 스칼라의 느린 컴파일 시간을 [11]단점으로 꼽았다.Kotlin이 밝힌 목표 중 하나는 Java만큼 빠르게 컴파일하는 것이다.2012년 2월 JetBrains는 Apache 2 [12]라이선스로 프로젝트를 소싱했습니다.
그 이름은 세인트루이스 근처의 코틀린 섬에서 유래되었다. 피터스버그.안드레이 브레슬라프는 자바가 인도네시아 자바섬의 이름을[13] 딴 것처럼 이 섬의 이름을 짓기로 결정했다고 언급했다.[14]
JetBrains는 이 새로운 언어가 인텔리J IDEA 판매를 [15]촉진할 것으로 기대하고 있다.
Kotlin 1.0은 2016년 [16]2월 15일에 출시되었습니다.이는 공식적으로 안정된 첫 번째 릴리스로 간주되며 JetBrains는 이 버전부터 장기적인 하위 호환성을 약속했습니다.
구글 I/O 2017에서 구글은 안드로이드에서 [17]코틀린에 대한 최고 수준의 지원을 발표했습니다.
Kotlin 1.2는 [18]2017년 11월 28일에 출시되었습니다.JVM과 JavaScript 플랫폼 간의 코드 공유 기능이 이 릴리스에 새롭게 추가되었습니다(버전 1.4의 멀티플랫폼 프로그래밍은 "실험적"에서 업그레이드된 알파 기능입니다[19]).새로운 Kotlin/JS Gradle 플러그인으로 [20][21]풀스택 데모가 작성되었습니다.
코틀린 1.3은 2018년 10월 29일 출시되었으며 비동기 프로그래밍용 코루틴을 제공하였다.
2019년 5월 7일, 구글은 코틀린 프로그래밍 언어가 안드로이드 [7]앱 개발자들이 선호하는 언어가 되었다고 발표했다.
코틀린 1.4는 2020년 8월에 출시되었으며, 예를 들어 애플의 플랫폼 지원(Objective-C/[22]Swift interop)에 약간의 변경이 가해졌다.
코틀린 1.5는 2021년 5월에 출시되었습니다.
코틀린 1.6은 2021년 11월에 출시되었습니다.
Kotlin 1.7은 2022년 6월에 출시되었으며, 여기에는 새로운 Kotlin [23]K2 컴파일러의 알파 버전이 포함되어 있습니다.
설계.
개발 책임자인 Andrey Breslav는 Kotlin이 산업용 객체 지향 언어이며 Java보다 "더 나은 언어"가 되도록 설계되어 있지만 Java 코드와 완전히 상호 운용이 가능하기 때문에 기업은 Java에서 Kotlin으로 [24]점진적으로 이행할 수 있다고 말했습니다.
세미콜론은 스테이트먼트 터미네이터로서 옵션입니다.대부분의 경우, 새로운 행으로 컴파일러가 스테이트먼트가 [25]종료한 것을 추측할 수 있습니다.
Kotlin 변수 선언 및 파라미터 목록에는 Ada, BASIC, Pascal, TypeScript 및 Rust와 마찬가지로 변수 이름 뒤에 데이터 유형이 있습니다(및 콜론 구분자 포함).현재 프로젝트 리더인 Roman Elizarov의 기사에 따르면, 이것은 변수 이름의 정렬을 가져오고 특히 몇 개의 변수 선언이 연속적으로 존재하며 유형 중 하나 이상이 너무 복잡하거나 인간 독자들이 [26][27]이해하기 위해 명시적으로 선언해야 할 때 눈에 더 즐겁다.
Kotlin의 변수는 읽기 전용으로 선언할 수 있습니다.var [28]키워드와 함께 선언된 val 키워드 또는 mutable.
클래스 멤버는 디폴트로는 퍼블릭이고 클래스 자체는 디폴트로는 final입니다.즉, 기본 클래스가 open 키워드로 선언되지 않는 한 파생 클래스 작성은 디세블이 됩니다.
오브젝트 지향 프로그래밍의 클래스나 멤버 함수(메서드에 상당)에 가세해,[29] Kotlin은 함수를 사용한 프로시저 프로그래밍도 서포트하고 있습니다.Kotlin 함수 및 컨스트럭터는 기본 인수, 가변 길이 인수 목록, 명명된 인수 및 고유 서명에 의한 오버로드를 지원합니다.클래스 멤버 함수는 가상입니다. 즉, 호출되는 객체의 런타임 유형에 따라 디스패치됩니다.
Kotlin 1.3은 표준 라이브러리 선언에는 안정적이지만 사용자 정의 선언에는 여전히 실험적인 [30]계약에 대한 지원을 추가했습니다.계약은 계약 프로그래밍 패러다임에 의한[31] 에펠의 디자인에서 영감을 얻었다.
Kotlin 개발자에 따르면 Kotlin에서 JavaScript 코드를 호출할 수 있습니다.예를 들어 완전한 타입 세이프 리액트 응용 프로그램을 쓰거나 프런트엔드와 검증 로직을 공유하는 풀스택 웹 응용 프로그램을 쓰고 유지할 수 있습니다.또한 Kotlin 코드에서 라이브러리는 JavaScript 또는 TypeSc로 작성된 모든 코드 베이스에서 모듈로 소비할 수 있습니다.리프"[32]라고 적혀 있습니다.
구문
절차 프로그래밍 스타일
Kotlin은 정적 메서드와 변수가 클래스 본문 내에만 존재할 수 있도록 하는 Java의 제한을 완화합니다.스태틱 오브젝트 및 함수는 용장 클래스레벨을 필요로 하지 않고 패키지의 최상위 레벨에서 정의할 수 있습니다.Java와의 호환성을 위해 Kotlin은JvmNameJava 프로젝트에서 패키지를 볼 때 사용되는 클래스 이름을 지정하는 주석입니다.예를들면,@file:JvmName("JavaClassName").
주요 진입점
C, C++, C#, Java 및 Go와 마찬가지로 Kotlin 프로그램의 엔트리 포인트는 "main"이라는 함수로, 명령줄 인수를 포함하는 배열을 전달할 수 있습니다.이것은 Kotlin 1.[33]3 이후 옵션입니다.Perl, PHP 및 Unix 쉘 스타일의 문자열 보간이 지원됩니다.유형 추론도 지원됩니다.
// Hello, World! 예 재밌어요 주된() { 값 범위 = "세계" 인쇄("안녕하세요.$범위!") } 재밌어요 주된(args: 어레이< >스트링>) { 위해서 (arg 에 args) 인쇄(arg) } 확장 함수
C#과 마찬가지로 Kotlin은 새로운 함수로 파생 클래스를 만드는 절차 없이 모든 클래스에 확장 함수를 추가할 수 있습니다.확장 함수는 클래스의 모든 퍼블릭인터페이스에 액세스 할 수 있습니다.이것에 의해, 타겟클래스에의 새로운 함수인터페이스를 작성할 수 있습니다.확장 함수는 클래스의 함수와 동일하게 나타나며 클래스 함수의 코드 완성 검사에서 나타납니다.예를 들어 다음과 같습니다.
패키지 MyString Extensions(MyString 확장) 재밌어요 스트링.lastChar(): 문자 = 얻다(길이 - 1) >>> 인쇄(코틀린.lastChar()) 위의 코드를 패키지의 최상위 레벨에 배치함으로써 String 클래스가 확장되고,lastCharString 클래스의 원래 정의에 포함되지 않은 함수입니다.
// 확장 함수를 사용하여 '+' 연산자를 오버로드하는 중 교환입니다. 재밌어요 포인트.플러스(다른.: 포인트): 포인트 { 돌아가다 포인트(x + 다른..x, y + 다른..y) } >>> 값 p1 = 포인트(10, 20) >>> 값 p2 = 포인트(30, 40) >>> 인쇄(p1 + p2) 포인트(x=40, y=60) 확산 연산자를 사용하여 인수 언팩
Python과 마찬가지로 확산 연산자 아스타리스크(*)는 함수에 대한 콤마 구분 인수로 배열의 내용을 언팩합니다.
재밌어요 주된(args: 어레이< >스트링>) { 값 목록. = 리스트("메시지: ", *args) 인쇄(목록.) } 선언 파괴
선언을 파괴하면 개체가 한 번에 여러 변수로 분해됩니다. 예를 들어 2D 좌표 객체가 x와 y의 두 정수로 구조화될 수 있습니다.
예를 들어,Map.Entry오브젝트는 키 필드와 값 필드에 대한 접근을 단순화하기 위해 파괴를 지원합니다.
위해서 ((열쇠, 가치) 에 지도) 인쇄("$열쇠:$가치") 중첩 함수
Kotlin은 로컬 함수를 다른 함수 또는 메서드의 내부에서 선언할 수 있도록 합니다.
학급 사용자(값 아이디: 내부, 값 이름.: 스트링, 값 주소.: 스트링) 재밌어요 save User ToDb(유저: 사용자) { 재밌어요 입증하다(유저: 사용자, 가치: 스트링, 필드명: 스트링) { 요구하다(가치.비어 있지 않다()) { "사용자를 저장할 수 없습니다.${유저.아이디}: 비어 있다$필드명" } } 입증하다(유저, 유저.이름., "이름") 입증하다(유저, 유저.주소., "주소") // 데이터베이스에 사용자 저장 ... } 클래스는 기본적으로 최종입니다.
Kotlin에서 기본 클래스 유형에서 새 클래스를 파생하려면 기본 클래스를 명시적으로 "open"으로 표시해야 합니다.이는 클래스가 기본적으로 열려 있는 Java와 같은 대부분의 객체 지향 언어와는 대조적입니다.
기본 클래스에서 새 하위 클래스를 파생하기 위해 열려 있는 기본 클래스의 예제입니다.
// 클래스에서 열리면 이 클래스에서 파생 클래스를 허용합니다. 열다. 학급 메가버튼 { // 함수의 no-open은 다음을 의미합니다. // 파생 클래스에서 함수가 재정의되면 다형 동작이 비활성화됩니다. 재밌어요 무효로 하다() { ... } // 함수로 열리면 // 파생 클래스에서 함수가 재정의된 경우 다형 동작이 허용됨 열다. 재밌어요 활기를 띠다() { ... } } 학급 기가 버튼: 메가버튼() { // 파생 클래스의 함수를 재정의하기 위해 필요한 override 키워드의 명시적 사용 덮어쓰다 재밌어요 활기를 띠다() { 인쇄('기가클릭!') } } 추상 클래스는 기본적으로 열려 있습니다.
추상 클래스는 파생 클래스에서 정의되는 추상 또는 "순수한 가상" 자리 표시자 함수를 정의합니다.추상 클래스는 기본적으로 열려 있습니다.
// open 키워드는 필요 없습니다.기본적으로 이미 열려 있습니다. 추상적인 학급 애니메이션 { // 이 가상 함수도 기본적으로 열려 있습니다. 추상적인 재밌어요 활기를 띠다() 열다. 재밌어요 정지 애니메이션() { } 재밌어요 애니메이션 Twice() { } } 클래스는 기본적으로 공개됩니다.
Kotlin은 클래스 등의 최상위 선언 및 클래스 구성원에 대한 가시성을 제한하기 위해 다음 키워드를 제공합니다.public,internal,protected,그리고.private.
클래스 멤버에게 적용되는 경우:
| 키워드 | 가시성 |
|---|---|
public(디폴트) | 온통. |
internal | 모듈 내 |
protected | 서브클래스 내 |
private | 클래스 내 |
최상위 선언에 적용되는 경우:
| 키워드 | 가시성 |
|---|---|
public(디폴트) | 온통. |
internal | 모듈 내 |
private | 파일 내 |
예:
// 클래스는 현재 모듈에만 표시됨 내부의 열다. 학급 Talky Button{ // 메서드는 현재 클래스에만 표시됨 사적인 재밌어요 고함을 지르다() = 인쇄("야!") // 현재 클래스 및 파생 클래스에 메서드가 표시됨 보호되고 있다 재밌어요 속삭이다() = 인쇄("얘기하자!") } 내부의 학급 마이토크 버튼: Talky Button() { 재밌어요 발성() = 잘 하는 군요.속삭이다() } 마이토크 버튼().발성() 프라이머리 컨스트럭터와 세컨더리 컨스트럭터
Kotlin은 클래스 정의 자체의 일부로 "프라이머리 생성자"의 지정을 지원하며, 클래스 이름 뒤에 이어지는 인수 목록으로 구성됩니다.이 인수 목록은 Kotlin의 표준 함수 인수 목록에서 확장된 구문을 지원하며, 이를 통해 가시성, 확장성 및 가변성 속성을 비롯한 기본 생성자의 클래스 속성을 선언할 수 있습니다.또한 서브클래스를 정의할 때 슈퍼인터페이스 및 슈퍼클래스의 속성을 프라이머리 컨스트럭터에서 덮어쓸 수 있습니다.
// 기본 생성자 구문을 사용하는 클래스의 예 // (이 클래스에 필요한 생성자는 1개뿐) 열다. 학급 베이스 유저(열다. 변화하다 서브스크라이브: 부울) 열다. 학급 파워 유저(보호되고 있다 값 닉네임: 스트링, 최종 덮어쓰다 변화하다 서브스크라이브: 부울 = 진실의):베이스 유저(서브스크라이브) { } 그러나 클래스에 여러 컨스트럭터가 필요한 경우 C++, C# 및 Java와 같은 대부분의 객체 지향 언어에서 사용되는 컨스트럭터 구문과 매우 유사한 세컨더리 컨스트럭터 구문을 사용할 수 있습니다.
// 보조 생성자 구문을 사용하는 클래스의 예 // (이 클래스에 둘 이상의 생성자가 필요함) 학급 맥락 학급 기여하다세트 열다. 학급 보다(ctx:맥락) { 컨스트럭터(ctx: 맥락, 특성: 기여하다세트): 이것.(ctx) } 학급 마이버튼 : 보다 { // 컨스트럭터 #1 컨스트럭터(ctx: 맥락) : 잘 하는 군요(ctx) { } // 컨스트럭터 #2 컨스트럭터(ctx: 맥락, 특성: 기여하다세트) : 잘 하는 군요(ctx, 특성) { // ... } } 밀폐 클래스
Sealled 클래스 및 인터페이스는 하위 클래스 계층을 제한하므로 상속 계층에 대한 제어가 강화됩니다.
밀봉된 인터페이스 및 클래스 선언:
밀봉된 인터페이스 익스프레르 밀봉된 학급 일 sealed 클래스의 모든 서브클래스는 컴파일 시에 정의됩니다.밀봉된 클래스를 가진 모듈을 컴파일한 후에는 새로운 서브클래스를 추가할 수 없습니다.예를 들어 컴파일된 jar 파일의 sealed 클래스는 하위 분류할 수 없습니다.
밀봉된 학급 차량 데이터. 학급 차(값 브랜드명: 스트링, 값 주인: 스트링, 값 색.: 스트링): 차량() 학급 자전거.(값 브랜드명: 스트링, 값 주인: 스트링, 값 색.: 스트링): 차량() 학급 트랙터(값 브랜드명: 스트링, 값 주인: 스트링, 값 색.: 스트링): 차량() 값 기아차 = 차('KIA', "존', '파랑') 값 현대 자동차 = 차('현대', "브리토', "녹색") 데이터 클래스
코틀린스data classconstruct는 주로 데이터 저장을 목적으로 하는 클래스를 정의합니다.이 구성은 키가 기능한다는 점을 제외하고는 일반 클래스와 유사합니다.equals,toString,그리고.hashCode클래스 속성에서 자동으로 생성됩니다.Java에서 이러한 클래스는 다음과 같은 표준 모음을 제공할 것으로 예상됩니다.데이터 클래스는 메서드를 선언하는 데 필요하지 않지만 각각 하나 이상의 속성이 있어야 합니다.데이터 클래스는 종종 본문 없이 작성되지만 다른 클래스에 유효한 메서드 또는 보조 생성자를 데이터 클래스에 제공할 수 있습니다.그data키워드를 사용하는 경우는,class키워드를 지정하여 데이터 [34]클래스를 정의합니다.
// 파라미터와 그 옵션의 디폴트값이 있는 데이터 클래스 데이터. 학급 책(값 이름.: 스트링 = "", 값 가격.: 내부 = 0) 재밌어요 주된(args: 어레이< >스트링>) { // 다른 클래스 개체와 마찬가지로 데이터 클래스 개체를 만듭니다. 변화하다 책 1 = 책("Kotlin 프로그래밍", 250) 인쇄(책 1) // 출력:북(이름=프로그래밍, 가격=250) } 코틀린 인터랙티브 셸
$kotlinc-jvm help: help: quit을 입력합니다. >>>2 + 2 4 >>>인쇄("안녕, 월드!") 안녕, 월드! 스크립트 언어로서의 Kotlin
Kotlin은 스크립트 언어로도 사용할 수 있습니다.스크립트는 최상위 실행 가능 코드가 있는 Kotlin 소스 파일(.kts)입니다.
// list_lists.kts 수입품 java.io 를 참조해 주세요.파일 값 폴더 = 파일(args[0]).listFiles { 파일 -> 파일.is 디렉토리() } 폴더?.각각(::인쇄) 스크립트를 실행할 수 있는 방법은-script옵션과 대응하는 스크립트파일을 컴파일러에 송신합니다.
$kotlinc -script list_cripts.kts "path_to_folder_to_folder"특수 안전
Kotlin은 눌러블과 눌러블이 아닌 데이터 유형을 구분합니다.모든 null 가능한 개체는 유형 이름 뒤에 "?" 접두사를 사용하여 선언해야 합니다.null 가능한 객체에 대한 작업은 개발자의 각별한 주의가 필요합니다. null 체크는 값을 사용하기 전에 수행해야 합니다.Kotlin은 null-safe 연산자를 제공하여 개발자를 지원합니다.
- ?(안전한 탐색 연산자)를 사용하여 Null 객체의 메서드 또는 속성에 안전하게 액세스할 수 있습니다.개체가 null인 경우 메서드는 호출되지 않고 식이 null로 평가됩니다.
- ?: (늘 병합 연산자) 종종 Elvis 연산자로 언급됩니다.
재밌어요 안부 전해주세요.(아마도요.: 스트링?, 네버전: 내부) { // 엘비스 오퍼레이터 사용 값 이름.: 스트링 = 아마도요. ?: "실패" 인쇄("안녕하세요.$이름.") } 안전 항법 작업자의 사용 예:
// 다음 경우 null을 반환합니다. // - foo()는 null을 반환합니다. // - 또는 foo()가 non-module이지만 bar()가 null을 반환하는 경우 // - 또는 foo()와 bar()가 비호환인 경우 baz()는 null을 반환합니다. // 반대의 경우 foo bar()와 baz()가 non-displaced인 경우에만 반환값이 non-sisplaced가 됩니다. 후우()?.막대기()?.바즈() 람다스
Kotlin은 고차 함수 및 익명 함수 또는 람다를 [35]지원합니다.
// 다음 함수는 lambda, f를 가져와서 문자열 "rambda"를 전달하여 f를 실행합니다. // (String) -> 단위는 String 파라미터와 단위 반환 타입을 가진 람다를 나타냅니다. 재밌어요 실행 Lambda(f: (스트링) -> 구성 단위) { f('아찔하다') } 람다는 중괄호 { }를 사용하여 선언됩니다.람다가 파라미터를 취할 경우 중괄호 내에서 선언되고 -> 연산자가 이어집니다.
// 다음 문에서는 단일 파라미터를 사용하여 println 함수에 전달하는 람다를 정의합니다. 값 l = { c : 없어? -> 인쇄(c) } // 매개 변수가 없는 람다는 {}을(를) 사용하여 간단히 정의할 수 있습니다. 값 l2 = { 인쇄물("매개변수 없음") } 복잡한 "hello world" 예
재밌어요 주된(args: 어레이< >스트링>) { 환영하다 { 로..장소 }.인쇄물() } // 인라인 고차 함수 인라인 재밌어요 환영하다(s: () -> 스트링) : 스트링 = 인사 그리고 또 하나 s() // 함수, 확장자, 유형 추론, null 가능한 유형, // lamda 식, 레이블 지정, Elvis 연산자(?:) 혼재하다 재밌어요 스트링.그리고 또 하나(다른. : 없어?) = 빌드 스트링() { 추가하다(이것.@그리고 또 다른); 추가하다(" "); 추가하다(다른. ?: "") } // 불변의 유형, 위임된 속성, 느린 초기화, 문자열 템플릿 값 인사 타고 게으른 { 값 더블 엘: 스트링 = "ll"; '그'${더블 엘}o" } // 밀봉된 클래스, 동반 객체 밀봉된 학급 로. { 동반자 물건 {값 장소 = "세계"} } // 내선번호, 단위 재밌어요 스트링.인쇄물() = 인쇄(이것.) 도구들
- IntelliJ IDEA는 Kotlin [36]플러그인을 지원합니다.인텔리J IDEA 15는 [37]인텔리J Installer에 Kotlin 플러그인을 번들하여 Kotlin을 즉시 지원하는 첫 번째 버전입니다.
- JetBrains는 또한 [38][39]이클립스용 플러그인을 제공합니다.
- Apache Maven,[40] Apache Ant [41]및 Gradle을 [42]포함한 일반적인 Java 빌드 도구와의 통합이 지원됩니다.
- Android Studio(IntelliJ IDEA 기반)는 Android Studio [43]3부터 Kotlin을 공식적으로 지원합니다.
- Emacs의 MELPA 패키지 저장소에는 Kotlin 모드가 있습니다.
- Vim에는 GitHub에 [44]플러그인이 유지되어 있습니다.
- Json2Kotlin은 웹 서비스 응답 매핑을 위해 POJO 스타일의 네이티브 Kotlin 코드를 생성합니다.
적용들
2017년 5월 구글 I/O에서 공식 안드로이드 개발 언어로 발표되었을 때, Kotlin은 Java와 C++[45]에 이어 안드로이드에서 완전히 지원되는 세 번째 언어가 되었습니다.2020년 현재, Kotlin은 여전히 Android에서 가장 널리 사용되고 있으며, Google은 Play Store의 상위 1000개 앱 중 70%가 Kotlin으로 작성되었다고 추정한다.구글 자체에는 지도와 드라이브를 포함한 60개의 앱이 코틀린으로 작성되어 있다.구글의 홈과 같은 많은 안드로이드 앱이 Kotlin으로 이행되고 있기 때문에 Kotlin과 Java를 모두 사용하고 있습니다.Android의 Kotlin은 null-pointer의 안전성과 보다 짧고 읽기 쉬운 [46]코드를 만드는 기능으로 인해 유익하다고 여겨진다.
Kotlin은 Android에서의 현저한 사용 외에도 서버 사이드 개발에서도 주목을 받고 있다.스프링 프레임워크는 2017년 [47]1월 4일 버전 5에서 코틀린 지원을 공식적으로 추가하였다.Spring은 Kotlin을 더욱 지원하기 위해 모든 문서를 Kotlin에 번역하고 Coroutins [48]등 Kotlin 고유의 많은 기능을 지원했습니다.Spring 이외에도 JetBrains는 웹 [49]어플리케이션 구축을 위한 Ktor라는 코틀린 최초의 프레임워크를 생산했다.
2020년 JetBrains는 Kotlin을 사용하는 개발자를 대상으로 한 조사에서 56%가 Kotlin을 모바일 앱에 사용하고 있으며 47%는 웹 백엔드에 사용하고 있는 것으로 나타났습니다.전체 Kotlin 개발자의 3분의 1 이상이 다른 언어에서 Kotlin으로 이주한다고 말했습니다.대부분의 Kotlin 사용자는 Android(또는 JVM)를 대상으로 하고 있으며, 6%만이 Kotlin [50]Native를 사용하고 있습니다.
도입
2018년 Kotlin은 2017년에 [51]비해 2.6배 많은 개발자를 보유하고 있어 GitHub에서 가장 빠르게 성장하고 있는 언어였다.2020 Stack Overflow Developer [52]Survey에 따르면 이 언어는 네 번째로 사랑받는 프로그래밍 언어입니다.
Kotlin은 또한 2019년 [53]O'Reilly 오픈 소스 소프트웨어 컨퍼런스 브레이크아웃 어워드도 수상했습니다.
많은 기업/조직이 백엔드 개발에 Kotlin을 사용하고 있습니다.
- 구글[54]
- 노르웨이 세무국[55]
- 그라들[56]
- 아마존[57]
- 캐시[58] 앱
- 제트브레인[59]
- 플럭스[60]
- 알레그로[61]
- OLX[62]
- 샤잠[63]
- 중추적[64]
- 로켓[65] 트래블
- 메쉬[66] 클라우드
- 잘란도[67]
일부 기업/조직은 웹 개발에 Kotlin을 사용하고 있습니다.
많은 기업들이 Kotlin을 사용하고 있다고 공개적으로 밝히고 있습니다.
- DripStat[72]
- 베이스캠프[73]
- 핀터레스트[74]
- 쿠르세라[75]
- 넷플릭스[76]
- 우버[77]
- 캐시[78] 앱
- 트렐로[79]
- 듀오링고[80]
- 유명한 은행(Goldman Sachs, Wells Fargo, J.P. Morgan, Deutsche Bank, UBS, HSBC, BNP Paribas, Société Généale 등) 컨소시엄에 의해 개발된 분산원장 Corda는 코드베이스에 [81]90% 이상의 Kotlin 코드를 가지고 있습니다.
「 」를 참조해 주세요.
레퍼런스
- 이 문서에는 Apache 2.0 라이센스로 릴리스된 Kotlin 튜토리얼의 인용문이 포함되어 있습니다.
- ^ https://github.com/JetBrains/kotlin/releases/tag/v1.7.10; 발행일: 2022년 7월 7일, 취득일: 2022년 7월 17일.
- ^ "What is the correct English pronunciation of Kotlin?". 16 October 2019. Retrieved 9 November 2019.
- ^ "kotlin-stdlib". kotlinlang.org. JetBrains. Retrieved 20 April 2018.
- ^ "Kotlin for JavaScript - Kotlin Programming Language". Kotlin. Retrieved 20 August 2020.
- ^ "Kotlin for cross-platform mobile development". JetBrains: Developer Tools for Professionals and Teams. Retrieved 20 August 2020.
- ^ "Kotlin Foundation - Kotlin Programming Language". Kotlin.
- ^ a b "Kotlin is now Google's preferred language for Android app development". TechCrunch. Retrieved 8 May 2019.
- ^ "Kotlin FAQ". Retrieved 16 July 2022.
Kotlin lets you choose the version of JVM for execution. By default, the Kotlin/JVM compiler produces Java 8 compatible bytecode. If you want to make use of optimizations available in newer versions of Java, you can explicitly specify the target Java version from 9 to 18. Note that in this case the resulting bytecode might not run on lower versions.
- ^ "Stability of Kotlin Components". Kotlin. 21 May 2021. Retrieved 29 July 2021.
- ^ "Kotlin 1.5.0 – the First Big Release of 2021". Kotlin. 4 May 2021. Retrieved 29 July 2021.
- ^ a b Krill, Paul (22 July 2011). "JetBrains readies JVM language Kotlin". InfoWorld. Archived from the original on 7 September 2019. Retrieved 2 February 2014.
- ^ Waters, John (22 February 2012). "Kotlin Goes Open Source". ADTmag.com. 1105 Enterprise Computing Group. Archived from the original on 18 February 2014. Retrieved 2 February 2014.
- ^ Mobius (8 January 2015), Андрей Бреслав — Kotlin для Android: коротко и ясно, retrieved 28 May 2017
- ^ Kieron Murphy (4 October 1996). "So why did they decide to call it Java?". JavaWorld. Archived from the original on 15 March 2019. Retrieved 14 October 2017.
- ^ "Why JetBrains needs Kotlin".
we expect Kotlin to drive the sales of IntelliJ IDEA
- ^ "Kotlin 1.0 Released: Pragmatic Language for JVM and Android Kotlin Blog". Blog.jetbrains.com. 15 February 2016. Retrieved 11 April 2017.
- ^ Shafirov, Maxim (17 May 2017). "Kotlin on Android. Now official".
Today, at the Google I/O keynote, the Android team announced first-class support for Kotlin.
- ^ "Kotlin 1.2 Released: Sharing Code between Platforms Kotlin Blog". blog.jetbrains.com. 28 November 2017.
- ^ "Multiplatform Projects - Kotlin Programming Language". Kotlin. Retrieved 20 August 2020.
Working on all platforms is an explicit goal for Kotlin, but we see it as a premise to a much more important goal: sharing code between platforms. With support for JVM, Android, JavaScript, iOS, Linux, Windows, Mac and even embedded systems like STM32, Kotlin can handle any and all components of a modern application.
- ^ "Kotlin/kotlin-full-stack-application-demo". Kotlin. 3 April 2020. Retrieved 4 April 2020.
- ^ "Kotlin full stack app demo: update all involving versions to work with 1.3.70 release". youtrack.jetbrains.com. Retrieved 4 April 2020.
- ^ "What's New in Kotlin 1.4 - Kotlin Programming Language". Kotlin. Retrieved 20 August 2020.
In 1.4.0, we slightly change the Swift API generated from Kotlin with respect to the way exceptions are translated.
- ^ "What's new in Kotlin 1.7.0 Kotlin". Kotlin Help. Retrieved 20 June 2022.
- ^ "JVM Languages Report extended interview with Kotlin creator Andrey Breslav". Zeroturnaround.com. 22 April 2013. Retrieved 2 February 2014.
- ^ "Semicolons". jetbrains.com. Retrieved 8 February 2014.
- ^ "Types are moving to the right". Medium. Medium. 16 July 2020. Retrieved 6 November 2021.
- ^ "Roman Elizarov is the new Project Lead for Kotlin". The Kotlin Blog. JetBrains. Retrieved 7 November 2021.
- ^ "Basic Syntax". Kotlin. Jetbrains. Retrieved 19 January 2018.
- ^ "functions". jetbrains.com. Retrieved 8 February 2014.
- ^ "What's New in Kotlin 1.3 - Kotlin Programming Language". Kotlin. Retrieved 4 April 2020.
- ^ "Design by Contract (DbC) design considerations". Kotlin Discussions. 16 August 2012. Retrieved 4 April 2020.
Implement the full semantics of Eiffel DbC and improve upon it.
- ^ "Kotlin for JavaScript Kotlin". Kotlin Help. 21 January 2021. Retrieved 19 March 2021.
- ^ "Kotlin Examples: Learn Kotlin Programming By Example".
- ^ "Introduction to Data Classes in Kotlin".
- ^ "Higher-Order Functions and Lambdas". Kotlin. Jetbrains. Retrieved 19 January 2018.
- ^ "Kotlin :: JetBrains Plugin Repository". Plugins.jetbrains.com. 31 March 2017. Retrieved 11 April 2017.
- ^ "What's New in IntelliJ IDEA 2017.1". Jetbrains.com. Retrieved 11 April 2017.
- ^ "Getting Started with Eclipse Neon – Kotlin Programming Language". Kotlinlang.org. 10 November 2016. Retrieved 11 April 2017.
- ^ "JetBrains/kotlin-eclipse: Kotlin Plugin for Eclipse". GitHub. Retrieved 11 April 2017.
- ^ "Using Maven – Kotlin Programming Language". kotlinlang.org. Retrieved 9 May 2017.
- ^ "Using Ant – Kotlin Programming Language". kotlinlang.org. Retrieved 9 May 2017.
- ^ "Using Gradle – Kotlin Programming Language". kotlinlang.org. Retrieved 9 May 2017.
- ^ "Kotlin and Android". Android Developers.
- ^ "udalov/kotlin-vim: Kotlin plugin for Vim. Featuring: syntax highlighting, basic indentation, Syntastic support". GitHub. Retrieved 30 August 2019.
- ^ Lardinois, Frederic (17 May 2017). "Google makes Kotlin a first-class language for writing Android apps". techcrunch.com. Retrieved 28 June 2018.
- ^ "Kotlin programming language: How Google is using it to squash the code bugs that cause most crashes". ZDNet.
- ^ "Introducing Kotlin support in Spring Framework 5.0". Spring. Pivotal. 4 January 2017. Retrieved 29 September 2020.
- ^ "The State of Kotlin Support in Spring". JetBrains. Retrieved 6 December 2020.
- ^ "Review of Microservices Frameworks: A Look at Spring Boot Alternatives". DZone.
- ^ "Kotlin Programming - The State of Developer Ecosystem 2020". JetBrains. Retrieved 29 September 2020.
- ^ "The state of the Octoverse". Archived from the original on 22 March 2019. Retrieved 24 July 2019.
- ^ "Stack Overflow Developer Survey 2020". Retrieved 28 May 2020.
- ^ "Kotlin wins Breakout Project of the Year award at OSCON '19". Retrieved 24 July 2019.
- ^ "State of Kotlin on Android". YouTube. Retrieved 29 September 2020.
- ^ "KotlinConf 2019: Kotlin Runs Taxes in Norway by Jarle Hansen & Anders Mikkelsen". YouTube. Retrieved 29 September 2020.
- ^ "Gradle Kotlin DSL Primer". docs.gradle.org. Retrieved 29 September 2020.
- ^ "QLDB at Amazon". Talking Kotlin. Retrieved 29 September 2020.
- ^ "Going Full Kotlin Multiplatform". Talking Kotlin. Retrieved 29 September 2020.
- ^ "Kotless". Talking Kotlin. Retrieved 29 September 2020.
- ^ "Using Kotlin for backend development at Flux". Talking Kotlin. Retrieved 29 September 2020.
- ^ "Kotlin at Allegro". Talking Kotlin. Retrieved 29 September 2020.
- ^ "Greenfield Kotlin at OLX". Talking Kotlin. Retrieved 29 September 2020.
- ^ "Kotlin at Shazam". Talking Kotlin. Retrieved 29 September 2020.
- ^ "Application Monitoring with Micrometer". Talking Kotlin. Retrieved 29 September 2020.
- ^ "Groovy and Kotlin Interop at Rocket Travel". Talking Kotlin. Retrieved 29 September 2020.
- ^ "Kotlin on the backend at Meshcloud". Talking Kotlin. Retrieved 29 September 2020.
- ^ "Zally - An API Linter". Talking Kotlin. Retrieved 29 September 2020.
- ^ "KotlinConf 2019: Kotlin in Space by Maxim Mazin". YouTube. Retrieved 29 September 2020.
- ^ "KotlinConf 2017 - Frontend Kotlin from the Trenches by Gaetan Zoritchak". YouTube. Retrieved 29 September 2020.
- ^ "Fritz2". Talking Kotlin. Retrieved 29 September 2020.
- ^ "Java/Kotlin Developer - Barclays - Prague - Wizbii". Wizbii.com. Retrieved 29 September 2020.
- ^ "Kotlin in Production – What works, Whats broken". Blog.dripstat.com. 24 September 2016. Retrieved 11 April 2017.
- ^ "How we made Basecamp 3's Android app 100% Kotlin – Signal v. Noise". Signal v. Noise. 29 April 2017. Retrieved 1 May 2017.
- ^ "Droidcon NYC 2016 - Kotlin in Production". YouTube. Retrieved 24 July 2019.
- ^ "Becoming bilingual@coursera". 26 April 2018. Retrieved 24 July 2019.
- ^ "Rob Spieldenner on twitter". Retrieved 24 July 2019.
- ^ "2017 Who's using Kotlin?". 7 February 2017. Retrieved 24 July 2019.
- ^ "square/sqldelight". GitHub. Retrieved 24 July 2019.
- ^ "Dan Lew on Twitter". Retrieved 24 July 2019.
- ^ "Duolingo on Twitter". Retrieved 13 April 2020.
- ^ "Kotlin 1.1 Released with JavaScript Support, Coroutines and more". Retrieved 1 May 2017.