코틀린이란?
Kotlin은 2011년 7월 JetBrains이 발표한 프로그래밍 언어로, JVM에서 동작합니다.
주로 Android application 개발에 이용되며,
최근 빌드 내용을 보면 kotlin multiplatform으로 ios application도 개발할 수 있어 보입니다.
철학
실용성
다른 프로그래밍 언어에서 성공적으로 검증된 해법과 기능에 의존합니다.
특정 프로그래밍 패러다임이나 스타일을 강제하지 않습니다.
생상성 향상을 위해 '좋은 도구'를 강조합니다.
간결성
Getter, Setter와같이 번거로운 코드들은 묵시적으로 제공합니다.
길거나 반복되는 코드를 라이브러리 함수로 대체할 수 있습니다.
최소화와 간결성은 다르므로, 연산자 오버로딩은 지원하되 신규연산자는 정의하진 못합니다.
안정성
NPE(Null Point Exception)과 CCE(Class Cast Exception)을 방지/회피할 수 있습니다.
정적타입 지정언로서 application 타입의 안정성을 보장합니다.
상호운용성
기존의 Java 라이브러리를 그대로 사용가능합니다.
자체 컬렉션 라이브러리를 제공하는 대신, java 라이브러리에 의존합니다. (편하게 사용하도록 기능은 추가했습니다)
kotlin 소스와 Java 소스가 섞여있는 다중언어 프로젝트를 완벽히 지원합니다.
함수형 프로그래밍 언어
함수도 일급객체로 처리되어 일반값처럼 변수에 저장하고, 매개변수로 전달하거나 반환할 수 있습니다.
또한 만들어지고 난 이후엔 내부상태가 변화하지 않는 불변객를 사용해 프로그램을 작성하는 불변성과
부수효과가 없는 순수함수를 사용합니다.
장점
java8부터 지원되는 Lambda expression, Functional interface, Optional등의 기능을 android Studio에서도 사용할 수 있습니다.
기존 Java코드와 완벽히 호환됩니다.함수형 프로그래밍 언어의 특징덕분에 테스트가 용이하교 Thread Safe합니다.
java와의 성능차이?
JVM에서 구동되기 때문에, 효율은 기존 java코드에 뒤지지 않습니다.kotlin의 런타임시스템도 용량이 적기에 컴파일 후 패키징한 application의 용량도 java와 큰 차이가 없습니다.객체지향 언어인 java의 특성상, 객체생성으로 인한 가비지 컬렉션은 큰 골칫거리였습니다. 그러나,kotlin은 lamda function을 사용해 인라이닝 할 수 있으므, 가비지컬렉션을 효과적으로 제어할 수 있습니다.
특징
정적타입 지정언어
모든 프로그래밍 구성요소의 타입을 컴파일 시점에 알 수 있고, 필드나 메서드 사용시마다 컴파일러가 검증을 해줄 수 있습니다.그렇기 때문에 성능, 신뢰성, 요지보수에 용이하며 IDE의 코드 자동완성 기능을 동적타입 지정언에 비해 더 강력히 지원 받을 수 있습니다.
타입추론
모든 변수의 타입을 명시해 줄 필요가 없습니다. 컴파일러가 문맥을 통해 타입을 추론하므로, 개발자는 타입 선언을 생략할 수 있습니다.
Nullable
Optional처럼 null이 가능한 객체와 아닌 객체를 구분해서 명시할 수 있고, null객체의 제어를 가능케하는 기능입니다.이로써 NPE(Null Point Exception)를 예방하거나 통제할 수 있게 됩니다.신기하게도 java의 optional보단 swift의 optional과는 더 닮은게 특징이라면 특징입니다.(if let -> ?.let)
'Language > Kotlin' 카테고리의 다른 글
lateinit var와 lazy의 차이 (0) | 2021.10.17 |
---|---|
[Kotlin] varag (0) | 2021.10.17 |
Kotlin의 옵셔널 처리 (0) | 2021.07.11 |