Kotlin/Native — apa itu, kompiler ke kode native dan fitur-fiturnya

Penulis: IT Sectr Diterbitkan: 2026-06-05 Waktu membaca: 8 mnt

Kotlin/Native — adalah kompiler kode Kotlin langsung ke kode mesin native, yang bekerja tanpa mesin virtual. Berbeda dengan versi JVM, Kotlin/Native menggunakan backend LLVM untuk menghasilkan file yang dapat dieksekusi untuk iOS, Android NDK, macOS, Windows, Linux dan WebAssembly. Teknologi ini merupakan fondasi Kotlin Multiplatform dan memastikan eksekusi kode bersama di platform di mana JVM tidak tersedia. Menurut JetBrains, 2025, Kotlin/Native mendukung 13 platform target dan memungkinkan penggunaan kembali hingga 90% kode dalam proyek KMM.

Poin utama

  • Kotlin/Native — kompiler yang menerjemahkan kode Kotlin ke kode mesin native tanpa menggunakan JVM.
  • LLVM — backend kompiler yang bertanggung jawab untuk menghasilkan kode mesin untuk setiap platform target.
  • KMM — Kotlin Multiplatform Mobile menggunakan Kotlin/Native untuk mengeksekusi kode bersama di perangkat iOS.
  • Memory Manager — pengumpul sampah otomatis berdasarkan penghitungan referensi tanpa menghentikan thread.
  • Interop — mekanisme interaksi dua arah dengan pustaka native Objective-C, Swift, dan C.

Apa itu Kotlin/Native?

Kotlin/Native — adalah teknologi kompilasi kode Kotlin ke kode mesin native, yang dikembangkan oleh perusahaan JetBrains. Perbedaan utama dari Kotlin/JVM adalah tidak adanya kebutuhan akan mesin virtual — file yang dapat dieksekusi akhir hanya berisi kode mesin dan runtime minimal. Ini memungkinkan menjalankan aplikasi Kotlin pada perangkat dan sistem di mana JVM tidak didukung, termasuk iPhone, Apple Watch, dan sistem tertanam.

Sejarah Kotlin/Native dimulai dari proyek kompiler eksperimental yang pada tahun 2017 diintegrasikan ke dalam cabang utama Kotlin. Pada tahun 2019 di KotlinConf diumumkan dukungan untuk iOS sebagai platform target, yang menjadi titik balik bagi pengembangan mobile. Sejak versi Kotlin 1.9.20, kompiler Kotlin/Native mencapai stabilitas dan disertakan dalam Kotlin Multiplatform secara default.

Fitur utama Kotlin/Native adalah penggunaan representasi perantara bersama IR, yang dikompilasi ke kode mesin untuk setiap platform secara terpisah. Ini memastikan frontend kompilasi terpadu untuk semua backend Kotlin: JVM, JS, dan Native.

Bagaimana kompiler Kotlin/Native bekerja

Kompilasi Kotlin/Native melewati beberapa tahap transformasi. Kode sumber dalam Kotlin pertama-tama diubah menjadi representasi internal, kemudian dioptimalkan dan diteruskan ke backend LLVM untuk menghasilkan kode mesin. Tahap akhir adalah penautan dengan pustaka runtime dan pembuatan file yang dapat dieksekusi atau pustaka dinamis.

Arsitektur mencakup tiga komponen utama: frontend (penguraian dan pemeriksaan tipe), generator IR (pembangunan representasi perantara), dan backend LLVM (pembuatan kode mesin). Skema ini mirip dengan pendekatan yang digunakan dalam kompiler Clang untuk C++ dan Rust.

kotlin
// Kompilasi Kotlin/Native melalui baris perintah
kotlinc-native hello.kt -o hello -opt

// Membangun untuk iOS arm64 melalui Kotlin Multiplatform
./gradlew :shared:linkDebugFrameworkIosArm64

Untuk manajemen memori, Kotlin/Native menggunakan Memory Manager sendiri, berdasarkan penghitungan referensi dengan detektor siklik. Sejak Kotlin 1.7.20, manajer memori baru bekerja secara default dan tidak memerlukan anotasi @ThreadLocal atau @SharedImmutable. Pengumpul sampah bekerja tanpa menghentikan thread, yang sangat penting untuk iOS, di mana sistem dapat secara paksa menutup aplikasi saat thread utama diblokir dalam waktu lama.

Tahap kompilasi Kotlin/Native

Proses kompilasi dibagi menjadi lima tahap: penguraian (analisis kode sumber), analisis semantik (pemeriksaan tipe dan resolusi nama), pembuatan IR (pembangunan representasi perantara), optimasi (penyederhanaan dan penghapusan kode mati), dan pembuatan kode melalui LLVM. Setiap tahap dapat dijalankan secara paralel untuk modul yang berbeda, yang mempercepat pembangunan proyek besar.

TahapDurasiHasil
Penguraian~10% waktuPohon AST kode sumber
Analisis semantik~20% waktuAST yang diketik
Pembuatan IR~15% waktuKotlin IR (Intermediate Representation)
Optimasi~25% waktuIR yang dioptimalkan
Pembuatan kode LLVM~30% waktuKode mesin + file eksekusi

Platform yang didukung Kotlin/Native

Kotlin/Native mendukung 13 platform target, dibagi ke dalam kategori. Untuk pengembangan mobile tersedia iOS (arm64), Android (arm32, arm64, x86_64), dan watchOS. Platform desktop mencakup macOS (x64, arm64), Windows (mingw x64), dan Linux (x64, arm64, arm32). Untuk pengembangan server dan tertanam, tersedia WebAssembly dan Kotlin/Native di LLVM tanpa sistem operasi (standalone). Setiap platform memerlukan framework atau pustaka terpisah pada keluaran.

Platform untuk pengembangan mobile

Untuk iOS, Kotlin/Native menghasilkan framework universal (.framework) yang dapat dihubungkan ke proyek Xcode. Untuk Android NDK, dibuat pustaka native .so yang dapat dipanggil melalui JNI. Platform watchOS didukung sejak Kotlin 1.6.0, dan tvOS sejak versi 1.7.0. Setiap arsitektur memerlukan pembangunan terpisah, tetapi Kotlin Multiplatform mengotomatiskan proses ini melalui plugin Gradle.

Platform desktop dan server

macOS dan Linux digunakan untuk pengembangan aplikasi desktop native di Kotlin menggunakan framework Compose Multiplatform. Platform Windows (MinGW) didukung sejak Kotlin 1.3.70 dan memungkinkan pembuatan aplikasi Windows tanpa instalasi JVM. Untuk pengembangan server, Kotlin/Native dapat digunakan di lingkungan di mana JVM tidak tersedia, misalnya, dalam wadah Docker dengan gambar minimal berbasis scratch atau Alpine.

KategoriPlatformArsitektur
MobileiOSarm64, simulator (x64, arm64)
MobileAndroid NDKarm32, arm64, x86, x86_64
Dapat dipakaiwatchOSarm64, simulator (x64)
DesktopmacOSx64, arm64
DesktopWindowsmingw x64
DesktopLinuxx64, arm64, arm32

Kotlin/Native untuk pengembangan iOS

iOS adalah platform target utama Kotlin/Native dalam konteks KMM. Kompiler membuat framework iOS yang berisi semua kode bersama, yang kemudian dihubungkan ke proyek Xcode. Framework mendukung penautan statis dan dinamis. Kotlin/Native menghasilkan pembungkus Objective-C untuk kelas dan fungsi Kotlin, memastikan integrasi langsung dengan kode Swift dan Objective-C.

Integrasi dengan iOS memerlukan konfigurasi Xcode untuk menghubungkan framework yang dihasilkan. Kotlin Multiplatform mengotomatiskan proses ini dengan tugas embedAndSignAppleFrameworkForXcode yang dijalankan dari Xcode Build Phases. Untuk debugging, Kotlin/Native mendukung titik henti dalam kode modul bersama saat menjalankan aplikasi di simulator iOS.

kotlin
// Kode Kotlin dikompilasi ke framework iOS
package com.itsectr.shared

class GreetingProvider {
    fun createGreeting(): String {
        return "Hello from Kotlin/Native!"
    }

    fun formatVersion(major: Int, minor: Int): String {
        return "v$major.$minor"
    }
}

Objective-C dan Swift Interop

Interop dengan kode iOS bekerja di kedua arah. Kotlin/Native menghasilkan header Objective-C untuk kelas Kotlin yang secara otomatis tersedia dari Swift. Umpan balik disediakan oleh anotasi @ObjCName untuk mengekspor fungsi Kotlin dengan nama Objective-C tertentu. Koleksi Kotlin secara otomatis dikonversi ke NSArray dan NSDictionary, dan korutin Kotlin dibungkus dalam Combine publishers melalui pustaka SKIE. Untuk bekerja dengan framework iOS dari Kotlin, digunakan cinterop — alat untuk menghasilkan pengikatan Kotlin ke header Objective-C.

Contoh kode: konfigurasi dan kompilasi

Untuk memulai bekerja dengan Kotlin/Native, diperlukan konfigurasi build.gradle.kts dengan menentukan plugin Kotlin Multiplatform dan platform target. Mari kita lihat konfigurasi minimal untuk proyek KMM dengan dukungan iOS dan Android.

kotlin
plugins {
    kotlin("multiplatform") version "2.0.21"
}

kotlin {
    iosArm64()
    iosSimulatorArm64()

    sourceSets {
        commonMain.dependencies {
            implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0")
        }
        iosMain.dependencies {
            implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0")
        }
    }
}

Setelah mengkonfigurasi pembangunan, kode yang bergantung pada platform dapat ditambahkan. Kotlin/Native menyediakan akses ke fungsi iOS melalui pembungkus Kotlin. Misalnya, mendapatkan UUID perangkat di iOS memerlukan pemanggilan NSUUID dari Foundation.

kotlin
import platform.Foundation.NSUUID

fun getDeviceId(): String {
    return NSUUID().UUIDString()
}

fun currentTimestampMillis(): Long {
    return (platform.Foundation.NSDate().timeIntervalSince1970 * 1000).toLong()
}

Membangun framework iOS

Untuk menghasilkan framework iOS, digunakan tugas Gradle linkDebugFrameworkIosArm64 atau linkReleaseFrameworkIosArm64 untuk produksi. Setelah pembangunan, framework terletak di build/bin/iosArm64/debugFramework/. Penghubungan ke proyek Xcode dilakukan melalui Pods Podfile atau dengan menambahkan framework di bagian General → Frameworks, Libraries and Embedded Content.

kotlin
// Membangun framework release untuk iOS arm64
./gradlew :shared:linkReleaseFrameworkIosArm64

// Membangun framework universal x86_64 + arm64
./gradlew :shared:linkReleaseFrameworkIosX64 \
    :shared:linkReleaseFrameworkIosArm64

// Buat XCFramework untuk App Store
./gradlew :shared:assembleReleaseXCFramework

Kotlin/Native vs Kotlin/JVM: perbandingan

Kotlin/Native dan Kotlin/JVM berbeda dalam arsitektur, kinerja, dan bidang aplikasi. Kotlin/JVM mengkompilasi kode menjadi bytecode yang dijalankan di JVM, yang memberikan akses ke ekosistem pustaka Java yang sangat besar, tetapi memerlukan mesin virtual yang terinstal. Kotlin/Native menghasilkan file yang dapat dieksekusi tanpa ketergantungan eksternal, tetapi dengan ekosistem pustaka yang lebih terbatas.

Kinerja waktu mulai Kotlin/Native lebih tinggi karena tidak perlu memuat JVM. Menurut tolok ukur JetBrains, aplikasi Hello World di Kotlin/Native dimulai dalam 0,003 detik, sementara Kotlin/JVM membutuhkan 0,5–1 detik untuk memuat mesin virtual. Namun, ukuran file yang dapat dieksekusi Kotlin/Native bisa 2–3 kali lebih besar karena runtime yang disertakan.

KarakteristikKotlin/NativeKotlin/JVM
Platform targetiOS, macOS, Windows, Linux, WebAssembly, embeddedServer, Android, desktop (JVM)
KetergantunganTanpa runtime (mandiri)Memerlukan JVM (JDK/JRE)
Waktu mulai~3 ms~500–1000 ms
EkosistemTerbatas (Kotlin + Interop)Lengkap (Kotlin + Java + Android SDK)
Ukuran biner~1–5 MB (dengan runtime)~100–500 KB (JAR)

Pilihan antara Kotlin/Native dan Kotlin/JVM tergantung pada platform target. Jika proyek ditujukan untuk iOS atau memerlukan konsumsi sumber daya minimal, Kotlin/Native adalah satu-satunya pilihan. Untuk pengembangan Android, Kotlin/JVM tetap menjadi standar, meskipun Kotlin/Native digunakan untuk komponen NDK di mana kinerja native diperlukan. Dalam proyek multi-platform, Kotlin Multiplatform menggabungkan kedua pendekatan: kode bersama dikompilasi melalui Kotlin/Native untuk iOS dan melalui Kotlin/JVM untuk Android.

Pertanyaan yang sering diajukan

Apa perbedaan Kotlin/Native dengan Kotlin/JVM?

Kotlin/Native mengkompilasi kode ke kode mesin native tanpa mesin virtual, sedangkan Kotlin/JVM mengkompilasi ke bytecode yang memerlukan JVM terinstal. Kotlin/Native digunakan untuk iOS, sistem tertanam, dan WebAssembly, Kotlin/JVM untuk Android dan server.

Bisakah Kotlin/Native digunakan tanpa KMM?

Ya, Kotlin/Native dapat digunakan sebagai kompiler mandiri untuk membuat aplikasi konsol, plugin native, atau pustaka untuk platform yang didukung. KMM hanya menyederhanakan organisasi kode multi-platform.

Bagaimana Kotlin/Native mengelola memori di iOS?

Memory Manager Kotlin/Native menggunakan penghitungan referensi dengan detektor siklik otomatis. Sejak Kotlin 1.7.20, pengumpul sampah tidak memerlukan anotasi @ThreadLocal dan bekerja tanpa menghentikan thread utama iOS.

Pustaka iOS apa yang tersedia dari Kotlin/Native?

Melalui cinterop, semua framework iOS tersedia: Foundation, UIKit, CoreData, CoreBluetooth, MapKit, dan ratusan lainnya. JetBrains menyediakan pengikatan siap pakai untuk pustaka iOS standar dalam komposisi Kotlin/Native.

Bagaimana men-debug kode Kotlin/Native di iOS?

Untuk debugging, digunakan Xcode dengan framework Kotlin/Native yang terhubung. Titik henti dalam kode Kotlin berfungsi saat dijalankan di simulator iOS. Untuk perangkat, diperlukan build Debug dan profil pengembang Apple.

Ringkasan

  • Kotlin/Native — kompiler Kotlin ke kode native, fondasi Kotlin Multiplatform Mobile.
  • Backend LLVM memastikan pembuatan kode mesin untuk 13 platform target, termasuk iOS, Android NDK, macOS, dan Windows.
  • Memory Manager dengan penghitungan referensi bekerja tanpa menghentikan thread, yang sangat penting untuk platform mobile.
  • Framework iOS dihasilkan secara otomatis dan dihubungkan ke proyek Xcode melalui embedAndSignAppleFrameworkForXcode.
  • Objective-C dan Swift Interop memastikan integrasi dua arah dengan kode iOS native melalui cinterop dan @ObjCName.
  • Kinerja waktu mulai Kotlin/Native secara signifikan lebih tinggi dari versi JVM — hingga 0,003 detik, bukan 0,5–1 detik.
  • Gunakan Kotlin/Native untuk iOS, sistem tertanam, dan WebAssembly di mana JVM tidak tersedia atau tidak diinginkan.

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga