Kotlin/Native 개요
Kotlin/Native 개요
Kotlin/Native는 가상 머신 없이도 실행할 수 있는 네이티브 바이너리로 코틀린 코드를 컴파일해 주는 기술이에요. 여기에는 코틀린 컴파일러의 LLVM 기반 백엔드와 코틀린 표준 라이브러리의 네이티브 구현이 모두 포함돼요.
출처: Kotlin/Native
본문
왜 Kotlin/Native일까요?
Kotlin/Native는 주로 가상 머신을 쓰기 어렵거나 쓸 수 없는 플랫폼을 위해 만들어졌어요. 임베디드 기기나 iOS 같은 곳이 대표적이죠. 추가 런타임이나 가상 머신이 필요 없는, 완전히 독립된 프로그램을 만들어야 할 때 딱 맞는 기술이에요.
이미 C, C++, Swift, Objective-C 등 다른 언어로 작성된 프로젝트에 컴파일된 코틀린 코드를 넣기도 쉬워요. 반대로 기존 네이티브 코드나 정적·동적 C 라이브러리, Swift/Objective-C 프레임워크, 그래픽 엔진 같은 것들도 Kotlin/Native에서 바로 사용할 수 있어요.
타깃 플랫폼
Kotlin/Native는 다음 플랫폼을 지원해요.
- Linux
- Windows (MinGW 경유)
- Android NDK
- macOS, iOS, tvOS, watchOS를 위한 Apple 타깃
지원되는 타깃과 호스트의 전체 목록은 별도 문서에서 확인할 수 있어요.
상호 운용성
Kotlin/Native는 운영체제별 네이티브 프로그래밍 언어와 양방향 상호 운용성을 지원해요. 컴파일러는 여러 플랫폼용 실행 파일, 정적·동적 C 라이브러리, Swift/Objective-C 프레임워크를 만들어 낼 수 있어요.
C와의 상호 운용성
Kotlin/Native는 C와의 상호 운용성을 제공해요. 기존 C 라이브러리를 코틀린 코드에서 바로 사용할 수 있죠.
더 자세히 배우려면 다음 튜토리얼을 따라 해 보세요.
- C/C++ 프로젝트용 C 헤더가 있는 동적 라이브러리 만들기
- C 타입이 코틀린에서 어떻게 매핑되는지 배우기
- C interop과 libcurl을 사용해 네이티브 HTTP 클라이언트 만들기
Swift/Objective-C와의 상호 운용성
Kotlin/Native는 Objective-C를 거쳐 Swift와의 상호 운용성을 제공해요. macOS와 iOS에서 코틀린 코드를 Swift/Objective-C 애플리케이션에서 바로 사용할 수 있어요.
더 자세히 배우려면 "Kotlin/Native를 Apple 프레임워크로 사용하기" 튜토리얼을 따라 해 보세요.
플랫폼 간 코드 공유
Kotlin/Native에는 여러 프로젝트 사이에서 코틀린 코드를 공유하는 데 도움이 되는 사전 빌드된 플랫폼 라이브러리 묶음이 들어 있어요. POSIX, gzip, OpenGL, Metal, Foundation을 비롯해 널리 쓰이는 라이브러리와 Apple 프레임워크들이 미리 가져와 컴파일러 패키지에 Kotlin/Native 라이브러리로 포함돼 있죠.
Kotlin/Native는 Android, iOS, JVM, 웹, 네이티브 등 여러 플랫폼에서 공통 코드를 공유하도록 돕는 Kotlin Multiplatform 기술의 일부예요. Multiplatform 라이브러리는 공통 코틀린 코드에 필요한 API를 제공하고, 프로젝트의 공유 부분을 한곳에서 코틀린으로 작성할 수 있게 해 줘요.
메모리 매니저
Kotlin/Native는 JVM이나 Go와 비슷한 자동 메모리 매니저를 사용해요. 자체적인 추적 가비지 컬렉터(tracing garbage collector)가 있는데, 이는 Swift/Objective-C의 ARC와도 통합돼 있어요.
메모리 사용량은 커스텀 메모리 할당기(memory allocator)가 제어해요. 메모리 사용을 최적화하고 메모리 할당이 갑자기 치솟는 것을 막는 데 도움을 주죠.
더 알아보기
- Kotlin/Native 시작하기
- 지원되는 타깃과 호스트 목록
- C 상호 운용성 튜토리얼 모음
- Swift/Objective-C 상호 운용성 튜토리얼