코틀린 1.1 릴리즈


코틀린 1.1이 릴리즈 되었습니다. 수 많은 시나리오에서 코틀린의 사용을 가능하게 하는 것은 엄청난 진보이며, 여러분 모두 즐겁게 사용하길 바랍니다.

Kotlin 1.1

코틀린에 대한 비전은 최신 애플리케이션들에서 모든 구성요소에 걸쳐 사용할 수 있도록 하는 것입니다. 이 목표를 위해 코틀린 1.1에서는 다음 두 단계가 추가됐습니다.

첫번 째, 자바스크립트 타겟 은 더 이상 실험적이지 않고, 자바스크립트와 상호호환 뿐만 아니라 표준 라이브러리의 한 부분으로 코틀린의 모든 피쳐들을 지원합니다. 이는 React와 같은 자바스크립트 라이브러리를 사용하면서 당신의 브라우저 프론트엔드 쪽을 코틀린으로 이전할 수 있다는 것을 의미합니다.

두번 째, 코루틴 을 지원합니다. 스레드의 가벼운 대체자로, 코루틴은 하나의 JVM 인스턴스에서 보다 가변적인scalable 애플리케이션 뒷단과 수많은 작업을 지원할 수 있게 해줍니다. 또한 코루틴은 비동기적인 행동을 구현하기 위해 아주 좋은 도구입니다. 이는 모든 플랫폼에서 응답 가능한 유저 인터페이스를 만드는데 중요합니다.

아래는 두 가지 변화에 대해 자세히 설명합니다.

코틀린 1.1에서는 type alias, bound callable references, destructuring in lambdas 등 여러가지 추가된 내용이 있습니다. 세부적인 것은 Whtat’s new 페이지에서 확인하세요.

코루틴

코틀린에서 코루틴은 논블록킹 비동기 코드를 마치 일반적인 동기 코드처럼 간단하게 만듭니다.

비동기 프로그래밍이 세계적인 추세인데, 우리를 어렵게하는 단 한가지는 바로 논블록킹 코드가 시스템에 상당한 복접성을 더해준다는 것입니다. 코틀린은 현재 하나의 함수 원형을 통해 일급 객체first-class citizen를 만듦으로써 이러한 복잡성을 줄여주는 방법을 제공합니다. 이러한 함수(또는 람다)는 (모든 스레드를 차단하지 않고) 일시 중단 할 수 있고 나중에 다시 시작할 수 있는 방법을 표현합니다.

기술적으로 코루틴은 협업 멀티 태스킹의 경량화된 수단입니다. 다시 말해, 시작과 유지에 대한 비용이 거의 없고, 일시중지하는 비용 또한 아주 저렴하며 구성 및 사용자 정의가 아주 쉽습니다.

또한 최대한의 유연성을 위해 코루틴을 설계했습니다: 언어를 거의 수정하지 않았고 라이브러리로 사용할 수 있습니다. kotlinx.coroutines 프로젝트는 Rx, CompletableFuture, NIO, JavaFx 및 Swing 위에서 동작하는 라이브러리로 볼 수 있습니다. 비슷한 라이브러리들을 안드로이드와 자바스크립트 용으로 작성할 수 있습니다. 심지어 다른 언어에서 사용하는 내장된 구성요소들 또한 코틀린 라이브러리로 표현할 수 있습니다. 여기에는 Python의 generators/yield, Go의 channels/select 및 C#의 async/await가 포함됩니다.

// runs the code in the background thread pool
fun asyncOverlay() = async(CommonPool) {
    // start two async operations
    val original = asyncLoadImage("original")
    val overlay = asyncLoadImage("overlay")
    // and then apply overlay to both results
    applyOverlay(original.await(), overlay.await())
}

// launches new coroutine in UI context
launch(UI) {
    // wait for async overlay to complete
    val image = asyncOverlay().await()
    // and then show it in UI
    showImage(image)
}

더 자세한 내용은 이 문서를 읽어주세요.

중요 코틀린의 코루틴은 완전히 새롭게 설계됐고, 이는 100% 완벽하다는 것을 확신하기 전에 엄청난 테스트를 필요로 합니다. 이는 experimental opt-in 플래그를 두고 릴리즈 예정인 이유입니다. 언어 규칙이 변화될 것이라 예상하지 않지만 API는 코틀린 1.2에서 일부 바뀔 수 있습니다.

자바스크립트 지원

앞서 언급했듯, 코루틴을 포함한 코틀린 1.1의 모든 언어적 피쳐들은 JVM, 안드로이드 그리고 자바스크립트에서 동작합니다. (자바스크립트의 Reflection은 사용할 수 없지만 연구 중에 있습니다.) 이것은 웹 애플리케이션 또한 전부 코틀린으로 작성할 수 있음을 의미하고, 이미 JetBrains 내에서 일부 경험하고 있습니다. 곧 튜토리얼 등을 공개할 예정입니다.

자바스크립트 용 코틀린은 본래 자바스크립트 코드와 함께 상호작용할 수 있는 동적인 타입을 가집니다. 그리고 잘 알려진 라이브러리로 쓸 수 있도록 DefinitelyTyped의 타입 헤더를 사용합니다.

Node.js와 브라우저 모두 지원합니다. 코틀린 표준 라이브러리는 npm을 통해서 사용 가능합니다.

더 자세한 내용은 이 문서를 읽어주세요.

도구

코틀린 1.1은 코틀린 도구를 위한 매이저 릴리즈가 아닙니다: 준비되지마자 언어 자체에 영향을 주지 않는 툴링 기능을 전달하는 것을 선호하기 때문에 여러분들은 코틀린 1.0.X에서 많은 개선이 이뤄진 것을 보았습니다. 몇 가지 살펴보면 다음과 같습니다.

  • 주요한 모든 IDE에 코틀린 플러그인
    • Android Studio, Eclipse, NetBeans
  • IntelliJ IDEA와 Gradle에 증분incremental 컴파일
  • Spring, JPA, Mockito 용 컴파일러 플러그인
    • 클래스들을 모두 open으로 만들기
    • 인자 없는 생성자를 자동으로 생성하기
  • 어노테이션 프로세싱을 위한 kapt
  • 안드로이드 프로젝트 용 Lint 지원

우리는 이를 더욱 개선하고, 1.1.x 버전에서 업데이트들을 선보이기 위해 노력할 것입니다.

코틀린의 첫 해

간단히 말씀드리자면, 코틀린은 성장하고 있습니다. 지난 해 동안 코틀린을 사용하는 사람을 16만명이나 보았습니다. Github의 오픈소스 소프트웨어 프로젝트는 2.4M에서 10M 라인으로 약 4배의 코틀린 코드가 증가했습니다. 우리의 슬랙 커뮤니티 또한 1400명에서 5700명으로 약 4배 증가하셨습니다. 다양한 미트업과 유저 그룹들 또한 세계 커뮤니티에 의해 조직되었습니다. 또한 더 많은 코틀린 책과 온라인에 출판된 과정들을 보고있습니다.

Kotlin Github Stats

코틀린은 서버쪽 개발자와 안드로이드 개발자가 대략 50대 50으로 대등한 모습을 보입니다. 스프링 프레임워크 5.0vert.x 3.4는 코틀린 지원을 소개했습니다. GradleTeamCity는 빌드스크립트 용 코틀린을 사용하고 있습니다. 코틀린을 사용하는 더 많은 프로젝트들을 kotlin.link에서 찾을 수 있습니다.

많은 유명 기업들(Amazon Web Services, Pinterest, Coursera, Netflix, Uber, Square, Trello, Basecamp등)이 코틀린을 사용하고 있습니다. Goldman Sachs, Wells Fargo, J.P. Morgan, Deutsche Bank, UBS, HSBC, BNP Paribas, Société Générale 등의 유명 은행 컨소시엄에 의해 개발 된 Corda90% 이상 코틀린으로 구현했습니다.

전세계 모든 사용자, 공헌자에게 감사드립니다. 여러분의 지원은 우리에게 아주 중요합니다.

Kotlin 1.1 Event

3월 23일에 코틀린 팀 멤버가 참여하는 라이브 스트림 세션이 열릴 예정입니다. 자세한 사항은 이벤트 페이지를 참고하세요.

참고로 Kotlin Korea는 4월 중순에 행사를 열 예정입니다. :tada:

What’s Next

코틀린을 진짜 풀스택 언어로 만들기 위해, 우리는 여러 플랫폼에서 동일한 코드를 컴파일할 수 있는 툴과 언어를 제공할 것입니다. 이는 클라이언트와 서버 사이에서 모듈을 쉽게 공유할 수 있을 것입니다. 또한 자바스크립트 툴의 개선과 라이브러리 지원을 위해 지속적으로 노력할 것입니다. 무엇보다, 자바스크립트 플랫폼을 위한 증분 컴파일은 이미 진행 중입니다. 1.1.x 버전을 지켜봐주세요.

Java 9이 곧 나오는데, 나오기 전에 새로운 피쳐들을 위한 지원을 제공할 것입니다.

코루틴에 대한 다양한 피드백을 기대하고, 언어의 이러한 영역(성능과 기능 모두)을 개선하는 것이 우선순위에 있습니다.

이를 제외한 다음 릴리즈는 유지보수, 성능향상, 인프라스트럭쳐와 버그픽스에 초점을 둘 것입니다.

P.S 여러 플랫폼에서 동작하는 것은 코틀린의 전략적 방향입니다. 1.1에서는 서버, 데스크톱, 안드로이드 기기 그리고 브라우저에서 실행할 수 있는데, 앞으로 코틀린을 네이티브 코드로 컴파일하고 더 많은 플랫폼 (예: iOS 및 임베디드 기기)에서 실행하게 될 것입니다. JetBrains의 훌륭한 팀이 이 프로젝트를 진행하고 있으며, 곧 재미있는 것을 보여줄 것으로 기대하고 있습니다. 이는 특정한 릴리즈를 목표로 하지는 않습니다.

설치하기

늘 그랬듯, try.kotlinlang.org 에서 먼저 사용해볼 수 있습니다.

In Maven/Gradle: 1.1.0 버전의 컴파일러와 표준 라이브러리를 사용하세요. 이 문서를 참고하세요.

In IntelliJ IDEA: 2017.1은 코틀린 1.1이 들어있습니다. 이전 버전은 플러그인을 1.1로 설치/업데이트하세요.

In Android Studio: 플러그인 매니저 를 통해 설치/업데이트하세요.

In Eclipse: Marketplace를 사용해서 설치/업데이트하세요.

The command-line compiler Github release page에서 다운받을 수 있습니다.

Compatibility. 코틀린 1.1에서 언어와 표준 라이브러리는 하위 호환이 가능합니다: 만일 1.0에서 컴파일 됐고 실행됐다면, 1.1에서도 동작합니다. 점전적으로 업데이트하는 규모가 큰 팀을 돕기위해 새로운 피쳐들을 끌 수 있는 컴파일러 스위치를 제공합니다. 이 문서는 가능한 함정들을 다룹니다.

코틀린과 함께 프로그래밍을 :heart:

원글: Kotlin 1.1 Released with JavaScript Support, Coroutines and more | Kotlin Blog

Statically typed programming language for the JVM, Android and the browser
코틀린은 사랑입니다