본문 바로가기
Kotlin

[깡샘의 코틀린 프로그래밍] 정리 1- 코틀린 특징

by 들풀민들레 2018. 3. 2.

본 글은 [깡샘의 코틀린 프로그래밍 - 루비페이퍼] 의 내용을 발췌한 것입니다.

좀더 자세한 내용은 책을 통해 확인해 주세요.

 

 

 

1장. 코틀린 이해하기

 

1.1.2. 코틀린 특징

 

코틀린의 특징을 공식 사이트의 소개를 빌려서 정리하자면 다음과 같습니다. 코틀린 공식 사이트는 https://kotlinlang.org/입니다.

 

  • 자바, 안드로이드 100% 호환
  • 자바, 안드로이드, 브라우저, 네이티브 애플리케이션 개발
  •  Intellij, 안드로이드 스튜디오, 이클립스, CLI 등을 통한 개발
  • 함수형 언어, Lambdas, Extension, Null Safety 등 최신 언어의 트랜드 지원

 

자바, 안드로이드 100% 호환

 

100% 자바 호환성이라는 개념은 코틀린으로 개발된 코드가 자바 클래스로 빌드되어 JVM(Java Virtual Machine)에서 동작하기 때문에 나온  개념입니다. 모든 프로그래밍 언어는 개발자가 작성한 텍스트 파일이 기계가 인지할 수 있는 기계어로 바뀌고, 그 기계어를 해석해서 실행할 수 있는 환경이 제공되어야 합니다. 이 실행환경이 OS 혹은 VM인데, 자바는 개발자가 작성한 텍스트 파일(java 파일)이 컴파일되어 기계어로 바뀌고(class 파일) 이를 JVM이라는 버추얼머신이 실행하게 됩니다.

 

그런데 코틀린은 다른 언어와 다르게 별도의 실행환경을 제공하지 않고, 자바의 실행환경인J VM을 그대로 이용합니다. 개발자가 작성한 텍스트 파일(코틀린 확장자는 .kt)을 코틀린만의 독특한 기계어로 바꾸어 별도의 실행환경에서 실행하는 게 아니라, 자바의 class 파일로 바꾸어 JVM에서 실행합니다.

 

물론, 이렇게 JVM을 실행환경으로 사용하는 프로그래밍 언어는 코틀린이 처음은 아닙니다. 그루비(Groovy), 스칼라(Scala)라는 언어도 JVM을 실행환경으로 이용합니다. 결국, 자바로 개발되던 프로그램을 코틀린을 비롯한 JVM 기반의 언어를 이용해 개발할 수 있다는 이야기입니다.

 

자바, 안드로이드, 브라우저, 네이티브 애플리케이션 개발

 

코틀린은 자바 언어로 개발되던 소프트웨어 개발 분야에 적용하고자 만들어졌지만, 자바만을 목표로 하지는 않습니다. 즉, 안드로이드, 자바로 개발되던 서버 측 웹 애플리케이션 분야뿐 아니라 자바스크립트로 개발되던 프런트엔드(Front-End) 웹 애플리케이션 분야에도 사용할 수 있는 언어를 목표로 하고 있습니다. 또한, 코틀린 팀의 공식 블로그를 보면 JVM, JS (Javascript) 이외에 MacOS, iOS, IoT/임베디드 시스템과 같은 다른 플랫폼에서 실행되는 네이티브 애플리케이션 개발도 코틀린의 목표라고 소개하고 있습니다.

 

Intellij, 안드로이드 스튜디오, 이클립스, CLI 등을 통한 개발

 

젯브레인이 코틀린을 만들었다고 해서 꼭 IntelliJ에서 개발해야 하는 건 아닙니다. 코틀린의 개발환경은 특정 개발 도구로 한정되지 않습니다. 예를 들어 안드로이드 앱 개발을 목적으로 한다면 당연히 안드로이드 스튜디오에서 개발해야 합니다. 하지만 영역이 확대된다면 IntelliJ, 이클립스뿐 아니라CLI(Command Line Interface, 명령 프롬프트 혹은 터미널 창에서 직접 명령어를 입력하여 개발하는방식을 통칭하는 용어입니다)에서도 개발할 수 있습니다. 다양한 개발환경은 이번 장에서 다시 자세하게다루겠습니다.