코틀린의 탄생 배경
목표
풀스택 웹 개발, Android와 iOS 앱 개발, 그리고 임베디드, IoT 등 모든 개발을 다양한 플랫폼에서 가능하도록 하자!
특징
- IDE로 유명한 JetBrains에서 개발하고 보급
- 코드가 간결하고 다재다능하며 호환성이 높다.
- 문장 끝에 세미콜론은 옵션이다.
- 안드로이드 스튜디오에서 안드로이드 공식 언어로 추가
- 변수는 Nullable과 NotNull로 나뉘는데, 변수 선언시 '?'를 붙여서 Nullable로 만들 수 있다.
다양한 플랫폼
사용 가능한 플랫폼
- Kotlin/JVM: JVM (Java Virtual Machine) 상에서 동작하는 앱을 만들 수 있다.
- Kotlin/JS: 자바스크립트에 의해 브라우저에서 동작하는 앱을 만들 수 있다.
- Kotlin/Native: LLVM (Low Level Virtual Machine) 기반의 네이티브 컴파일을 지원해서 여러 타깃의 앱을 만들 수 있다. 즉, ARM, x86 프로세서 등등 하드웨어 종류에 상관 없이 멀티 플랫폼 상에서 동작하는 앱을 만들 수 있다.
Kotlin/Native에서의 타깃
- iOS (arm32, arm64, emulator x86_64)
- MacOS (x86_64)
- Android (arm32, arm64)
- Windows (mingw x86_64)
- Linux (x86_64, arm32, MIPS, MIPS little endian)
- WebAssembly (wasm32)
코틀린의 장점
- 자료형에 대한 오류를 미리 잡을 수 있는 정적 언어 (Statically typed)정적 타입: 컴파일러가 컴파일 타임에 데이터의 타입을 검증해준다.
- 널 포인터로 인한 프로그램의 중단을 예방할 수 있다. 보통 개발자들은 코틀린의 이러한 특징을 'NPE에서 자유롭다'고 말한다.NPE은 Null Pointer Exception을 줄여서 말한 것
- 데이터형 선언 시 널이 가능한 형식과 불가능한 형식을 구분해서 지원
- 자바와 완벽하게 상호 운영이 가능하다. 왜냐하면 자바와 코틀린은 모두 바이트 코드로 컴파일 되며, JVM의 인터프리터는 이 코드들이 여러 플랫폼에서 동작하도록 만들어주기 때문이다.
- 아주 간결하고 효율적
- 함수형 프로그래밍과 객체 지향 프로그래밍 모두 가능 (멀티 패러다임 언어)
- 세미콜론을 생략할 수 있다.