본문 바로가기

프로그래밍 언어 기초/KOTLIN

[Kotlin] Kotlin의 구조와 기본 문법

개요

오늘은 코틀린의 기본적인 구조와 실행 방법에 대해서 알아보도록 하겠습니다.

Kotlin은 IntelliJ IDEA를 만든 JetBrains사에서 개발한 프로그래밍 언어입니다.

과거부터 지금까지 객체지향 언어 중에는 Java가 가장 유명한데요.

객체지향의 아버지 격이 되는 Java는 근본적으로 '객체(Class)'를 중심으로 설계되었습니다.

Java는 객체지향 프로그래밍 언어로는 아주 훌륭했지만, 한 가지 근본적인 아쉬운 점이 있었는데요. 바로, 함수를 변수에 담을 수 없다는 것이었습니다.

물론, 최신 자바에서는 스트림(Stream)이라는 기술로 이를 극복하려는 시도가 반영되었지만,

코틀린이 개발되던 시기에는 자바는 함수를 *일급 객체로 다룰 수 없다는 명백한 한계점이 존재했습니다.

그래서 이러한 Java의 아쉬운 점을 개선하면서도, 

Java와의 상호 운용성을 고려한 새로운 프로그래밍 언어가 2010년에 개발이 시작,

되었고, 2012년에 드디어 코틀린(Kotlin)이라는 이름으로 세상에 등장하게 됩니다.

코틀린(Kotlin)이라는 이름이 어원은 이 언어를 만든 개발자들이 주로 거주하던 

러시아의 상트페테르부르크 근처에 있는 섬 이름 따서 지어졌다고 합니다.


일급 객체(First-class citizen)란?

다음의 세 가지 요건을 만족할 수 있는 객체

  • 변수에 할당할 수 있어야 합니다.
  • 함수의 인자로 전달할 수 있어야 합니다.
  • 함수의 반환 값으로 사용할 수 있어야 합니다.


코틀린 준비하기

 

아무래도 코틀린(Kotlin)은 안드로이드(Android) 개발자에게 더 유명한 언어라고 생각이 드는데요.

그래서 혹시, 이 글을 보시는 분들 중에 사전에 안드로이드 스튜디오를 설치를 완료 하셨었다면 

아마 그와 동시에 자동으로 코틀린 컴파일러가 설치되어 코틀린 파일을 컴파일 할 수 있어서 별다른 설정이 필요 없으실 것입니다.

그러나, 아무런 프로그램도 설치하지 않으셨다면 아래의 공식 사이트를 통해 코틀린 컴파일러를 설치하실 수 있습니다.
https://kotlinlang.org/docs/getting-started.html

 

Get started with Kotlin | Kotlin

 

kotlinlang.org

 

혹시 윈도우 환경인데 안드로이드 스튜디오가 설치되지 않으셨다면,
아래의 깃허브 사이트에서 직접 코틀린 컴파일러를 다운로드하여 설치할 수도 있습니다.

 

https://github.com/JetBrains/kotlin/releases/tag/v1.9.23

 

Release Kotlin 1.9.23 · JetBrains/kotlin

1.9.23 Apple Ecosystem KT-65542 Cinterop tasks fails if Xcode 15.3 is used Backend. Wasm KT-64486 Kotlin/Wasm/WASI exported function callback for coroutines support Compiler KT-53478 Could not...

github.com

 


코틀린 사용하기

 

오늘은 아주 간단하게 코틀린 메인 함수를 작성해 보도록 하겠습니다.

기본적으로 프로그래밍 언어에서는 프로그램이 실행될 시작점을 정해주어야 하는데요.

대부분의 프로그래밍 언어나 통합 개발 환경(IDE)에서는 이러한 작업을 자동으로 처리해 주지만, 

그래도 프로그램이 어디서 시작되는지 코드에서 찾아낼 수 있는 능력은 

개발자의 중요한 역량이기 때문에 아래와 같이 메인 함수를 직접 작성해보도록 하겠습니다.

 

fun main(args: Array<String>) {
    print("hello world!);
    print("hello world!) // 새미콜론(;) 생략 가능!
}

 

 

코틀린의 메인 함수는 위와 같이 작성할 수 있는데요.

코틀린에서는 코드를 작성하거나, 변수의 선언 할 때 개행 문자를 기준으로 코드를 구분할 수 있기 때문에

세미콜론(;)을 통해 무조건 코드를 구분 하지 않으셔도 괜찮습니다. (개인적으로 매우 좋아하는 부분)

그런데, 만일 개행 문자로 코드를 구분하지 않고, 하나의 줄로 작성한다면 (권장하지 않습니다.),

아래와 같이 세미콜론(;)을 통해 코드를 직접 구분해주셔야 합니다.

 

fun main(args: Array<String>) {
    print("hello world!); print("hello world!); print("hello world!)

}


코틀린의 문법은 자바(Java)와 비교하면 비교적 간단하다고 생각합니다.

자바는 접근 제한자, 리턴 타입, 함수명 등등

간단한 변수 하나나 함수를 만들 때에도 적어야할 코드의 양이 상당한데요.

그런데, 코틀린은 타입 추론(Type Inference)이라는 기술이 적용되었기에

변수 등에서 그 자료형의 명확한 추론이 가능할 때에는 자료형을 생략할 수 있습니다.


이는 경우에 따라서는 단점이 될 수도 있지만, 

적어도 코드를 작성하는 개발자 입장에서는 한 글자라도 덜 적게 된 것은 

손가락의 부담을 한 층 덜어준 좋은 변화가 아닐까 하고 생각이 듭니다.


코틀린 실행하기

이제 작성한 코틀린 파일을 실행해보도록 하겠습니다.

코틀린은 기본적으로 kotlinc 이라는 도구를 사용해 jar파일로 변환할 수 있는데요.

 

이렇게 변환돤 .jar파일은 자바를 실행시켜주는 JVM을 통해서 실행시킬 수 있습니다.

그래서 Kotlin으로 개발을 진행해도, 컴파일러를 통해 jar로 변환되기에

JVM을 통해 쉽게 자바 프로그램 처럼 사용할 수 있습니다.

코틀린을 실행하기 위해서는 아래의 작업을 수행해야 합니다.

  1. 코틀린 파일 작성하기
  2. 코틀린 컴파일러로 jar로 만들기
  3. jar를 실행하기

내부적으로는 더 많은 일들이 일어나지만,

위의 세 가지 작업을 마치면 코틀린으로 작성한 파일을 실행시킬 수 있습니다.

그런데, 코틀린 파일을 컴파일하기 위해서는

명령어를 사용하는 운영체제가 Window인지 혹은 MacOS인지에 따라 약간 차이가 있을 수 있습니다.

잠깐, 그 이유를 설명해드리자면 Windows 운영체제에서 사용하는 명령어 입력창
통상 터미널(Terminal)이라고 부르는 CMD 창은 마이크로 소프트에서 개발했는데요.

그렇기에, Linux와 MacOS와 같이 Unix 쉘 기반으로 만들어진 OS와 차이점이 있어서 상호간에 명령어가 차이가 있습니다.

 

그래서, 간단히 정리하자면

윈도우 환경에서 CMD창이나 파워쉘을 통해 명령어를 입력한다면 아래와 같이 입력하셔야 합니다.

kotlinc main.kt -include-runtime -d main.jar

 

 

반면에, Git-Bash나 Linux, MacOS의 터미널 등을 이용하신다면 아래의 명령어를 입력하시면 됩니다.

kotlinc main.kt" -include-runtime -d "mainjar"

 

 

이후에 아래의 명령어로 jar로 변환된 파일을 실행해보면 결과를 확인하실 수 있습니다.

java -jar main.jar



여기서 사용하는 java 명령어는 PC 내에 Java가 정상 설치되어 있어야 사용할 수 있으므로,

Java가 아직 설치되지 않으셨다면 Java 설치 및 환경 변수 설정 후 시도해주세요.

 


코틀린 자동 실행기

 

여기 까지 무사히 오셨다면, 정말 수고 많으셨습니다.

그런데, 저는 이렇게 귀찮은 작업을 별로 선호하진 않아서

코틀린 파일만 작성하면, 쉘 스크립트로 실행할 수 있는 실행기를 하나 만들어보았는데요.

앞서 설명드린 운영체제 환경에 따라, 사용할 수 있는 쉘 스크립트가 약간 차이가 있어서

윈도우 환경이라면 아래의 bat 파일을 사용해주시고,

 

kt_run.bat
0.00MB



Git-Bash나 Linux, MacOS 등에서 사용하실 거라면 아래의 sh 파일을 사용해주시면 됩니다.

 

kt_run.sh
0.00MB

 


제가 개인적으로 사용하는 자동 실행기인데, 혹여 필요하신 분들을 위해 공유하기 위해 함께 파일로 첨부합니다.

오늘은 코틀린의 기초 환경 설정과 실행에 대해 알아보았는데요.

다음 챕터부터는 코틀린의 기초 문법에 대해서 자세히 알아보도록 하겠습니다.