본문 바로가기
Kotlin/Release Notes

[Kotlin Release Notes] Kotlin 1.2 Released: Sharing Code between Platforms

by 노력남자 2023. 9. 5.
반응형

2017년 11월 28일

 

오늘은 Kotlin 1.2를 발표합니다. 이는 주요한 새로운 릴리스로서, 현대적인 애플리케이션의 모든 구성 요소에서 Kotlin을 사용할 수 있도록 하는 길 위의 큰 한 걸음입니다.

Kotlin 1.1에서는 공식적으로 JavaScript 대상을 발표하여 Kotlin 코드를 JS로 컴파일하고 브라우저에서 실행할 수 있게 했습니다. Kotlin 1.2에서는 JVM과 JavaScript 간의 코드 재사용 가능성을 추가했습니다. 이제 애플리케이션의 비즈니스 로직을 한 번 작성하고 백엔드, 브라우저 프론트엔드 및 Android 모바일 앱과 같은 모든 계층에서 재사용할 수 있습니다. 또한 크로스 플랫폼 직렬화 라이브러리와 같은 코드를 더 재사용할 수 있도록 도와주는 라이브러리도 작업 중입니다.

 

 

Kotlin 1.2는 이미 이번 주에 출시되는 IntelliJ IDEA 2017.3에 번들로 포함되어 있습니다. Android Studio나 이전 버전의 IntelliJ IDEA를 사용하고 계시면, Tools | Kotlin | Configure Kotlin Plugin Updates 대화 상자에서 새 버전을 설치할 수 있습니다.

이 릴리스에는 외부 기여자들에 의해 수행된 많은 작업이 포함되어 있으며, 피드백을 보내주신 모든 분들과 이슈를 보고해주신 분들, 특히 풀 리퀘스트를 제출한 분들에게 감사드립니다.

 

다중 플랫폼 프로젝트


다중 플랫폼 프로젝트를 통해 애플리케이션의 여러 계층 - 백엔드, 프론트엔드 및 Android 앱 -을 동일한 코드베이스에서 구축할 수 있습니다. 이러한 프로젝트에는 플랫폼에 독립적인 코드를 포함하는 공통 모듈과, 특정 플랫폼 (JVM 또는 JS)용 코드를 포함하는 플랫폼별 모듈이 포함됩니다. 공통 모듈에서 플랫폼별 코드를 호출하려면 예상된 선언을 지정할 수 있습니다. 이는 모든 플랫폼별 모듈이 실제 구현을 제공해야 하는 선언입니다.

 


더 많은 정보는 문서를 확인해주십시오.

이미 언급했듯이 우리는 더 많은 로직을 공통 코드로 이동할 수 있도록 일련의 공통 라이브러리를 작업 중입니다.

  • kotlin.test는 Kotlin 1.2에 기본적으로 포함되어 있으며, 테스트를 한 번 작성하고 JVM과 JS에서 모두 실행할 수 있습니다.
  • kotlinx.html은 동일한 코드를 사용하여 백엔드와 프론트엔드에서 HTML을 렌더링할 수 있는 이소모픽 렌더링을 지원합니다.
  • kotlinx.serialization은 JSON 또는 ProtoBuf를 직렬화 형식으로 사용하여 애플리케이션의 다양한 계층 간에 Kotlin 객체를 쉽게 마샬링할 수 있습니다.


다만, 현재 다중 플랫폼 프로젝트는 실험적인 기능으로 분류됩니다. 즉, 이 기능은 사용할 준비가 되어 있지만, 후속 릴리스에서 디자인을 변경해야 할 수도 있습니다 (이 경우 기존 코드에 대한 마이그레이션 도구를 제공할 것입니다).


컴파일 성능


1.2 개발 기간 동안 컴파일 프로세스를 더 빠르게 만드는 데 많은 노력을 기울였습니다. 이미 Kotlin 1.1 대비 약 25%의 개선을 이루어냈으며, 1.2.x 업데이트에서 더 큰 개선 가능성을 볼 수 있습니다.

아래 그래프는 Kotlin으로 빌드된 두 개의 큰 JetBrains 프로젝트의 컴파일 시간 차이를 보여줍니다:

 


기타 언어 및 라이브러리 개선


언어와 표준 라이브러리에도 몇 가지 작은 개선 사항이 있습니다:

  • 어노테이션에 여러 인수를 보내는 더 간결한 구문 (배열 리터럴);
  • 최상위 프로퍼티와 로컬 변수에서 lateinit 수정자 지원 및 lateinit 변수가 초기화되었는지 확인하는 기능;
  • 더 똑똑한 스마트 캐스트 및 특정 경우에서 향상된 형 추론;
  • Java 9에서 도입된 분할 패키지 제한과의 표준 라이브러리 호환성;
  • 표준 라이브러리의 새로운 kotlin.math 패키지;
  • 콜렉션 및 시퀀스 작업을 위한 새로운 표준 라이브러리 함수들, 고정 크기의 중첩 그룹으로 컬렉션이나 시퀀스를 나누는 일련의 함수들을 포함합니다.

 

더 많은 정보와 코드 예제는 Kotlin 1.2의 새로운 기능 페이지를 확인하십시오.


세계적인 Kotlin


올해 3월에 Kotlin 1.1을 발표한 이후로 Kotlin은 전 세계적으로 많은 채택을 얻었습니다. 그 중요한 사건 중 하나가 KotlinConf인데, 이는 전세계 첫 번째 Kotlin 컨퍼런스로 11월 2-3일에 샌프란시스코에서 약 1200명이 참석한 행사입니다. 모든 발표를 녹화했으며, 비디오가 이제 사용 가능합니다.

Kotlin은 이제 Android 개발의 공식적으로 지원되는 언어로서, Android Studio 3.0에서 기본적으로 지원되며 Google이 공식 샘플과 스타일 가이드를 게시했습니다. 그 결과 Kotlin은 이미 핫한 스타트업과 포춘 500 개의 기업을 포함한 Android Studio 3.0의 프로젝트에서 17% 이상의 프로젝트에서 사용됩니다.

 


서버 측에서는 Spring Framework 5.0에서 많은 Kotlin 지원 기능이 포함되었으며, vert.x도 3.4.0 버전부터 Kotlin을 지원하고 있습니다. 또한 Gradle은 이제 기본적으로 Kotlin DSL 지원이 제공되며, Gradle Kotlin DSL 프로젝트는 1.0 버전에 빠르게 다가가고 있습니다.

GitHub에서의 오픈 소스 Kotlin 코드 라인 수는 이제 2500만 줄을 넘었습니다. 그리고 Stack Overflow에서 Kotlin은 가장 빠르게 성장하고 가장 싫어하는 언어 중 하나입니다.

 

Kotlin 주변의 커뮤니티도 정말 놀라운 것입니다. 전 세계에 100개 이상의 사용자 그룹이 있으며, 이토록 많은 발표가 있어서 모두를 추적하기 어려운 정도입니다. 그러나 우리가 알고 있는 발표들에 대한 맵을 통해 Kotlin의 사용이 얼마나 널리 퍼졌는지 알 수 있습니다.


Kotlin을 배우기 시작하는 사람들을 위해 책 (우리의 "Kotlin in Action" 포함)과 영어, 러시아어, 일본어, 중국어, 포르투갈어로 제공되는 점점 더 많은 온라인 코스, 튜토리얼 및 기타 리소스가 있습니다.


팀 만나기: 웨비나와 Reddit AMA


새 릴리스에 대한 자세한 정보를 공유하기 위해 12월 7일에 Kotlin 1.2의 다중 플랫폼 프로젝트에 관한 웨비나를 개최할 계획입니다. 참가하려면 등록해주십시오. 자리가 한정되어 있습니다!

Kotlin 팀은 또한 12월 5일에 Kotlin Reddit에서 AMA (Ask Me Anything)를 진행할 예정입니다. 점심 CET부터 시작하여 다음 24시간 동안 여러분과 함께할 것입니다.


업그레이드 방법


항상 try.kotlinlang.org에서 Kotlin을 온라인으로 시도해보실 수 있습니다.

  • Maven, Gradle 및 npm에서는 컴파일러 및 표준 라이브러리의 버전 번호로 1.2.0을 사용하십시오. 문서를 참조하십시오.
  • IntelliJ IDEA에서는 2017.3에 Kotlin 1.2가 번들로 포함되어 있으며, 이전 버전에서는 Kotlin 플러그인을 1.2 버전으로 설치하거나 업데이트하십시오.
  • Android Studio에서는 플러그인 매니저를 통해 플러그인을 설치하거나 업데이트하십시오.
  • Eclipse에서는 Marketplace를 통해 플러그인을 설치하십시오.
  • command-line 컴파일러는 Github 릴리스 페이지에서 다운로드할 수 있습니다.

 

호환성. Kotlin 1.2에서 언어와 표준 라이브러리는 역방향 호환됩니다 (버그 제외). 1.0 또는 1.1에서 무언가가 컴파일되고 실행된다면 1.2에서도 계속 작동할 것입니다. 대규모 팀이 점진적으로 업데이트하는 데 도움이 되도록 새 기능을 비활성화하는 컴파일러 스위치를 제공합니다. 가능한 주의 사항에 대한 문서가 제공됩니다.

즐거운 Kotlin을 경험하세요!

 

원문

 

https://blog.jetbrains.com/kotlin/2017/11/kotlin-1-2-released/

반응형

댓글