ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [코틀린] 01.소개와 맛보기
    안드로이드/코틀린 2019. 11. 28. 12:37

    소개

    코틀린(Kotlin)JVM(JAVA Virtual Machine)에서 동작하는 프로그래밍 언어로, 안드로이드 스튜디오의 기반인 IntelliJ IDEA를 개발한 JetBrains사가 20117월 공개했다. 20175월 안드로이드 공식 프로그래밍 언어로 채택된 후, 구글은 20195월 'Google I/O 2019' 개발자 콘퍼런스 행사에서 '코틀린을 우선 지원한다(Kotlin First)'고 발표했다.

     

    현재 안드로이드는 JAVA 9 및 그 이후 버전을 정식으로 지원하지 않으며, 정상적 앱 빌드에는 JAVA 8 이하의 버전을 사용해야 한다.

     

    이는 기존 안드로이드 개발 언어인 JAVA 저작권을 보유하고 있는 오라클사와 구글 간의 저작권 재판에서 구글이 패배함에 따라 90억 달러 이상의 배상액을 지불할 처지에 놓였기 때문으로 보고 있다. 오라클은 JAVA를 개발한 썬마이크로시스템즈를 2009년에 인수하고 2010년 구글이 JAVA 저작권을 침해했다고 소송했다.


    Kotlin 1.4 (출시 예정)

    201912월 현재, 코틀린 버전은 1.3이다.

     

    "코틀린 컨퍼런스 2019(KotlinConf’19)"가 201912월에 열렸으며, 자세한 내용은 코틀린 블로그를 살펴보기 바란다.

     

    KotlinConf'19 기조연설 바로가기(영문)

     

     

    2020년 코틀린 1.4 발표와 함께 기능을 소개하고 있으며, 여기에서 필자가 주목한 점은 '안드로이드 스튜디오에 애플의 iOS에서 실행하는 컴파일러를 내장한다.'는 점이다.

     

    코틀린을 만든 JetBrains사의 수석 언어 디자이너 Andrey Breslav가  "2020 년에는 iOS용 코틀린 앱을 안드로이드 스튜디오에서 실행/테스트/디버깅 할 수 있다." 고 소개하고 있다.

     

    필자는 다른 어떤 것보다 이 발표를 의미 있게 생각한다.

     

    모바일 앱(네이티브 앱을 말하며, 모바일 웹이 아니다) 생태계를 양분하는 안드로이드와 iOS에서 한 번 개발로 모두 사용할 수 있는 멀티플랫폼 앱 개발에 대한 시도는 여러 번 있었다.

     

    • 개발 언어 파스칼(Pascal) 기반 엠바카데로(Embarcadero)사의 델파이(Delphi)

    • 개발 언어 C#(씨샵) 기반 마이크로소프트(Microsoft)사의 자마린(Xamarin)

    • ...

     

    한 가지 언어만 익히면 안드로이드와 iOS에서 모두 실행 가능한 모바일 앱을 만들 수 있는데 왜 활성화되지 않았을까?

     

    첫 번째, 멀티플랫폼 앱 개발을 위해 제3의 언어를 배워야 하는 부담감

    델파이는 파스칼 언어를, 자마린은 C# 언어를 배워야 한다.

    안드로이드 앱 개발은 JAVA (현재는 코틀린), 아이폰 앱 개발은 Objective-C Swift를 익혀도 벅찬 시점이다.

     

    비유하자면 영어와 스페인어용 번역도서를 만드는데 독일어를 배우면 한꺼번에 번역된다는 뜻이다.

    그래서, 독일어를 배우라는 의미인데 컴파일 회사는 영어와 스페인어 최신 단어가 나오면 바로바로 독일어로 번역해 줄 테니 독일어를 사용하라고 하지만 왠지 부담스럽지 않은가?

    영어만 배우면 스페인어용 번역도서도 나온다면 어떨까? 영어만 배우면 되지 않을까?

     

    코틀린에서 바라는 기대치는 위와 같다. 코틀린만 배우면 안드로이드 앱 개발은 기본으로 지원되고,, 안드로이드 앱을 만들면 iOS용 모바일 앱도 자동적으로 만들어지면 좋겠다.

     

    두 번째, 멀티플랫폼 프로그래밍 언어의 최신 API 지원에 대한 부담감

    안드로이드나 iOS가 업데이트되면 멀티플랫폼용 프로그래밍 언어(Delphi, Xamarin)는 자신의 언어에 맞도록 컴파일 회사가 네이티브 API를 만들어야 한다. 사람의 손이 한번 거치는 만큼 출시 속도는 늦어질 수밖에 없다.

    (구글이 안드로이드를 버전 업하면 픽셀 같은 레퍼런스폰은 즉시 업데이트가 되지만, 삼성/LG폰은 자신들의 UI에 맞추는 작업 때문에 몇 개월 후에 업데이트 적용이 된다.)

     

    최신 API를 사용한 프로그래밍은 매우 낮은 확률이지만, 아무래도 개발자에게는 부담으로 나타날 수밖에 없다.

     

    코틀린 언어만 알면 안드로이드와 iOS 앱이 둘 다 만들어진다...얼마나 멋진 일인가?

    iOS 때문에 모바일 앱 개발환경은 맥에 안드로이드 스튜디오를 설치해서 개발하는 것이 보편화될 것으로 생각한다.

     


    (웹에서) 코틀린 맛보기

    코틀린 공식 홈페이지는 웹브라우저를 통해 코틀린 코드를 작성하고 컴파일 결과를 확인할 수 있도록 지원하고 있다.

    단점은 키보드 입력에 대한 처리가 어렵다. 하지만, 홈페이지의 매개변수 입력 기능을 이용하여 간단하게나마 경험할 수 있다.

     

    1) 자신의 PC에서 브라우저를 열고 아래 웹페이지로 들어가 보자..

     

    https://kotlinlang.org/

     

     

    2) 화면 상단 메뉴의 'TRY ONLINE'을 클릭한다. 코틀린 코딩 연습이 가능한 화면이 나타난다.

     

    코틀린 공식 홈페이지 첫 화면. 코틀린에 관한 최신 소식을 알 수 있다. 화면 상단의 'TRY ONLINE'을 클릭하자.

     

    코틀린 코드 연습이 가능한 화면. 처음으로 접속하면 위와 같이 가장 간단한 코틀린 소스가 표시 된다.

     

     

    3) 화면 상에 아래 코드를 입력한다. (처음으로 접속하면 아래 코드가 나타나 있을 것이다.)

     

    fun main() {
        println("Hello, world!!")
    }

     

    • fun : 코틀린은 함수를 선언할 때 'fun'으로 시작한다. (function의 약자)

    • main() : 프로그램이 실행될 때 시작점이다. 실행 프로그램에는 꼭 한 개의 main() 이 있어야 한다.

    • println("문자열") : 화면(콘솔)에 큰따옴표("") 사이의 문자열을 출력한다.

     

     

    과거 코틀린은 아래와 같이 main() 에 매개변수가 필요했다. Kotlin 1.3 부터는 main() 을 매개변수 없이 선언할 수 있다.

    fun main(args: Array<String>) {
        println(“Hello, Kotlin!”)
    }

     

     

    4) 화면 우측의 오른쪽 화살표()나 단축키(Ctrl + F9)를 눌러 실행한다.

     

    코틀린 코드를 입력 후 실행 버튼을 누른다.

     

    웹 브라우저 상에서 아래와 같은 단축키를 사용할 수 있다.

     

    • Ctrl + Space : 코드 자동 완성 표시

    • Ctrl + / : 주석 설정/해제

    • Ctrl + F9 : 코드 실행

     

     

    5) 브라우저 하단에 'Hello, world!!'가 나타나면 정상적으로 실행된 것이다.

     

    코틀린 코드 실행 결과

     

    프로그래밍 언어 학습의 고전 "Hello, world"를 출력해 보았다. 아래에서 '인자' 넣는 법을 알아보자.

     


    코드 응용

    상황 : 미리 입력한 인자(argument)를 매개변수(parameter)로 받아 화면에 출력한다.

     

    • 인자 (아규먼트, argument) : 호출하려는 함수(main())에 전달하려는 값. 여기에서는 'Kotlin Java'가 해당.

    • 매개변수 (파라미터, parameter) : 함수 외부 값을 받는 변수. 여기에서는 'args'가 해당.

     

    1) 기존 코틀린 코드를 모두 지우거나 수정하여, 아래 코드를 입력한다.

     

    fun main(args: Array<String>) {
        println("Hello, ${args[0]}")
        println("Good bye, ${args[1]}")
    }
    • main(args: Array<String>) : 프로그램 시작점인 main()에 인자로 받을 매개변수 args를 추가했다. args의 변수형은 문자열(String) 매개변수를 받는 배열 클래스(Array<>)로 선언했다. 코틀린은 int[2]처럼 변수형에 바로 배열을 선언할 수 없다.
    • println("Hello, ${args[0]}") : 첫 번째 인자 값이 들어 있는 args[0]를 println()에 출력하기 위해 ${}를 사용했다.
    • println("Good bye, ${args[1]}") : 두 번째 인자 값이 들어 있는 args[1]를 println()에 출력하기 위해 ${}를 사용했다.

     

     

    2) 인자 값을 넣는다.

    코드를 실행하기 전에 화면 ①우측 Settings 아이콘(육각 너트 모양)을 눌러 ②Program arguments 항목에 매개변수로 받을 인자를 넣고 ③'X'표시를 클릭한다. (여기는 2개의 인자를 매개변수로 받기 때문에 'Kotlin'과 'Java' 사이에 꼭 공백을 넣도록 한다.)

     

    인자를 입력하는 창. 'Kotlin Java' 를 입력한다.

     

     

    3) 실행하면 아래와 같이 'Hello, Kotlin Good bye, Java'가 나타날 것이다.

     

    코틀린 코드 실행 결과. 'Hello, Kotlin Good bye, Java' 가 출력된다.


    간단하게 코틀린을 실행시켜 보았다.

    코틀린 기본 문법 학습은 홈페이지 상에서 충분히 학습이 가능하다.

    하지만, 코틀린 소스가 길어지면 컴파일 시간이 오래 걸리거나, 이전 컴파일 결과가 표시되는 경우도 있다.

    무엇보다 문자 입력이 필요한 소스는 테스트가 거의 불가능하다. 소스를 변경하여 main() 함수에서 인자를 받는 방식도 있지만 불편하기는 마찬가지이다.

     

    다음에는 IntelliJ IDEA를 사용하지 않고 내 컴퓨터 '명령 프롬프트 창'에서 코틀린 소스를 작성하여 컴파일하는 Kotlin/Native(코틀린-네이티브) 에 대해 알아보겠다.


    댓글

Designed by Tistory.