2017년 3월 1일
오늘 우리는 코틀린 1.1을 릴리스합니다. 이번 릴리스로 인해 많은 새로운 시나리오에서 코틀린을 사용할 수 있게 되었으며, 여러분이 즐기셨으면 좋겠습니다.
우리의 코틀린 비전은 모던 애플리케이션의 모든 구성 요소에서 단일한 표현적이고 성능 우수하며 강력한 형식의 언어를 사용할 수 있게 하는 것입니다. 코틀린 1.1은 이 목표를 향한 두 가지 주요 단계를 걸어갑니다.
첫째, JavaScript 대상은 더 이상 실험적인 것이 아니며, 모든 코틀린 언어 기능과 표준 라이브러리의 큰 부분 및 JavaScript 상호 운용성을 지원합니다. 이를 통해 응용 프로그램의 브라우저 프론트엔드를 코틀린으로 마이그레이션할 수 있으며, 동시에 React와 같은 모던 JavaScript 개발 프레임워크를 계속해서 사용할 수 있습니다.
둘째, 우리는 코루틴을 지원합니다. 스레드의 경량 대안으로 코루틴은 단일 JVM 인스턴스에서 대규모 작업 부하를 지원하는 확장 가능한 애플리케이션 백엔드를 가능하게 합니다. 게다가 코루틴은 모든 플랫폼에서 반응형 사용자 인터페이스를 구축하기 위해 중요한 비동기 동작을 구현하는 매우 표현적인 도구입니다.
아래에서 이 두 가지 변경 사항을 더 자세히 설명하겠습니다. 그 외의 소식으로는 타입 별칭, 한정된 호출 가능한 참조, 람다 내부의 해체 등이 추가되었습니다. 자세한 내용은 우리의 새로운 기능 페이지(실행 가능한 예제를 확인하세요!)에서 확인하세요.
코루틴
코틀린의 코루틴은 논블로킹 비동기 코드를 일반 동기 코드와 같이 간단하게 만들어줍니다.
비동기 프로그래밍이 전세계적으로 퍼지고 있는 상황에서 비블로킹 코드는 시스템에 상당한 복잡성을 추가하는 유일한 요소입니다. 이제 코틀린은 코루틴을 통해 이 복잡성을 다룰 수 있는 수단을 제공합니다. 코루틴은 일시 중단 함수라는 하나의 기본 원소를 통해 언어에서 일급 시민으로 만들어줍니다. 이러한 함수(또는 람다)는 계산을 일시 중단(어떤 스레드도 차단하지 않고)하고 나중에 다시 재개할 수 있는 계산을 나타냅니다.
기술적으로 코루틴은 협력적으로 멀티태스킹을 수행하는 가볍고 유연한 방법입니다(파이버와 매우 유사함). 즉, 그저 훌륭한 스레드일 뿐입니다. 시작 및 유지에 거의 비용이 들지 않으며 중단은 코루틴에 대한 차단과 유사한 것이지만, 매우 쉽게 조합하고 사용자 정의할 수 있습니다.
코루틴은 최대한의 유연성을 위해 설계되었습니다. 언어에서는 거의 고정된 부분이 매우 적고 라이브러리로 많은 부분을 처리할 수 있습니다. kotlinx.coroutines 프로젝트에는 Rx, CompletableFuture, NIO, JavaFx 및 Swing 위에 놓인 라이브러리가 있습니다. 유사한 라이브러리는 Android 및 JavaScript에 대해 작성될 수 있습니다. 많은 다른 언어에서 사용 가능한 내장된 구조도 이제 코틀린 라이브러리로 표현할 수 있습니다. 이에는 Python의 generators/yield, Go의 channels/select 및 C#의 async/await이 포함됩니다:
// 코드를 백그라운드 스레드 풀에서 실행
fun asyncOverlay() = async(CommonPool) {
// 두 개의 비동기 작업 시작
val original = asyncLoadImage("original")
val overlay = asyncLoadImage("overlay")
// 그리고 그 결과에 오버레이 적용
applyOverlay(original.await(), overlay.await())
}
// UI 컨텍스트에서 새로운 코루틴 시작
launch(UI) {
// 비동기 오버레이 완료까지 대기
val image = asyncOverlay().await()
// 그리고 UI에서 이미지 표시
showImage(image)
}
자세한 내용은 여기를 참고바랍니다.
중요한 참고. 코틀린 코루틴은 가져다 줄 이점과 함께 100% 옳고 완벽하다고 확신할 수 있는 포괄적인 테스트가 필요한 비교적 새로운 디자인입니다. 따라서 우리는 "실험적"인 선택 사항으로 이를 릴리스할 것입니다. 언어 규칙이 변경될 것을 기대하지 않지만, API는 코틀린 1.2에서 일부 조정이 필요할 수 있습니다.
JavaScript 지원
위에서 언급한 것처럼 코틀린 1.1의 모든 언어 기능, 코루틴을 포함한 JVM/Android 및 JavaScript 모두에서 작동합니다. (JavaScript의 리플렉션은 사용할 수 없지만, 해당 부분을 검토 중입니다.) 이는 웹 응용 프로그램을 완전히 코틀린으로 작성할 수 있음을 의미하며, JetBrains 내에서 이미 그 경험을 가지고 있습니다. 곧 이에 관한 자습서 및 기타 자료를 공개할 예정입니다.
코틀린 for JavaScript는 "native" JavaScript 코드와 상호 운용할 수 있는 동적 타입을 제공합니다. 타입화된 API를 통해 잘 알려진 라이브러리를 사용하려면 ts2kt 컨버터와 DefinitelyTyped의 헤더를 함께 사용할 수 있습니다.
우리는 Node.js와 브라우저 모두를 지원합니다. Kotlin 표준 라이브러리는 npm을 통해 사용할 수 있습니다.
자세한 내용은 여기를 참고바랍니다.
툴링
코틀린 1.1은 코틀린 툴링을 위한 주요 릴리스는 아닙니다: 언어 자체에 영향을 미치지 않는 툴링 기능을 가능한 한 빨리 출시하는 것을 우리는 선호하므로 Kotlin 1.0.x 버전에서 많은 이러한 개선 사항을 보셨을 것입니다. 몇 가지 예를 들어보겠습니다:
- 주요 IDE(통합 개발 환경)에 대한 코틀린 플러그인: IntelliJ IDEA, Android Studio, Eclipse 및 NetBeans.
- IntelliJ IDEA 및 Gradle의 증분 컴파일.
- Spring, JPA 및 Mockito를 위한 컴파일러 플러그인 (클래스를 열어주고 no-arg 생성자 생성).
- 어노테이션 처리를 위한 kapt.
- Android 프로젝트의 린트 지원.
- 다양한 IDE 의도, 검사, 빠른 수정, 리팩터링 및 코드 완성 개선.
우리는 툴링을 더욱 개선하고 1.1.x 버전에서 업데이트를 제공하기 위해 계속 노력할 것입니다.
코틀린의 첫 해: 채택 및 커뮤니티
간단히 말해서, 코틀린은 성장하고 있습니다. 작년 동안 총 16만 명 이상의 사용자가 사용하였습니다. Github의 오픈 소스 프로젝트는 코틀린 코드의 라인 수가 240만에서 1000만 줄로 늘어났습니다. Slack 커뮤니티도 1,400명에서 5,700명으로 성장했습니다(4배 증가). 전 세계 커뮤니티에서 커뮤니티가 주최하는 많은 밋업과 사용자 그룹이 개최되었습니다. 또한 코틀린 서적과 온라인 강좌도 계속해서 늘어나고 있습니다.
코틀린은 서버 측 및 Android 개발자 모두에게 인기가 있습니다(대략 50/50으로 분배됨). Spring Framework 5.0에서는 코틀린 지원이 도입되었으며, vert.x 3.4도 마찬가지입니다. Gradle과 TeamCity는 빌드 스크립트에 코틀린을 사용하고 있습니다. 코틀린을 사용하는 더 많은 프로젝트는 kotlin.link에서 찾을 수 있습니다.
많은 잘 알려진 회사들이 코틀린을 사용하고 있습니다: Pinterest, Coursera, Netflix, Uber, Square, Trello, Basecamp 등. 코르다(Corda), 유명 은행(골드만 삭스, 웰스 파고, J.P. 모건, 도이치 뱅크, UBS, HSBC, BNP Paribas 및 Société Générale 등)의 연합이 개발한 분산원장에는 코드베이스의 90%가 코틀린으로 이루어져 있습니다.
우리는 전 세계 모든 지역의 사용자, 기여자 및 지지자에게 감사의 마음을 전합니다. 여러분의 지원은 우리에게 매우 중요합니다!
나만의 코틀린 1.1 이벤트를 직접 조직하세요
코틀린 1.1은 지역 사용자 그룹 및 친구들과 모임을 갖는 좋은 기회입니다. 이러한 이벤트를 조직하는 데 도움이 될 자료를 준비했습니다. 3월 23일에는 코틀린 팀 멤버가 참여하는 라이브 세션을 스트리밍할 예정이며, 스왹과 Future Features Survey가 포함된 주최자 팩도 제공됩니다. 자세한 정보와 이벤트 등록은 여기에서 확인하세요.
다음 단계
코틀린을 진정한 풀 스택 언어로 만들기 위해 우리는 동일한 코드를 여러 플랫폼에 컴파일하는 도구 및 언어 지원을 제공할 계획입니다. 이렇게 하면 클라이언트 및 서버 간에 모듈을 공유하기가 더욱 용이해질 것입니다. 또한 JavaScript 툴링 및 라이브러리 지원을 개선하기 위해 계속 노력할 것입니다. 그 중에서도 JavaScript 플랫폼을 위한 증분 컴파일이 이미 진행 중입니다. 1.1.x 업데이트를 기대해주세요.
Java 9가 곧 출시될 예정이며, 출시 전에 새로운 기능을 지원할 계획입니다.
코루틴에 대한 다양한 피드백이 오는 달에는 이 영역을 개선하는 것(성능 및 기능 면 모두에서)이 저희의 중요한 우선 사항 중 하나입니다.
이외에도 다음 릴리스는 주로 유지 관리, 성능 개선, 인프라 및 버그 수정에 중점을 둘 것입니다.
P.S. 여러 플랫폼에서 실행되는 것은 코틀린의 전략적 방향입니다. 1.1 버전으로 서버, 데스크톱, 안드로이드 장치 및 브라우저에서 실행할 수 있지만, 앞으로는 코틀린을 네이티브 코드로 컴파일하여 iOS 및 임베디드 장치를 포함한 다양한 플랫폼에서 실행할 계획입니다. JetBrains에서는 이 프로젝트에 참여하는 훌륭한 팀이 있으며, 곧 흥미로운 내용을 보여줄 예정입니다. 그러나 이것은 아직 특정한 릴리스를 대상으로 하는 것은 아닙니다.
설치 지침
이전과 마찬가지로 온라인에서 try.kotlinlang.org에서 코틀린을 시도해볼 수 있습니다.
Maven/Gradle에서: 컴파일러 및 표준 라이브러리의 버전 번호로 1.1.0을 사용하세요. 여기에서 문서를 확인하세요.
IntelliJ IDEA에서: 2017.1에는 코틀린 1.1이 번들로 포함되어 있습니다. 이전 버전에서는 코틀린 플러그인을 1.1 버전으로 설치 또는 업데이트하십시오.
Android Studio에서: 플러그인 관리자를 통해 플러그인을 설치 또는 업데이트하십시오.
Eclipse에서: Marketplace를 통해 플러그인을 설치하십시오.
명령 줄 컴파일러는 Github 릴리스 페이지에서 다운로드할 수 있습니다.
호환성. 코틀린 1.1에서 언어와 표준 라이브러리는 역방향 호환성이 있습니다(버그 제외). 1.0에서 컴파일되고 실행된 내용은 1.1에서 계속해서 작동할 것입니다. 대규모 팀이 점진적으로 업데이트하는 경우, 새로운 기능을 비활성화하는 컴파일러 스위치를 제공합니다. 이 문서에서 가능한 함정을 다룹니다.
좋은 코틀린을 즐기세요!
P.S. Reddit 및 Hacker News에서의 토론을 확인하세요.
원문
'Kotlin > Release Notes' 카테고리의 다른 글
[Kotlin Release Notes] Kotlin 1.0.7 is out (0) | 2023.09.04 |
---|---|
[Kotlin Release Notes] Kotlin 1.1.1 is out (0) | 2023.09.04 |
[Kotlin Release Notes] Kotlin 1.1 Release Candidate is Here (0) | 2023.09.04 |
[Kotlin Release Notes] Kotlin 1.1 Beta 2 is here (0) | 2023.09.03 |
[Kotlin Release Notes] Announcing the Support Program for Kotlin User Groups and Events (0) | 2023.09.03 |
댓글