KotlinNative에서 HelloWorld하기

Kotlin 1.3



Kotlin 1.3이 발표되어 KotlinNative가 베타 버전으로 함께 제공됩니다.
지금까지는 JVM 라든지 JavaScript 라고 하는 환경에서 밖에 움직이지 않았던 것이, KotlinNative 에서는 바이너리로서 OS 로부터 직접 움직일 수 있게 됩니다. JVM에 의존하지 않기 때문에 iOS 앱도 Kotlin에서 만들 수 있게 된다고 화제가 되고 있습니다. 멀티 플랫폼 개발의 본명이 될지 궁금하네요.

서버측 KotlinNative



네이티브 혜택은 앱뿐만 아니라 서버로 실행되는 프로그램에서도 가능합니다. JVM은 가상 머신의 일종이므로 애플리케이션을 시작하는 데 시간이 걸리거나 디스크 메모리 용량을 여분으로 먹어 버리는 등의 단점이 있습니다. 그러나 KotlinNative에서 바이너리로 애플리케이션을 생성할 수 있게 되면, 이 오버헤드 없이 움직일 수 있게 됩니다. Docker 화할 때도 이미지가 만들기 쉬워질 것 같네요.
또한 Kotlin 1.3부터 ​​Coroutines를 사용할 수 있게 되었기 때문에 비블로킹 웹 서버를 만들 수 있게 되었습니다. 외부의 통신이나 파일의 입출력등을 CPU로 기다리지 않고 처리할 수 있게 되므로, 매우 효율적으로 리퀘스트를 할 수 있게 됩니다. Kotlin의 비동기 웹 프레임 워크 ktor도 1.0.0으로 이제 공식적으로 출시 될 것입니다. 그래서 이것을 꼭 시도하고 싶었습니다.
Python보다 형이 엄밀하고, Go보다 취약하기 쉬운 언어(※개인차가 있습니다)이므로, 어쩌면 단번에 유행하는 것은 기대하고 있습니다.

HelloWorld 한다



이번에는 KotlinNative에서 Ktor를 움직이는 곳까지 시도하려고 생각했지만, 아직 KotlinNative에 프레임 워크가 대응하고 있지 않거나 원래 스스로 다른 Kotlin 라이브러리를 도입하는 곳에서 주저했기 때문에, 우선 HelloWorld까지를 정리해 보았습니다.

GitHub: Kotlin Native Support #571 - https://github.com/ktorio/ktor/issues/571

검증 환경
  • OS: Ubuntu 16.04
  • (Windows10 WSL에서 실행)


  • Kotlin 설치



    완전히 Kotlin 1.3이 출시된 것 같았지만 아직이었습니다. (2018/10/17 현재)
    그래서 Github에서 직접 떨어집니다.
    (릴리스 후에는 SDKMan 을 넣어 sdk install kotlin 로 들어간다고 합니다)
    # ダウンロード
    cd /tmp
    wget https://github.com/JetBrains/kotlin-native/releases/download/v0.9.3/kotlin-native-linux-0.9.3.tar.gz
    tar -zxvf kotlin-native-linux-0.9.3.tar.gz
    
    # 設置してパスを通す (場所はお好みで)
    sudo mv kotlin-native-linux-0.9.3 /opt/
    export PATH=$PATH:/opt/kotlin-native-linux-0.9.3/bin
    
    kotlinc-native 라는 명령을 사용할 수 있게 되면 설치 완료입니다. 별도 Java 를 사용할 수 있게 되어 있을 필요가 있을지도 모릅니다.

    HelloWorld 한다


    fun main(args: Array<String>) {
        println("Hello Kotlin/Native!")
    }
    

    KotlinNative의 공식 페이지에서 HelloWorld의 샘플을 Copipe 마음껏 손에 넣습니다.
    # コンパイル
    kotlinc-native hello.kt -o hello
    
    # 実行!!
    ./hello.kexe
    

    Kotlin Native 완전히 이해한 피 c. 라고 r. 코 m / Shi sqfw4r0 — kimihiro_n (@kimihiro_n) 10월 17, 2018


    수고하셨습니다.



    참고로 Kotlin 1.3부터 ​​main 인수가 더 이상 필요하지 않으므로



    fun main() {
        println("Hello Kotlin/Native!")
    }
    


    와 같이 해도 제대로 움직여 주었습니다. Java 느낌이 사라졌습니다.



    Kotlin 1.3과 Ktor 1.0의 정식 릴리스 즐거움이군요.

    Native에서도 웹 서버를 만들 수 있게 되면 다시 시도하고 싶습니다.


    좋은 웹페이지 즐겨찾기