2020년 8월 17일
오늘 우리는 Kotlin 1.4.0을 출시합니다! 지난 몇 년 동안 Kotlin을 더 재미있고 즐겁고 생산적으로 사용할 수 있는 프로그래밍 언어로 만들기 위해 열심히 노력해 왔습니다. 이 버전의 Kotlin에서도 이러한 목표를 계속 추구하기 위해 Kotlin 및 Kotlin 도구의 성능과 품질을 향상시키기 위해 많은 에너지와 노력을 기울였습니다. 또한 Kotlin 인터페이스를 위한 기다려온 SAM 변환을 포함한 여러 새로운 언어 기능을 지원하는 것을 기쁘게 발표합니다.
Kotlin 1.4에서 도입된 변경과 개선 사항을 최대한 활용할 수 있도록 도와드리기 위해 Kotlin 1.4 온라인 이벤트에 모든 분들을 초대합니다. 이 이벤트에서는 Kotlin 토크, Kotlin 팀과의 Q&A, 그리고 무료로 제공되는 네 가지의 Kotlin 관련 이벤트를 즐길 수 있습니다.
커뮤니티와 생태계
지난 12개월 동안 5.8 백만 명 이상의 사람들이 Kotlin 코드를 편집했으며, 이 숫자는 계속해서 증가하고 있습니다.
우리는 Kotlin이 얼마나 인기 있는 언어가 되고 있는지 보는 것에 기쁘게 생각합니다! 활성 사용자 수 - 이 지표에 대한 자세한 내용은 나중에 블로그 포스트에서 자세히 설명할 것입니다 - 이전 연도 대비 1.5배 증가한 것을 특히 격려하고 있습니다.
2020년 StackOverflow 개발자 설문 조사에 따르면 Kotlin은 프로페셔널 개발자를 위한 가장 인기 있는 프로그래밍 언어 중 13위로 올라섰으며, Kotlin이 가장 사랑받는 언어 중 하나임을 보여주는 것을 기쁘게 생각합니다.
많은 기업들이 Kotlin을 선택하고 모든 플랫폼에서 성공적으로 사용하고 있습니다. 이러한 기업 중 많은 기업들이 커뮤니티가 읽고 배울 수 있도록 사례 연구를 공개해 주어 우리는 이 경향을 보고 기쁘게 생각하고 있습니다. Kotlin으로 최근 개발된 소프트웨어의 몇 가지 놀라운 예시는 다음과 같습니다.
- 서버 측: Atlassian, Adobe, ING Bank;
- Android: Google Home, Duolingo, Zomato;
- 다중 플랫폼 모바일: VMware, PlanGrid 및 CashApp, Mirego의 Trikot;
- 웹: JetBrains의 Space, Karhoo, MIPT Nuclear physics methods laboratory의 VisionForge.
우리의 Kotlin 커뮤니티도 빠르게 성장하고 있습니다. 30,000명 이상의 Kotlin 개발자가 Slack과 Reddit에서 지식을 교환하고 서로 지원하고 있으며, 90,000명 이상의 사람들이 팁, 트릭 및 공지를 위한 공식 Twitter 계정을 팔로우하고 있습니다. 전 세계에는 200개 이상의 사용자 그룹이 있어 Kotlin 커뮤니티는 번영하고 성장하고 있습니다. 당신 모두의 도움으로 Kotlin을 함께 탐구하는 것이 이렇게 즐거운 경험이 되고 있습니다. 여러분이 만드는 따뜻하고 환영하는 분위기는 함께 Kotlin을 탐구하는 것을 더욱 즐겁게 만드는 것입니다. 여러분 없이는 같은 경험을 할 수 없을 것입니다.
Kotlin 1.4 온라인 이벤트
Kotlin 1.4를 사용할 때 훌륭한 경험을 할 수 있도록 하고 언어의 미래를 어떻게 발전시킬 것인지에 대한 아이디어를 얻을 수 있도록 모든 분들을 Kotlin 1.4 온라인 이벤트에 초대합니다!
이 이벤트는 Kotlin 및 언어 및 생태계의 미래에 대한 지식을 가득 채운 네 가지 날 동안 진행됩니다. Kotlin 1.4로 수행한 변경 및 개선 사항에 대해 이야기하고 언어에 대한 미래 계획을 공유할 것입니다. Kotlin 팀 멤버들은 일일 Q&A 세션에서 여러분의 질문에 답변할 것입니다. 질문을 미리 #kotlin14ask 해시태그를 사용하여 트윗하거나 이 양식을 사용하여 제출하세요.
Kotlin 1.4 온라인 이벤트는 10월 12일부터 15일까지 스트리밍될 예정이며, 여기에서 무료로 등록할 수 있습니다:
우리는 여러분 모두를 만나기를 기대합니다!
품질에 집중
이번 릴리스를 위한 주요 초점은 Kotlin을 사용하는 전반적인 개발 경험을 향상시키는 것이었습니다. 개선된 IDE 성능과 안정성을 포함하여 Kotlin 사용자가 가능한 한 생산적으로 사용할 수 있도록 하는 것이 우리의 목표이며, 사용자에게 가장 중요한 것을 개선하기 위해 노력했습니다.
IDE가 멈추거나 메모리 누수를 일으키는 원인이 되는 많은 성능 문제를 검토했고 수정했습니다. Kotlin 1.4.0 EAP 단계 동안 전반적인 경험이 훨씬 더 즐거워졌다는 긍정적인 피드백을 많이 받았습니다!
프로젝트에서 처음 큰 Kotlin 파일을 열 때 이제 하이라이팅된 내용을 훨씬 더 빨리 볼 수 있습니다. 대부분의 경우, 하이라이팅은 이제 1.5-4배 빨라졌습니다.
또한 자동 완성 제안이 나타나는 시간을 크게 개선했습니다. 다음 그래프는 Kotlin 사용자가 경험하는 평균 자동 완성 응답 시간을 개요로 보여줍니다. 완성이 500ms 이상 걸리는 경우의 수가 거의 절반으로 줄었습니다.
이러한 최신 변경 사항, 즉 코드 하이라이팅 속도 향상도 IntelliJ IDEA 2020.1+ 및 Android Studio 4.1+를 필요로 합니다.
성능 개선은 계속 진행 중이며 동결을 제거하고 타이핑을 더 부드럽게 만드는 작업과 같은 더 많은 향상을 계획 중입니다. 이미 IDE를 크게 빠르게 만들어줄 새로운 실험적인 Kotlin 컴파일러 프론트엔드와 통합을 시작했습니다. 이것은 플러그인의 여러 부분을 다시 작성해야 하는 거대한 작업이지만 코드 완성, 구문 강조 표시 및 컴파일러 오류 보고를 포함한 IDE의 여러 부분에서 성능을 향상시킬 것입니다.
새로운 IDE 기능
JetBrains의 미션은 소프트웨어 개발을 더 생산적이고 즐거운 경험으로 만드는 것이므로 Kotlin을 사용하는 동안 좋은 도구 환경을 제공하고 Kotlin 코딩을 가능한 쉽게 만들고자 합니다.
코루틴 작업을 처리하고 특히 동시 애플리케이션에서 버그를 찾는 것을 더 쉽게 하기 위해 코루틴 디버거를 소개했습니다. 이 초기 기능 집합을 확장하여 커뮤니티가 가장 필요로 하는 기능을 제공할 예정이므로 채널 중 하나를 통해 또는 아래 댓글 섹션에서 피드백을 공유해 주세요.
또한 새로운 유연한 Kotlin 프로젝트 마법사를 소개합니다. 이 새로운 마법사는 다른 유형의 Kotlin 프로젝트를 만들고 구성하는 곳을 하나로 제공하여 다중 플랫폼 프로젝트와 같은 복잡한 구조로도 쉽게 시작할 수 있도록 도와줍니다.
Kotlin 1.4.0에는 40개 이상의 새로운 퀵 픽스, 의도 및 검사 기능이 추가되었으며 코드를 수정하고 Alt+Enter를 눌러 특정 컨텍스트에서 사용 가능한 내용을 볼 때 정확히 필요한 시점에 제공됩니다.
새로운 컴파일러
지금까지 Kotlin을 위한 성능과 확장성 측면에서 Kotlin 진화를 위한 새로운 Kotlin 컴파일러를 개발 중이었습니다. 새 컴파일러의 주요 목표는 실제로 빠르고 Kotlin이 지원하는 모든 플랫폼을 통합하며 컴파일러 확장을 위한 API를 제공해야 한다는 것이었습니다. 우리는 단계적으로 새로운 부분을 소개하여 가능한 한 빨리 사용자에게 도달하도록 노력하고 있습니다. Kotlin 1.4.0에서는 이 계속되는 노력 중에서 몇 가지 부분을 공개합니다.
- 새로운, 더 강력한 타입 추론 알고리즘은 기본적으로 활성화됩니다. 이것은 더 많은 사용 사례에서 자동으로 타입을 추론하고 복잡한 시나리오에서도 스마트 캐스트를 지원하며 위임된 프로퍼티에 대한 추론을 개선합니다.
- 새로운 JVM 및 JS 백엔드는 알파 모드로 제공됩니다. 안정화되면 새로운 기본 백엔드가 될 것입니다.
우리는 컴파일러 파이프라인의 여러 영역에서 성능을 향상시킬 가장 큰 성능 향상을 제공할 새로운 프론트엔드 구현에 집중하고 있습니다. 프론트엔드는 코드를 구문 분석하고 이름을 해결하고 유형 확인을 수행하는 컴파일러의 일부분이므로 IDE 성능에도 영향을 미칩니다. 이것의 미리보기 버전은 향후 릴리스에서 사용 가능할 예정이니 기대하세요!
언어 기능
Kotlin 1.4에는 많은 새로운 기능이 포함되어 있습니다:
- Kotlin 인터페이스를 위한 SAM 변환 (SAM conversions): 이제 Kotlin에서 인터페이스에 대한 SAM 변환을 지원합니다. 이것은 함수형 인터페이스를 사용할 때 특히 유용합니다.
- 라이브러리 작성자를 위한 명시적 API 모드 (Explicit API mode): 라이브러리 작성자가 API를 더 명시적으로 정의할 수 있도록 도와줍니다.
- 명명된 인수와 위치 기반 인수 혼합 (Mixing named and positional arguments): 이제 함수 호출 시 명명된 인수와 위치 기반 인수를 혼합하여 사용할 수 있습니다.
- Trailing comma: 함수 호출 및 인수 목록에서 trailing comma를 사용할 수 있으므로 코드 작성이 더 편리해집니다.
- Callable reference improvements: Callable 참조 개선 사항을 포함하여 람다와 관련된 기능이 개선되었습니다.
- 루프 내부에서 when에서 break 및 continue 사용 (Using break and continue inside when in loops): 이제 when 블록 내에서 루프에서 break 및 continue를 사용할 수 있습니다.
라이브러리 개선 사항
표준 라이브러리에 대한 일반적인 우선 순위는 다양한 플랫폼 간 및 작업 간 일관성을 향상시키는 것입니다. 이 릴리스에서 Kotlin 표준 라이브러리는 새로운 컬렉션 연산자, 위임된 속성 개선, 이중 끝 큐 구현(ArrayDeque) 등을 포함한 다양한 기능을 얻었습니다.
표준 라이브러리를 "공통" 코드에서 사용할 수 있습니다. 이것은 Android 및 iOS 또는 JVM 및 JS와 같은 다른 플랫폼 간에 공유되는 코드를 의미합니다. 공통 라이브러리를 점차 확장하고 누락된 기능을 추가하거나 이동하고 있습니다.
이제 Gradle Kotlin 프로젝트에서는 단일 플랫폼을 대상으로 하든 멀티플랫폼 프로젝트에서든 stdlib에 대한 종속성을 선언할 필요가 없습니다. Kotlin 1.4.0부터는 기본적으로 이 종속성이 추가됩니다.
Kotlin 생태계의 다른 부분에서도 작업 중입니다:
- 사용자 피드백을 기반으로 점진적으로 kotlinx.coroutines를 발전시키고 있습니다.
- 직렬화 라이브러리가 성숙 단계에 가까워지고 있으며, 오늘날 kotlinx.serialization 1.0.0-RC 버전을 출시하고 있습니다.
- DateTime API에 대한 미리보기 및 실험 상태의 kotlinx-datetime 라이브러리를 이미 출시했습니다.
Kotlin/JVM
일반 프로젝트에 대한 새로운 Alpha Kotlin/JVM 백엔드를 사용하고 피드백을 공유할 것을 권장합니다! 컴파일러 파이프라인을 통일하는 노력을 통해 Jetpack Compose와 같은 컴파일러 확장을 Kotlin 커뮤니티에 더 빨리 제공할 수 있도록 도와줄 것입니다.
Kotlin/JVM에 특화된 언어 기능:
- 바이트 코드 (Java 8 대상)에서 인터페이스의 기본 메서드를 생성하는 새로운 실험적인 방법을 추가했습니다.
- 널 체크를 위한 통일된 예외 유형을 도입했습니다.
- Kotlin은 이제 JVM 바이트 코드에서 유형 주석을 생성할 수 있으므로 실행 시 Java 리플렉션에서 사용 가능합니다. 이것은 대상 버전 8 이상에 대해 작동하며 현재 실험 상태로 출시되었습니다.
Kotlin/JS
Kotlin 1.4.0은 다른 기능들과 함께 새로운 Gradle DSL 및 새로운 Kotlin/JS 컴파일러 백엔드의 Alpha 버전을 제공합니다.
새로운 Gradle DSL은 DSL에서 CSS 및 스타일 로더를 구성하는 기능을 추가하며, npm 종속성 관리와 Dukat 통합에 관한 다양한 개선 사항을 포함하고 있습니다.
새로운 Kotlin/JS 컴파일러 백엔드는 Kotlin/JS의 미래를 미리 예상하게 합니다. 이것은 Kotlin 코드에서 TypeScript 정의의 자동 생성, 더 작은 이진 파일 및 번들, JavaScript에 Kotlin 기능 노출의 현대화된 방법과 같은 최적화 및 기능을 포함하고 있습니다.
Kotlin/Native
Kotlin/Native는 Kotlin/Native 컴파일 및 실행의 전체적인 성능을 향상시키는 등 많은 새로운 기능과 개선 사항을 제공합니다.
- Kotlin/Native 및 Swift/Obj-C 간의 상호 운용성 개선.
- CocoaPods 종속성 관리 간소화.
- 현재의 자동 메모리 관리 구현은 동시성과 관련하여 제한 사항이 있으며, 대체 가능한 새로운 메모리 관리 방식을 개발 중입니다.
Kotlin/Native의 중요한 초점은 Kotlin Multiplatform Mobile에 대한 완벽한 지원을 제공하는 것이지만, 이에 한정되지 않습니다.
Kotlin Multiplatform
Kotlin을 훌륭한 멀티플랫폼 솔루션으로 만드는 것은 우리의 최우선 과제 중 하나입니다. KotlinConf에서 중요한 개선 사항을 약속하였고, 우리가 이행한 내용에 대한 보고서를 기쁘게 제공합니다:
- 계층적 프로젝트 구조 덕분에 iOS ARM64 기기 대상 및 x64 시뮬레이터 대상과 같은 특정 서브셋의 타겟 간에 코드를 공유할 수 있습니다.
- 여러 네이티브 타겟 사이에서 공통 코드에서 플랫폼 종속 라이브러리를 사용할 수 있습니다.
- 공유 및 플랫폼별 소스 세트에서 동일한 라이브러리의 다른 변형에 대한 종속성을 지정하는 대신 공유 소스 세트에서 종속성을 한 번만 지정할 수 있습니다.
- Kotlin 라이브러리 포맷인 Klib를 하드에 사용하여 멀티플랫폼 라이브러리를 공유합니다.
Android Studio 플러그인을 개발 중이며, iOS 기기와 시뮬레이터에서 Kotlin 코드를 실행, 테스트 및 디버깅하는 데 도움이 되도록 설계되었습니다. 첫 번째 공개 미리보기 버전은 곧 출시될 예정이므로 기대해 주세요.
Kotlin 커뮤니티 구성원의 도움을 받아 Kotlin Multiplatform Mobile (KMM) 기술을 사용하여 Android와 iOS 간에 코드를 공유하는 모바일 사용 사례를 타겟팅하는 방법을 설명하는 자료를 곧 출시할 예정입니다.
현재 주요 초점이 모바일 타겟에 있더라도 JetBrains Space를 빌드하고 배포하는 데 이미 사용 중인 Kotlin Multiplatform의 Web 타겟은 Kotlin에 대한 중요한 전략적 투자입니다.
자세한 내용
새로운 기능에 대한 자세한 설명은 Kotlin 1.4 What's New 페이지 및 문서에서 확인할 수 있으며, Kotlin 1.4로 이전하는 방법에 대한 자세한 내용은 Kotlin 1.4로 마이그레이션 페이지에서 확인할 수 있습니다.
모든 주요 릴리스에서 이전에 발표한 변경 사항에 대한 폐기 주기가 Kotlin 1.4와 함께 종료됩니다. 이러한 경우는 언어 위원회에서 신중하게 검토했으며 Kotlin 1.4의 호환성 가이드에 나열되어 있습니다.
Kotlin 개선을 돕는 방법
IntelliJ IDEA 및 Android Studio의 Kotlin 플러그인은 기능 사용에 대한 익명 통계를 수집할 수 있습니다. 이 통계 활성화를 부탁드립니다!
이 익명 데이터는 사용자를 더 잘 이해하고 작동하는 것, 어려움을 겪는 것, 어디에 집중해야 하는지 등을 이해하는 데 큰 도움이 됩니다. 통계 활성화를 위해 환경 설정으로 이동하여 "사용 통계 보내기" 확인란을 활성화하십시오.
Kotlin 1.3 이후 최고의 이슈 리포터
YouTrack에 이슈를 보고하여 이 릴리스를 더 나아지게 만들어 준 커뮤니티 구성원들에게 감사드립니다! 우리는 상위 20명의 이슈 리포터 목록을 만들었으며, 특별히 그들에게 감사드립니다:
Igor Wojda (145 개의 이슈)
Louis CAD (87 개의 이슈)
Marc Knaup (86 개의 이슈)
AndroidDeveloperLB (83 개의 이슈)
Robert Stoll (68 개의 이슈)
Morgan Bartholomew (62 개의 이슈)
Victor Turansky (54 개의 이슈)
Guan Tianyi (51 개의 이슈)
Scott Pierce (38 개의 이슈)
Andreas Malik (37 개의 이슈)
Steven Schäfer (37 개의 이슈)
Björn Kautler (36 개의 이슈)
Róbert Papp (34 개의 이슈)
Toshiaki Kameyama (30 개의 이슈)
Nicholas Bilyk (29 개의 이슈)
Michael Bailey (26 개의 이슈)
Jake Wharton (25 개의 이슈)
Lamberto Basti (24 개의 이슈)
Serge Pro (23 개의 이슈)
Egor Andreevici (21 개의 이슈)
지금 Kotlin 1.4 사용 시작
항상 play.kotl.in에서 온라인으로 Kotlin을 시도할 수 있습니다.
Gradle 및 Maven에서 컴파일러 버전으로 1.4.0을 사용하십시오. Gradle 및 Maven에 대한 설명서는 Gradle과 Maven을 위한 문서에서 확인할 수 있습니다.
IntelliJ IDEA 및 Android Studio는 자동으로 Kotlin 플러그인을 버전 1.4.0으로 업데이트하도록 요청합니다. 수동으로 Kotlin 플러그인을 업데이트하려면 환경 설정 | 플러그인을 열고 Kotlin 플러그인을 수동으로 업데이트할 수 있습니다.
명령줄 컴파일러는 GitHub 릴리스 페이지에서 다운로드할 수 있습니다.
이 릴리스와 함께 게시된 라이브러리의 다음 버전을 사용할 수 있습니다:
- kotlinx.coroutines 버전: 1.3.9
- kotlinx.serialization 버전: 1.0.0-RC
- ktor 버전: 1.4.0
- kotlinx.atomicfu 버전: 0.14.4
- kotlinx.html 버전: 0.7.2
- kotlinx-nodejs 버전: 0.0.6
kotlin-wrappers (kotlin-react 등) 라이브러리의 버전은 해당 저장소에서 찾을 수 있습니다.
코드 강조 향상 및 기타 최신 IDE 성능 개선 사항은 IntelliJ IDEA 2020.1+ 및 Android Studio 4.1+를 필요로 합니다.
새 릴리스에 문제가 발생하면 Slack에서 도움을 찾을 수 있으며 YouTrack에서 문제를 보고할 수 있습니다.
감사합니다!
우리는 Kotlin EAPs 및 실험적인 기능을 시도하고 피드백을 주신 모든 분들에게 감사드립니다. 당신과 함께 Kotlin 언어를 개발하고 가치 있는 피드백을 기반으로 많은 디자인 결정을 내립니다. 커뮤니티와의 빠르고 효과적인 피드백 루프를 유지하는 것은 Kotlin이 될 수 있는 최고의 도구로 발전하는 데 매우 중요합니다!
우리의 외부 기여자분들 중에는 이번 릴리스에 포함된 풀 리퀘스트를 통해 우리를 돕고 지원해 주신 모든 분들에게 감사드립니다. 여러분의 도움으로 이 릴리스를 가능하게 했습니다!
Kotlin 1.4: 모두를 위한 릴리스!
원문
댓글