Kotlin

실행

별도 정리 필요

기본 

$ kotlinc hello.kt -include-runtime -d hello.jar // 독립 배포 가능
$ java -jar hello.jar

또는 

$ kotlinc hello.kt // HelloKt.class 생성
$ java HelloKt

REPL

$ kotlinc-jvm or kotlin

정보

빌드

$ gradle jar
$ java -jar build/libs/example-0.1-SNAPSHOT.jar

디버깅

$ javap -c HelloKt
Compiled from "hello.kt"
public final class HelloKt {
  public static final void main();
    Code:
       0: ldc           #8                  // String Hello, World!
       2: astore_0
       3: iconst_0
       4: istore_1
       5: getstatic     #14                 // Field java/lang/System.out:Ljava/io/PrintStream;
       8: aload_0
       9: invokevirtual #20                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
      12: return

  public static void main(java.lang.String[]);
    Code:
       0: invokestatic  #23                 // Method main:()V
       3: return
}

Kotlin Worksheet는 Scratch와 달리 프로젝트에 종속적이다. Interactive Mode가 있어 초기 개발이 매우 편리하다. 사실상 REPL을 대체할 수 있다. 예전에 Swift가 XCode에서 이렇게 동작했다.

정리 필요

  • abstract vs. interface
  • mutableMap map.getOrPut() 자바에서는 이런걸 보지 못했는데 메소드명이 재밌다.
  • DSL custom language 설계할때 필요

Kotlin Native

LLVM backend로 지원한다. 이미 kotlin이 설치된 상황에서 설치되지 않으며, cask로 설치한다. $ brew install --cask kotlin-native 기존 kotlin은 uninstall 했는데, IntelliJ는 어플리케이션 dir내에 kotlin을 탑재하고 있기 때문에 문제가 없다.

$ kotlinc-native a.kt

맥에서는 권한 문제가 발생하므로 추가 처리가 필요하다.

$ xattr -rd com.apple.quarantine /usr/local/Caskroom/kotlin-native

이외에도 최초 실행시 필요한 모듈을 ~/.konan 아래로 다운 받는다. konan은 kotlin native의 애칭이다. 컴파일은 당연히 package가 지정되어 있으면 안되고 기본 파일명은 program.kexe이다. 컴파일 시간이 비교적 오래 걸리는데 간단한 큐 구현 파일이 맥북에서 10초 걸렸다.

코틀린을 다루는 기술 2019, 2020

★★★☆☆
팩트 책과는 달리 깊이 있는 내용이 많고 특히 함수형을 자세히 소개한다. joy of kotlin이라는 원제 답게 코틀린으로 다양한 재미거리를 많이 시도하며 연습 문제로 구성되어 있어 자율 학습하기에 좋다. 그러나 언어의 흥미있는 활용에 너무 집중해 실무에 도움이 될 만한 내용은 많지 않다.

빅 너드 랜치의 코틀린 프로그래밍 2018, 2019

★★★☆☆

Kotlin in Action 2016, 2017

★★★★★
저자인 Dmitry Jemerov는 코틀린 컴파일러 개발에 관여했으며 현재 제트브레인 CTO다.

Last Modified: 2023/10/04 01:01:27

is a collection of Papers I have written.
© 2000 - Sang-Kil Park Except where otherwise noted, content on this site is licensed under a CC BY 4.0.
This site design was brought from Distill.