본문 바로가기
Kotlin/Release Notes

[Kotlin Release Notes] Kotlin 1.0 Released: Pragmatic Language for the JVM and Android

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

2016년 2월 15일

 

이게 바로 1.0입니다!

긴 여정이었지만 드디어 첫 번째 큰 1.0에 도달하게 되었으며, 릴리스를 기념하여 새로운 로고를 선보이게 되었습니다:

 

 

Reddit와 Hacker News에서의 토론을 확인하세요.

 

Kotlin이란 무엇인가요?


Kotlin은 JVM 및 Android용으로 기능을 조합한 객체 지향 및 함수형 기능을 결합한 실용적인 프로그래밍 언어로, 상호 운용성, 안전성, 명확성 및 도구 지원에 중점을 둡니다.

일반 목적의 언어로써 Kotlin은 Java가 작동하는 모든 곳에서 작동합니다: 서버 측 애플리케이션, 모바일 애플리케이션(Android) 및 데스크톱 애플리케이션입니다. 

 

  • IntelliJ IDEA, Android Studio 및 Eclipse
  • Maven, Gradle 및 Ant
  • Spring Boot (오늘 코틀린 지원 버전이 릴리즈됐습니다.)
  • GitHub, Slack 그리고 마인크래프트


Kotlin의 주요 초점 중 하나는 상호 운용성 및 혼합 Java+Kotlin 프로젝트에 대한 원활한 지원입니다. 이는 채용을 용이하게하고 보일러플레이트 코드를 줄이고 더 많은 유형 안전성을 제공합니다. 또한 Kotlin은 바이트 코드 풋프린트를 낮추면서 일상적인 작업을 쉽게 수행할 수 있는 포괄적인 표준 라이브러리를 갖추고 있습니다. 물론 Java 라이브러리는 Kotlin에서도 사용할 수 있으며 그 반대로도 가능합니다.


실용주의란 무엇인가요?


핵심 가치를 이해하는 것은 장기적인 프로젝트에 있어서 중요합니다. Kotlin의 디자인을 설명할 때 한 마디를 고르라면 "실용주의"가 될 것입니다. 그래서 초기에 우리는 Kotlin이 발명이나 연구와는 별로 관련이 없다고 말했습니다. 우리는 실제로 몇 가지를 발명했지만, 이것은 프로젝트의 목표가 아니었습니다. 물론 우리는 버그를 방지하는 타입 시스템을 구축하고 코드 재사용을 용이하게 하는 추상화 메커니즘을 구축했습니다. 그렇게 하지 않으면 위치에 있는 사람들이 할 것처럼 말이죠. 그러나 우리가 이를 수행하는 "실용적"인 방법은 언어를 좋은 도구로 만들기 위해 사용 사례에 초점을 맞추는 것이었습니다.

특히 이 접근 방식은 우리에게 기존 코드와 인프라와의 상호 운용성이 중요하다는 개념을 즉시 떠올리게 했습니다. 세상을 처음부터 다시 쓰는 것은 누가 해보지 않았을까요? 저는 그렇게 해본 적이 몇 번이나 있습니다 :) 그리고 Kotlin은 Java 상호 운용성, Maven 통합 및 Android 호환성 때문에 개발 및 디자인이 훨씬 쉬워졌을 것입니다! 이 방식은 많은 면에서 더 우아하게 될 것입니다. 그러나 우아함은 물론 높이 평가되지만, 여기서의 주요 목표는 유용함입니다. 사용자가 처음부터 다시 배워야 하거나 처음부터 다시 만들거나 다시 하지 않아도 되는 것이 더 많아질수록 더 나은 것입니다.

— 그래서 왜 Kotlin은 자체 패키지 매니저나 자체 빌드 시스템을 가지고 있지 않을까요?
— Maven과 Gradle이 이미 존재하며, 그들의 많은 플러그인을 재사용하는 것이 많은 프로젝트에 중요합니다.
— 왜 우리는 JDK 호환 컬렉션 인터페이스를 만드는 데 많은 시간과 노력을 투자했을까요, 처음부터 컬렉션을 다시 디자인하는 것이 훨씬 쉬웠을텐데요?
— JDK 컬렉션과 함께 작동하는 대량의 Java 코드가 있기 때문에 경계에서 데이터를 변환하는 것은 고통스러웠습니다.
— 왜 Kotlin은 Java 6 바이트 코드를 지원하나요?
— 여전히 많은 사람들이 Java 6을 사용하고 있기 때문입니다 (특히 Android, 하지만 이에 국한되지는 않음).

우리에게 있어서 실용주의는 언어나 라이브러리 자체보다는 사용자 경험을 만드는 것입니다. 많은 언어 디자인 결정은 "이것이 점진적 컴파일을 방해하지는 않을까?", "이것이 APK 메서드 수를 증가시키지 않을까?", "이걸 타이핑하는 동안 IDE가 어떻게 강조하게 할까?"와 같은 제약 조건 아래에서 이루어졌습니다. 그 결과로 우리는 우리의 도구와 언어를 자랑스럽게 생각합니다.

 

제작에 충분히 성숙하고 준비되었습니까?


네. 그리고 이미 상당한 시간 동안 준비되어 있습니다. JetBrains에서는 컴파일러와 툴링을 구현하는 데 그치지 않고 지난 두 해 동안 Kotlin을 실제 프로젝트에서 꽤 광범위하게 사용해 왔습니다. JetBrains 외에도 Kotlin을 이미 제품 생산에 사용하는 회사들이 상당히 많습니다.

실제로 1.0 버전에 도달하는 데 오랜 시간이 걸린 이유 중 하나는 실제 실전에서의 디자인 결정을 검증하는 데 특별한 주의를 기울였기 때문입니다. 컴파일러는 역호환성을 유지하며 향후 Kotlin 버전은 기존 코드를 깨뜨리지 않아야 합니다. 따라서 우리가 내린 어떤 선택이든 그것을 지켜야 합니다.

이 이정표에 도달하는 데는 초기 채용자들의 귀중한 도움 없이는 불가능했습니다. 용기와 에너지, 열정을 가져주신 모든 분들께 감사드립니다!


Kotlin 뒤에 누가 있나요?


무엇보다도 Kotlin은 오픈 소스 언어입니다.

  • 아파치 2.0 오픈 소스 라이선스에 따라 GitHub에서 개발되었습니다.
  • 오늘까지 100명 이상의 기여자가 참여했습니다.


현재 JetBrains가 Kotlin의 주요 후원자입니다. 우리는 Kotlin 개발에 많은 노력을 투자했으며 이 프로젝트에 장기적으로 헌신하고 있습니다. 우리는 제품에서 사용할 필요가 있어서 Kotlin을 개발했고, IntelliJ IDEA, JetBrains Rider, JetBrains Account & E-Shop, YouTrack을 포함한 거의 10개의 JetBrains 제품과 몇몇 작은 IDE 및 일부 내부 프로젝트에서 Kotlin을 사용하고 있습니다. 그래서 Kotlin은 여기에 머무를 것입니다!

2012년부터 Kotlin의 개발을 매우 열린 방식으로 진행해왔으며 지속적으로 커뮤니티와 대화하고 피드백을 수집하고 처리하는 데 주력하고 있습니다.

앞으로는 디자인 제안과 토론을 위한 중앙 집합지를 마련할 계획이며, 이를 통해 프로세스를 더욱 더 가시적으로 조직화할 예정입니다. Kotlin에 대한 표준화 노력은 아직 시작되지 않았지만, 더 빠른 시일 내에 시작해야 할 필요를 깨닫고 있습니다.

 

언어 설계와 전체 프로젝트 지원은 JetBrains에서 고용한 팀이 수행합니다. 현재 JetBrains에서 Kotlin에 풀타임으로 종사하는 인원이 20명 이상이며, 이는 JetBrains의 Kotlin에 대한 헌신을 또 다른 증거로 볼 수 있습니다.

 

숫자들을 살펴보겠습니다:

 

  • 지난 달에 1만 1000명 이상의 사람들이 Kotlin을 사용했으며 지난 주에는 거의 5천 명이 사용했습니다.
  • 수백 개의 StackOverflow 답변.
  • 두 권의 책: 'Kotlin in Action' 및 'Kotlin for Android Developers'.
  • 약 1400명의 Slack 참여자 (초대장 받기).
  • IntelliJ IDEA와 Rider와 같은 프로젝트에 50만 줄 이상의 Kotlin 코드.

 

코드 라인 수에 대해 이야기하면 JetBrains의 프로젝트는 제외하고 GitHub의 오픈 리포지토리에서 이 수가 지수적으로 증가하고 있습니다.

 

 


또한 Prezi와 Expedia를 포함한 Kotlin을 사용하는 기업 목록이 계속해서 늘어나고 있습니다. 그런 경우 Kotlin을 사용하고 있다면 Pull Request를 보내주시기 바랍니다.

 

다가오는 로드맵


1.0 버전부터는 언어와 표준 라이브러리 (kotlin-stdlib)의 장기적인 역호환성을 지킬 것입니다:

  • 새로운 컴파일러는 이전의 이진 파일과 함께 작동할 것입니다 (하지만 오래된 컴파일러는 새로운 이진 파일을 이해하지 못할 수 있습니다. 예를 들어 javac 1.6은 javac 1.8로 컴파일된 클래스를 읽을 수 없습니다).
  • 이전의 이진 파일은 런타임에서 새로운 이진 파일과 계속 작동할 것입니다 (새로운 코드는 새로운 종속성이 필요할 수 있습니다).

 

이것은 JVM/Android 지원에만 적용됩니다. JavaScript 지원은 현재 실험적인 상태이며 곧 별도의 릴리스가 있을 것입니다.

계획에 따라 가장 가까운 목표는 (버그 수정 외에):

 

  • Kotlin 도구 체인의 지속적인 성능 개선 (이에는 Gradle의 증분 컴파일이 포함되며, 현재 진행 중입니다).
  • JavaScript 지원 (가능한 경우 JVM 및 JS로의 교차 컴파일 포함).
  • Java 8 바이트 코드를 최적화된 람다와 함께 생성하는 것을 지원합니다 (Android 사용자가 필요할 때까지 Java 6을 활발히 지원할 것입니다).

 

도구 업데이트와 버그 수정은 증분 업데이트로 릴리스될 예정입니다, 즉 1.0.X. 큰 변경 사항은 먼저 Early Access Program (EAP)를 통해 배포되며, 그 후에 1.1로 릴리스됩니다.


시작하는 방법


언어를 사용해보는 가장 쉬운 방법은 온라인 미니 IDE인 try.kotl.in을 통해입니다. Kotlin Koans도 포함되어 있으며, 이는 언어의 기본 사항을 안내하는 입문용 문제 세트입니다.

컴퓨터에서 Kotlin을 사용하려면 (Koans를 오프라인으로 완료하기 위해) 다음 중 하나의 IDE를 사용하세요:

  • IntelliJ IDEA (Ultimate 또는 Community): Kotlin 프로젝트를 생성하거나 Java 프로젝트에서 Kotlin 파일을 만드세요.
  • Android Studio: 플러그인 매니저를 통해 플러그인을 설치하세요.
  • Eclipse: Marketplace를 통해 플러그인을 설치하세요.

 

참고: 오래된 버전을 실행 중이라면 Kotlin 플러그인을 1.0으로 업데이트해야 할 수 있습니다.

Kotlin의 개념에 빠르게 익숙해지도록 도와주는 언어 문서와 자습서는 공식 웹 사이트에서 제공됩니다. 커뮤니티 구성원의 멋진 글과 발표 자료는 2015 Digest에서 찾을 수 있습니다.

Java 프로젝트에 Kotlin을 도입하는 경우 IDE에 내장된 Java-to-Kotlin 변환기를 활용하여 클래스 별로 마이그레이션을 보다 쉽게 수행할 수 있습니다.

마지막으로, 포럼이나 Slack에서 토론에 참여하시기 바랍니다.

한 번 더 감사드립니다. 커뮤니티의 도움 없이는 이룰 수 없었습니다.

좋은 Kotlin 되세요! 지금 :)

P.S. Reddit 및 Hacker News에서의 토론 보기"

 

원문

 

https://blog.jetbrains.com/kotlin/2016/02/kotlin-1-0-released-pragmatic-language-for-jvm-and-android/

 

 

반응형

댓글