IT/Kotliin

코틀린(Kotlin) 시작하기!

루카스강 2017. 6. 10. 23:50

코틀린 OT

It's a new programming language targeting the Java platform. Kotlin is concise, safe, pragmatic, and focused on interoperability with Java code.

Kotlin In Action 에서 소개하고 있는 Kotlin 에 대한 예제 소스입니다.

data class Person(val name: String, val age: Int? = null)	// Nullable type; defult value

fun main(args: Array<String>){
  	val persons = listOf(Person("Alice"), Person("Bob", age = 29))
  	val oldset = persons.maxBy { it.age ?: 0 }	// Lambda
  	println("The oldest is : $oldset")			// String template
  	// The oldest is : Person(name=Bob, age=29)	- data class 의 auto toString
}

자세한 사항은 뒤에 이어지는 포스팅에서 자세하게 다루도록 하고 코틀린에 대한 내용을 먼저 살펴보죠

  • Data class

    • 기존에 자바에서 쓰던 Model Class 를 이렇게 짧게 바꿀 수 있습니다. set, get 함수는 물론 toString 함수까지 내장되어 있습니다.
    • 예제코드를 보듯 코틀린에는 null-safe 하므로 null이 발생할 가능성이 있다면 명시적으로 nullable을 ?로 적어주어야 합니다.
    • defult value를 파라미터에서 바로 설정해줄 수 있습니다.
    • 위 예제인 Person data class는 name과 age를 가지고 있습니다.
  • Main function

    • 코틀린의 메인함수는 fun main(args: Array<String>) {} 으로 사용합니다.
    • 예제와 같이 public type functionName()function funName 도 아닌 fun 으로 짧아졌습니다.
    • 파라미터는 name : Type 순서로 사용하면 됩니다.
  • Value Type

    • 코틀린에서는 자바에서처럼 int, long, Class 등의 타입을 명시할 필요 없이, 알아서 추론해줍니다.
    • val과 var이 있으며, val 은 선언 후 변경이 되지 않을 때(value), var은 선언 후 변경이 존재할 때 사용합니다.(variable)
  • Lamda

    • 코틀린은 람다식을 기본으로 사용합니다.
    • it 은 파라미터의 defualt name 입니다.
    • ?: 은 만약 age가 null 일 경우 0으로 대체하기 위해 사용되었습니다. age는 null-safe하지 않기 때문입니다.

이 짧고 간결한 코틀린 코드에 감탄해보세요!

코틀린의 주요 특징

  • 자바가 있는 환경이라면 어디든!

    • 코틀린은 서버사이드, 안드로이드, 자바가 돌아가는 곳이면 어디서든지 동작합니다.
    • Google I/O 2017 발표 이후 부터는 안드로이드 공식 언어로 코틀린도 사용됩니다.
    • 코틀린 Native를 즐겨보세요! Kotlin JS 도 있습니다! (이 글에서는 Kotlin에 대해서만 다룰 예정입니다.)
    • 코틀린의 목표는 더 간결하고, 더 생산적이며, 좀 더 안전하게 자바를 대체할 수 있는 것입니다.
  • 동적 타입

    • 자바는 statically typed programming language (정적 타입 언어) 이고 코틀린은 dynamically typed programming language (동적 타입 언어) 입니다.
    • variable 은 많은 타입 언어를 자동으로 처리할 수 있습니다.
    • 예를들면

    val x = 1 // int 형으로 처리됩니다.

    val s = "Hello World" // String 형으로 처리됩니다.

    • 코틀린은 type 추론을 지원하고 있으며, function type 도 지원합니다!
  • Functional 과 객체 지향

    • 자바 개발자라면 객체 지향 언어에는 친숙하겠지만 함수형 언어는 조금 생소할 수도 있습니다.

    • 함수형 언어는 다음 세가지 콘셉이 있습니다.

      • First-class functions

        • 함수를 값(value)으로 사용할 수 있습니다. 변수에 저장하거나, 매개변수로 전달하거나, 다른 함수에서 반환할 수 있습니다.
      • Immutability (불변성)

        • 불변 객체로 작성할 경우, 상태를 변경할 수 없습니다.
      • No side effects

        • 동일한 입력에 대해 동일한 결과를 반환하고 다른 객체의 상태를 수정하거나 상호작용하면 안됩니다.
    • 함수형 코딩으로서 코드가 좀 더 간결해지고, 쓰레드에서 안전해지고, 테스트가 쉬워집니다.

  • 무료! 그리고 오픈소스!

코틀린 사용하기!

  • 컴파일

    • 코틀린 코드는 .kt 형식으로 되어 있으며, 컴파일러는 .class 형식으로 만들어줍니다.
    • 자바와 똑같습니다!
    • javac 를 사용했던 것 처럼 kotlinc 를 사용하시면 됩니다.
    kotlinc <source file or directory> -include-runtime -d <jar name>
    java -jar <jar name>
  • IntelliJ

    • 다음 글을 참고해주세요 (준비중)
  • Android Studio

    • 다음 글을 참고해주세요 (준비중)