Kotlin은 Java 언어와 완벽하게 호환 되며 Java로 작성된 프로젝트에서 쉽게 Kotlin 소스 코드가 추가 될 수 있습니다.
또한 Java 코드를 Kotlin 코드로 변환하는 것도 가능합니다.
Kotlin은 Java가 사용되고 있는 모든 개발 환경에서 더 간결하고 생산적이며 안정적인 개발을 위한 대체 언어입니다.
모든 Kotlin 언어와 컴파일러, 라이브러리 및 관련 도구는 오픈 소스로 제공되며 무료로 이용 할 수 있는 Apache License 2.0을 따릅니다.
Kotlin과 관련된 최신 개발 내용은 github: jetbranins/kotlin에서 공유됩니다.
간결한 문법 & Java 호환성
Java에서 코드 라인의 마지막을 의미하는 세미콜론(;)이 없습니다.
객체를 생성하기 위한 new 키워드 없이도 객체를 생성 할 수 있으며 타입 추론(Type interface)을 지원하기 때문에 일반적인 경우 타입을 명시 할 필요가 없습니다.
Kotlin은 Java와 100% 호환됩니다.
Java의 기존 라이브러리를 Kotlin에서도 사용 할 수 있으며 동시에 Java의 표준 라이브러리에 의존합니다.
타입 추론(Type interface)
Java와 달리 모든 변수의 타입을 직접 명시하지 않아도 됩니다.
대부분의 경우 Kotlin 컴파일러가 문맥으로 부터 변수의 타입을 유추 할 수 있기 때문입니다.
// int
var a = 123;
// double: 7.5 X 10^6 = 7500000.0
var b = 7.5e6
Null 안정성
Java와 달리 Nullable 타입 ? 키워드 등을 지원함으로써 Null 허용 여부를 판단 할 수 있습니다.
// a is nullable type
var a: String? = "abc"
a = null
// b is not nullable type
var b: String = "abc"
// compile error
b = null
Java 또는 다른 언어에서 Nullable에 대한 검사 코드는 Runtime에 NullPointerException을 발생시킵니다.
Kotlin이 제공하는 Nullable type은 컴파일 단계에서 NullPointerException을 일으키기 때문에 더 안정적입니다.
불변(Immutable) 객체
Java에서는 타입을 명시하여 객체를 생성하지만, Kotlin은 타입 추론이 가능하여 val 또는 var을 사용합니다.
Java에서 Immutable 객체를 생성하려면 타입 앞에 final 키워드를 사용합니다.
// mutable
String a = "abc";
a = "def";
// immutable
final String b = "def";
// compile error
b = "abc";
반면 Kotlin에서는 Immutable 객체를 생성하려면 val 키워드를 사용합니다.
// mutable
var a = "abc"
a = "def"
// immutable
val b = "def"
// compile error
b = "abc"
Kotlin의 Immutablility는 단순 자료형의 선언 뿐만 아니라 Collection 등에서도 제공됩니다.
// mutable
MutableList<String> = mutableListOf("foo","bar","baz")
// immutable
List<String> = listOf("foo","bar","baz")
람다(Lambda) 표현식
Kotlin은 일급 객체(First-class)를 지원하여 람다 표현식을 변수에 저장 할 수 있습니다.
val test: () -> Unit = { println("test") }
또한 동일한 입력 값에 동일한 출력 값을 보장하며 입력된 객체의 상태를 변화시키지 않는 순수 함수(Pure function)를 제공합니다.
fun getSum(a: Int, b: Int) = a + b
정리 및 복습
- Kotlin은
Java 언어와 완벽하게 호환됩니다. - Java의 라이브러리를 Kotlin에서도 사용 할 수 있으며 Java의 표준 라이브러리에 의존합니다.
타입 추론(Type interface)으로 인해 변수의 타입을 직접 명시하지 않더라도 타입을 추론합니다.- Nullable 타입을 지원하여
컴파일 시간에 NullPointerException을 발생시킵니다. 가변(Mutable)객체 저장을 위해var키워드를 사용하고불변(Immutable)객체 저장을 위해val키워드를 사용합니다.
'Kotlin' 카테고리의 다른 글
Kotlin 도큐먼트: 클래스 상속 (0) | 2023.11.27 |
---|---|
Kotlin 도큐먼트: 클래스 선언하고 객체 생성하기 (0) | 2023.11.27 |
Kotlin 도큐먼트: Numbers 데이터 타입 (0) | 2023.11.24 |
Kotlin 도큐먼트: 기본 문법 살펴보기 (0) | 2023.11.24 |
IntelliJ IDEA에서 Kotlin 시작 (0) | 2023.11.24 |