2017년 1월 19일
축하합니다! 오늘 Kotlin 1.1이 베타 버전에 도달했습니다. 이것은
- 이제 시도해 보는 시간입니다.
- 아직도 피드백을 제공할 시간이 남아 있습니다 (우리는 정말로 그것이 필요합니다!).
- 출시가 곧 다가옵니다.
지난 1년 동안 Kotlin에 대한 많은 관심을 보았으며, 모든 사용자, 기여자 및 지원자에게 감사드립니다. 용감하고 EAP 빌드에 대한 의견을 주신 새로운 기능의 초기 채용자들에게 특별한 감사의 말씀을 전하고 싶습니다!
Kotlin 1.1에서 기대할 수 있는 내용 개요
Kotlin 1.1의 가장 큰 소식은
- JavaScript로의 컴파일 지원 완벽 지원
- JVM, Android 및 JavaScript에서의 코루틴
아래에서 이에 대한 더 자세한 내용을 알려드리겠지만, 이것이 1.1의 유일한 흥미로운 소식은 아닙니다. 더 많은 언어 개선 및 새로운 기능이 도래할 예정입니다 (더 자세한 내용은 "새로운 기능" 페이지에서 확인하실 수 있습니다):
- 타입 별칭: typealias Action<T> = (T) -> Unit
- 바운드 호출 가능 참조: expr::foo
- 게터 기반의 타입 추론: val myString get() = "hi"
- 컴파일러 플러그인
- 클래스를 기본적으로 open으로 만들기
- 기본적으로 no-arg 생성자 생성
- SAM 변환에서 확장 람다
- 데이터 클래스 상속
- 동일 파일의 sealed 클래스 하위 클래스
- 람다에서 분해: map.forEach { (k, v) -> ...}
- 사용하지 않는 매개 변수에 대한 밑줄
- 빌더 스타일 DSL의 범위 제어: @DslMarker
- provideDelegate 연산자 규칙
- 로컬 위임된 프로퍼티
- Kotlin 컬렉션에서의 JDK 8 메서드: list.parallelStream()
- 인라인 프로퍼티
- 제네릭 열거형에 대한 enumValues()/enumValueOf()
- 숫자 리터럴에서의 밑줄: 1_000_000
폐지 사항
불행한 이름 mod를 % 연산자로 사용한 것을 폐지하고, 기존의 java.math.BigInteger와 같은 라이브러리와 일치하는 의미론적으로 올바른 rem으로 대체하였습니다. 폐지 경고와 도구가 마이그레이션 과정을 안내해 드릴 것입니다.
JavaScript
간단하게 말하면, 전체 Kotlin 언어가 이제 JavaScript로 컴파일될 수 있습니다. 우리가 JDK의 모든 부분을 브라우저로 이전한 것은 아닙니다. 언어와 해당 표준 라이브러리는 JDK와 결합되어 있지 않습니다. 그러나 Kotlin 문자열, 컬렉션, 시퀀스, 배열 및 기타 핵심 API를 JVM/Android와 마찬가지로 JS에서도 사용할 수 있습니다.
DefinitelyTyped에서 변환된 형식화된 헤더를 통해 많은 인기 있는 JS 라이브러리를 지원합니다. 우리는 JavaScript의 모든 인기있는 런타임 모듈 시스템과 webpack 및 다른 중요한 도구를 지원합니다.
우리는 Kotlin 1.2 이상에서 JavaScript 도구를 원활하고 유용하게 만들기 위해 많은 노력을 기울일 것입니다. 우리의 목표는 Kotlin을 사용한 쾌적한 풀 스택 개발을 가능하게 하는 것입니다.
코루틴
솔직히 말해서 코루틴을 과대 평가하기는 어렵습니다. 미래가 왔으며, 우리는 이제 비동기적인 논블로킹 API가 필요합니다. 우리는 취급하는 데이터 양을 따라가기 위해 비동기적인 API가 필요합니다. 우리는 콜백 지옥을 겪었지만 이를 극복했습니다. 그러나 우리는 더 나은 것을 원합니다. 우리는 단순히 코드를 자연스러운 순차적 논리에 따라 작성하고, 컴파일러가 우리 대신 비동기성을 처리하게 하려고 합니다. 이것이 코루틴의 본질입니다: async/await, generate/yield, 논블로킹 IO, Rx 및 더 많은 것들을 중지 가능한 함수의 단일 통일된 패러다임으로 가져오는 것입니다. 이러한 함수(또는 람다)는 중단될 수 있는 계산을 나타내며(스레드를 차단하지 않고 중단할 수 있음), 나중에 다시 재개될 수 있습니다.
future {
val original = asyncLoadImage("...original...") // creates a Future
val overlay = asyncLoadImage("...overlay...") // creates a Future
...
// 이미지 로딩을 기다리는 동안 중지하고,
// 두 이미지가 모두 로드되었을 때 applyOverlay(...)를 실행합니다.
return applyOverlay(original.await(), overlay.await())
}
코루틴의 주요 이점은 유연성입니다:
- 언어 부분은 최소화되어 있습니다.
- 모든 것을 라이브러리로 작성할 수 있습니다.
- 라이브러리는 스레드, 예외 및 계산의 다른 측면을 완전히 사용자 정의할 수 있습니다.
우리는 흥미로운 공통 사용 사례에 대한 라이브러리 세트를 작성했습니다: kotlinx.coroutines
코루틴에 대해 더 자세히 알아보세요.
중요한 참고 사항. Kotlin 코루틴은 가져다 사용할 많은 이점을 제공하지만, 100% 올바르고 완벽하다고 확신할 수 있는 확실한 것은 아닙니다. 이것이 우리가 "실험적"인 선택 사항으로 릴리스할 이유입니다. 우리는 언어 규칙이 변경될 것으로 예상하지 않지만, API는 Kotlin 1.2에서 몇 가지 조정이 필요할 수 있습니다.
- 명령 줄: -Xcoroutines=enabled
- Gradle: gradle.properties 또는 local.properties에서 kotlin.coroutines=enable 설정
- Maven: <configuration> <args> <arg>-Xcoroutines=enable</arg> </args> </configuration>
- IDE: 빠른 수정(Alt+Enter)을 사용하거나 편집기 기능 설정을 수정하십시오(프로젝트 구조 -> 모듈 -> 해당 모듈 -> 컴파일러 -> 코루틴(실험적))
표준 라이브러리, 도구 및 프레임워크
Kotlin의 표준 라이브러리는 JDK 7 및 8에 특화된 많은 유용한 유틸리티 및 확장 기능으로 업데이트됩니다.
Gradle과의 협력으로 gradle-script-kotlin을 통해 이제 Kotlin 스크립팅을 사용하여 Gradle용 안전한 유형의 빌드 스크립트를 작성할 수 있습니다.
이제 Spring 프레임워크에서 사용되는 JSR 223을 지원하며, 안전한 유형의 DSL 및 기타 기능과 함께 사용할 수 있습니다.
어떻게 시도하나요
다른 사전 릴리스 버전과 마찬가지로 Kotlin 1.1‑Beta에 대한 역방향 호환성 보증은 없습니다. 더구나 최종 RC에 도달할 때 사전 릴리스 버전으로 생성된 모든 이진 파일은 컴파일러에 의해 금지될 것입니다: 1.1‑M0x 및 베타로 컴파일된 모든 코드를 다시 컴파일해야 할 것입니다(1.0.x에서 생성된 코드는 다시 컴파일하지 않아도 됩니다).
Maven/Gradle에서: 빌드 스크립트 및 프로젝트를 위해 http://dl.bintray.com/kotlin/kotlin-eap-1.1을 저장소로 추가하고, 컴파일러 및 표준 라이브러리의 버전 번호로 1.1.0-beta-17을 사용하십시오.
IntelliJ IDEA에서: 도구 → Kotlin → Kotlin 플러그인 업데이트 구성으로 이동한 다음, 업데이트 채널 드롭다운 목록에서 "Early Access Preview 1.1"을 선택한 후 "업데이트 확인"을 누르십시오.
커맨드 라인 컴파일러는 Github 릴리스 페이지에서 다운로드할 수 있습니다.
try.kotlinlang.org에서. 오른쪽 하단의 드롭다운 목록을 사용하여 컴파일러 버전을 1.1‑Beta로 변경하십시오.
Kotlin을 사용하여 개발을 해보세요!
원문
https://blog.jetbrains.com/kotlin/2017/01/kotlin-1-1-beta-is-here/
'Kotlin > Release Notes' 카테고리의 다른 글
[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 |
[Kotlin Release Notes] Kotlin 1.0.6 is here! (0) | 2023.09.03 |
[Kotlin Release Notes] Kotlin 1.1-M04 is here! (1) | 2023.09.03 |
[Kotlin Release Notes] Kotlin 1.1-M03 is here! (0) | 2023.09.03 |
댓글