코틀린 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
- 다음 글을 참고해주세요 (준비중)
'IT > Kotliin' 카테고리의 다른 글
코틀린(Kotlin)의 프로퍼티에 대해 알아보자! (0) | 2018.03.04 |
---|---|
코틀린(Kotlin)의 클래스에 대해 알아보자! (1) | 2017.06.24 |
코틀린(Kotlin)의 함수와 변수! (0) | 2017.06.19 |