CS
[Kotlin] 코틀린
바디스
2022. 11. 3. 04:16
코틀린
intellj, pycharm 등의 IDE 툴을 만든 Jetbrains 에서 개발한 언어로 2011년에 발표되었고, 2017년에 구글에서 안드로이드 공식언어로 선택 되었습니다.
코틀린은 자바를 대체할 수 있는 언어로 다양한 프로그래밍이 가능한 멀티 플랫폼 입니다.
- Kotlin/JVM - 자바 가상 머신 상세서 동작하는 앱(자바앱/ 안드로이드앱) 개발
- Kotlin/JS - 자바스크립트에 의해 DB부터 서버, 클라이언트까지 다루는 풀스택 웹 개발
- Kotlin/Native - 안드로이드와 IOS뿐만 아니라 임베디드, IoT 등 앱 개발
즉, 서버, 안드로이드 등 자바가 실행되는 모든 곳에서 사용 할 수 있다.
코틀린 특징
정적 타입 지정 언어
- 컴파일 시 변수의 자료형(Type)이 결정되어 안전 - 자바와 동일
- 자료형(Type)을 명시하지 않아도 자료형 추론 가능 - 컴파일러가 자동으로 변수 타입을 유추, 프로그램 오류↓
- 단, Kotlin/JS는 동적 타입 지원을 위해 dynamic 키워드 제공
Java와 호환됨
- 자바와 100% 호환됨
- 자바에서 제공하는 라이브러리 그대로 사용 가능
Null 안전성
- 널이 가능한 자료형(Nullable Type)과 불가능한 자료형(Non-Null Type)을 구분한다.
- 널값 허용 여부를 컴파일 단계에서 검사하기에 널 포인터로 인한 프로그램 중단도 예방 가능 (자바는 런타임에서 NPE 발생)
Java
@Nullable String strNullable = null;
@NonNull String strNonNull = "";
Java는 @(Annotation)을 사용해서 Nullable과 NonNull을 구분 할 수 있습니다. @Nullable은 null이 들어 올 수 있는 변수고, @NonNull은 null이 될 수 없는 변수입니다. Default는 Nullable입니다.
Kotlin
var strNullable: String? = null
var strNonNull: String = ""
Kotlin은 ?(Optional)을 사용해서 Nullable과 NonNull을 구분 할 수 있습니다. ?(Optional)을 사용하기 위해서는 변수뒤에 자료형을 꼭 붙여주셔야 하고 ?을 붙이게 되면 null이 들어올 수 있고, 붙이지 않으면 null이 될 수 없습니다. Default는 NonNull 입니다.
함수 타입에 대한 지원
- 코틀린은 함수형 프로그래밍을 지원한다. (Java 8 부터 지원 시작)
- 함수를 작성해서 변수에 저장할 수 있고, 다른 함수에 전달/반환 할 수도 있다.
var sum: (Int, Int) -> Int = { a, b -> a + b }
// 컴파일러가 함수 타입을 추론할 수 있으므로 다음과 같이 쓸 수 있습니다.
var sum = { a: Int, b: Int -> a + b }
var sum = fun(a: Int, b: Int): Int = a + b
var sum: Int.(Int) -> Int = { x -> plus(x) }
자바와 코틀린의 차이
성능
코드 비교
비교 | 자바 | 코틀린 |
성능 | 컴파일 - .class - JVM | 컴파일 - .class - JVM |
개발 편의성 | 코드양이 많다 | 자바보다 간편하다 |
활용 | 앱, 서버 등 현재 자바가 많은 부분에서 활용 되었다. | 코틀린으로 대체 가능 |
참고소스 | 참고 자료 많은 | 구글 2017 부터 활성화 |
라이센스 | Oracle JDK 11 유료 | 무료 라이센스 |