Kotlin/Native — bu nima, native kod kompilyatori va xususiyatlari

Muallif: IT Sectr Nashr etilgan: 2026-06-05 O'qish vaqti: 8 daq

Kotlin/Native — bu Kotlin kodini to'g'ridan-to'g'ri native mashina kodiga kompilyatsiya qiluvchi, virtual mashinasiz ishlaydigan kompilyatordir. JVM versiyasidan farqli o'laroq, Kotlin/Native iOS, Android NDK, macOS, Windows, Linux va WebAssembly uchun bajariladigan fayllarni yaratishda LLVM backendidan foydalanadi. Texnologiya Kotlin Multiplatform asosini tashkil etadi va JVM mavjud bo'lmagan platformalarda umumiy kodning bajarilishini ta'minlaydi. JetBrains, 2025 ma'lumotiga ko'ra, Kotlin/Native 13 ta maqsadli platformani qo'llab-quvvatlaydi va KMM loyihalarida kodning 90% gacha qayta ishlatilishiga imkon beradi.

Asosiy fikrlar

  • Kotlin/Native — Kotlin kodini JVM ishlatmasdan native mashina kodiga o'giradigan kompilyator.
  • LLVM — har bir maqsadli platforma uchun mashina kodini yaratishga mas'ul kompilyator backendidir.
  • KMM — Kotlin Multiplatform Mobile iOS qurilmalarida umumiy kodni bajarish uchun Kotlin/Native dan foydalanadi.
  • Memory Manager — oqimlarni to'xtatmasdan havolalarni hisoblashga asoslangan avtomatik axlat yig'uvchi.
  • Interop — Objective-C, Swift va C native kutubxonalari bilan ikki tomonlama o'zaro ta'sir mexanizmi.

Kotlin/Native nima?

Kotlin/Native — bu JetBrains kompaniyasi tomonidan ishlab chiqilgan Kotlin kodini native mashina kodiga kompilyatsiya qilish texnologiyasidir. Kotlin/JVM dan asosiy farqi virtual mashinaga ehtiyoj yo'qligidadir — tayyor bajariladigan fayl faqat mashina kodi va minimal ish vaqti muhitini o'z ichiga oladi. Bu Kotlin ilovalarini JVM qo'llab-quvvatlanmaydigan qurilmalar va tizimlarda, jumladan iPhone, Apple Watch va o'rnatilgan tizimlarda ishga tushirish imkonini beradi.

Kotlin/Native tarixi 2017-yilda Kotlinning asosiy tarmog'iga integratsiya qilingan eksperimental kompilyator loyihasidan boshlandi. 2019-yilda KotlinConf da iOS maqsadli platforma sifatida qo'llab-quvvatlanishi e'lon qilindi, bu mobil ishlanma uchun burilish nuqtasi bo'ldi. Kotlin 1.9.20 versiyasidan boshlab Kotlin/Native kompilyatori barqarorlikka erishdi va Kotlin Multiplatform tarkibiga sukut bo'yicha kiritildi.

Kotlin/Native ning asosiy xususiyati har bir platforma uchun alohida mashina kodiga kompilyatsiya qilinadigan umumiy oraliq vakillik IR dan foydalanishdir. Bu Kotlinning barcha backendlari: JVM, JS va Native uchun yagona kompilyatsiya frontendini ta'minlaydi.

Kotlin/Native kompilyatori qanday ishlaydi

Kompilyatsiya Kotlin/Native bir necha transformatsiya bosqichlaridan o'tadi. Kotlin dastlabki kodi avval ichki vakillikka aylantiriladi, so'ngra optimallashtiriladi va mashina kodini yaratish uchun LLVM backendiga uzatiladi. Yakuniy bosqich — ish vaqti kutubxonalari bilan bog'lash va bajariladigan fayl yoki dinamik kutubxona yaratishdir.

Arxitektura uchta asosiy komponentni o'z ichiga oladi: frontend (tahlil va tur tekshiruvi), IR generatori (oraliq vakillikni qurish) va LLVM backend (mashina kodini yaratish). Bu sxema C++ va Rust uchun Clang kompilyatorlarida qo'llaniladigan yondashuvga o'xshaydi.

kotlin
// Kotlin/Native kompilyatsiyasi buyruq qatori orqali
kotlinc-native hello.kt -o hello -opt

// iOS arm64 uchun Kotlin Multiplatform orqali qurish
./gradlew :shared:linkDebugFrameworkIosArm64

Xotirani boshqarish uchun Kotlin/Native tsiklik detektor bilan havolalarni hisoblashga asoslangan o'zining Memory Manager idan foydalanadi. Kotlin 1.7.20 dan boshlab yangi xotira boshqaruvchisi sukut bo'yicha ishlaydi va @ThreadLocal yoki @SharedImmutable annotatsiyalarini talab qilmaydi. Axlat yig'uvchi oqimlarni to'xtatmasdan ishlaydi, bu iOS uchun juda muhim, chunki tizim asosiy oqimning uzoq bloklanishida ilovani majburiy yopishi mumkin.

Kotlin/Native kompilyatsiya bosqichlari

Kompilyatsiya jarayoni besh bosqichga bo'linadi: tahlil (dastlabki kodni tahlil qilish), semantik analiz (tur tekshiruvi va nomlarni hal qilish), IR yaratish (oraliq vakillikni qurish), optimallashtirish (soddalashtirish va o'lik kodni olib tashlash) va kod generatsiyasi LLVM orqali. Har bir bosqich turli modullar uchun parallel bajarilishi mumkin, bu katta loyihalarni qurishni tezlashtiradi.

BosqichDavomiylikNatija
Tahlil~10% vaqtDastlabki kodning AST daraxti
Semantik analiz~20% vaqtTiplashtirilgan AST
IR yaratish~15% vaqtKotlin IR (Intermediate Representation)
Optimallashtirish~25% vaqtOptimallashtirilgan IR
LLVM kod generatsiyasi~30% vaqtMashina kodi + bajariladigan fayl

Kotlin/Native qo'llab-quvvatlanadigan platformalar

Kotlin/Native kategorialarga bo'lingan 13 ta maqsadli platformani qo'llab-quvvatlaydi. Mobil ishlanma uchun iOS (arm64), Android (arm32, arm64, x86_64) va watchOS mavjud. Desktop platformalarga macOS (x64, arm64), Windows (mingw x64) va Linux (x64, arm64, arm32) kiradi. Server va o'rnatilgan ishlanma uchun WebAssembly va operatsion tizimsiz LLVMda Kotlin/Native (standalone) mavjud. Har bir platforma chiqishda alohida framework yoki kutubxonani talab qiladi.

Mobil ishlanma uchun platformalar

iOS uchun Kotlin/Native Xcode loyihasiga ulanishi mumkin bo'lgan universal framework (.framework) yaratadi. Android NDK uchun JNI orqali chaqirilishi mumkin bo'lgan native .so kutubxonalari yaratiladi. watchOS platformasi Kotlin 1.6.0 dan, tvOS esa 1.7.0 versiyasidan qo'llab-quvvatlanadi. Har bir arxitektura alohida qurilishni talab qiladi, ammo Kotlin Multiplatform bu jarayonni Gradle plagini orqali avtomatlashtiradi.

Desktop va server platformalari

macOS va Linux Compose Multiplatform frameworkidan foydalanib Kotlinda native desktop ilovalarini yaratish uchun ishlatiladi. Windows (MinGW) platformasi Kotlin 1.3.70 dan qo'llab-quvvatlanadi va JVM o'rnatmasdan Windows ilovalarini yaratishga imkon beradi. Server ishlanmasi uchun Kotlin/Native JVM mavjud bo'lmagan muhitlarda, masalan, scratch yoki Alpine asosidagi minimal tasvirli Docker konteynerlarida ishlatilishi mumkin.

KategoriyaPlatformaArxitektura
MobiliOSarm64, simulyator (x64, arm64)
MobilAndroid NDKarm32, arm64, x86, x86_64
TaqiladiganwatchOSarm64, simulyator (x64)
DesktopmacOSx64, arm64
DesktopWindowsmingw x64
DesktopLinuxx64, arm64, arm32

iOS ishlanmasi uchun Kotlin/Native

iOS KMM kontekstida Kotlin/Native ning asosiy maqsadli platformasidir. Kompilyator barcha umumiy kodni o'z ichiga olgan iOS frameworkini yaratadi, keyin esa Xcode loyihasiga ulanadi. Framework ham statik, ham dinamik ulanishni qo'llab-quvvatlaydi. Kotlin/Native Kotlin sinflari va funktsiyalari uchun Objective-C o'ramlarini yaratadi, Swift va Objective-C kodi bilan to'g'ridan-to'g'ri integratsiyani ta'minlaydi.

iOS bilan integratsiya yaratilgan frameworkni ulash uchun Xcode sozlamasini talab qiladi. Kotlin Multiplatform bu jarayonni Xcode Build Phases dan ishga tushiriladigan embedAndSignAppleFrameworkForXcode vazifasi bilan avtomatlashtiradi. Nosozliklarni tuzatish uchun Kotlin/Native iOS simulyatorida ilova ishga tushirilganda umumiy modul kodidagi to'xtash nuqtalarini qo'llab-quvvatlaydi.

kotlin
// iOS frameworkiga kompilyatsiya qilingan Kotlin kodi
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 va Swift Interop

Interop iOS kodi bilan ikki yo'nalishda ishlaydi. Kotlin/Native Kotlin sinflari uchun Objective-C sarlavhalarini yaratadi, ular avtomatik ravishda Swift dan mavjud bo'ladi. Teskari aloqa Kotlin funktsiyalarini belgilangan Objective-C nomi bilan eksport qilish uchun @ObjCName annotatsiyasi bilan ta'minlanadi. Kotlin to'plamlari avtomatik ravishda NSArray va NSDictionary ga aylantiriladi, Kotlin korutinlari esa SKIE kutubxonasi orqali Combine publisher larga o'raladi. Kotlin dan iOS frameworklari bilan ishlash uchun cinterop — Objective-C sarlavhalariga Kotlin bog'lanishlarini yaratish vositasi ishlatiladi.

Kod misollari: sozlash va kompilyatsiya

Kotlin/Native bilan ishlashni boshlash uchun Kotlin Multiplatform plagini va maqsadli platformalarni ko'rsatadigan build.gradle.kts sozlamasi talab qilinadi. iOS va Android qo'llab-quvvatlashi bilan KMM loyihasi uchun minimal konfiguratsiyani ko'rib chiqamiz.

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")
        }
    }
}

Qurilish sozlamasidan so'ng platformaga bog'liq kod qo'shilishi mumkin. Kotlin/Native Kotlin o'ramlari orqali iOS funktsiyalariga kirishni ta'minlaydi. Masalan, iOS da qurilma UUID sini olish Foundation dan NSUUID chaqiruvini talab qiladi.

kotlin
import platform.Foundation.NSUUID

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

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

iOS frameworkini qurish

iOS frameworkini yaratish uchun linkDebugFrameworkIosArm64 yoki ishlab chiqarish uchun linkReleaseFrameworkIosArm64 Gradle vazifasi ishlatiladi. Qurilishdan so'ng framework build/bin/iosArm64/debugFramework/ manzilida joylashadi. Xcode loyihasiga ulanish Pods Podfile orqali yoki frameworkni General → Frameworks, Libraries and Embedded Content bo'limiga qo'shish orqali amalga oshiriladi.

kotlin
// iOS arm64 uchun release frameworkini qurish
./gradlew :shared:linkReleaseFrameworkIosArm64

// Universal framework x86_64 + arm64 qurish
./gradlew :shared:linkReleaseFrameworkIosX64 \
    :shared:linkReleaseFrameworkIosArm64

// App Store uchun XCFramework yaratish
./gradlew :shared:assembleReleaseXCFramework

Kotlin/Native vs Kotlin/JVM: taqqoslash

Kotlin/Native va Kotlin/JVM arxitektura, samaradorlik va qo'llanish sohasiga ko'ra farqlanadi. Kotlin/JVM kodni JVM da bajariladigan bayt kodiga kompilyatsiya qiladi, bu katta Java kutubxona ekotizimiga kirishni beradi, lekin o'rnatilgan virtual mashinani talab qiladi. Kotlin/Native tashqi bog'liqliklarsiz bajariladigan fayl yaratadi, ammo cheklangan kutubxona ekotizimiga ega.

Kotlin/Native ning ishga tushish vaqti yuqoriroq, chunki JVM ni yuklash talab qilinmaydi. JetBrains benchmarklariga ko'ra, Kotlin/Native da Hello World ilovasi 0.003 soniyada ishga tushadi, Kotlin/JVM esa virtual mashinani yuklash uchun 0.5–1 soniya talab qiladi. Biroq Kotlin/Native ning bajariladigan fayl hajmi kiritilgan ish vaqti muhiti tufayli 2–3 marta katta bo'lishi mumkin.

XususiyatKotlin/NativeKotlin/JVM
Maqsadli platformalariOS, macOS, Windows, Linux, WebAssembly, embeddedServerlar, Android, desktop (JVM)
Bog'liqliklarIsh vaqti muhitisiz (mustaqil)JVM talab qilinadi (JDK/JRE)
Ishga tushish vaqti~3 ms~500–1000 ms
EkotizimCheklangan (Kotlin + Interop)To'liq (Kotlin + Java + Android SDK)
Binar hajmi~1–5 MB (ish vaqti bilan)~100–500 KB (JAR)

Kotlin/Native va Kotlin/JVM o'rtasidagi tanlov maqsadli platformaga bog'liq. Agar loyiha iOS ga yo'naltirilgan bo'lsa yoki minimal resurs iste'molini talab qilsa, Kotlin/Native yagona tanlovdir. Android ishlanmasi uchun Kotlin/JVM standart bo'lib qoladi, garchi Kotlin/Native native samaradorlik talab qiladigan NDK komponentlari uchun ishlatiladi. Ko'p platformali loyihalarda Kotlin Multiplatform ikkala yondashuvni birlashtiradi: umumiy kod iOS uchun Kotlin/Native va Android uchun Kotlin/JVM orqali kompilyatsiya qilinadi.

Tez-tez so'raladigan savollar

Kotlin/Native Kotlin/JVM dan qanday farq qiladi?

Kotlin/Native kodni virtual mashinasiz native mashina kodiga kompilyatsiya qiladi, Kotlin/JVM esa o'rnatilgan JVM talab qiladigan bayt kodiga kompilyatsiya qiladi. Kotlin/Native iOS, o'rnatilgan tizimlar va WebAssembly uchun, Kotlin/JVM Android va serverlar uchun ishlatiladi.

Kotlin/Native ni KMM siz ishlatish mumkinmi?

Ha, Kotlin/Native konsol ilovalari, native plaginlar yoki istalgan qo'llab-quvvatlanadigan platforma uchun kutubxonalar yaratishda mustaqil kompilyator sifatida ishlatilishi mumkin. KMM faqat ko'p platformali kodni tashkil qilishni soddalashtiradi.

Kotlin/Native iOS da xotirani qanday boshqaradi?

Memory Manager Kotlin/Native avtomatik tsiklik detektor bilan havolalarni hisoblashdan foydalanadi. Kotlin 1.7.20 dan boshlab axlat yig'uvchi @ThreadLocal annotatsiyalarini talab qilmaydi va iOS asosiy oqimini to'xtatmasdan ishlaydi.

Kotlin/Native dan qaysi iOS kutubxonalari mavjud?

cinterop orqali barcha iOS frameworklari mavjud: Foundation, UIKit, CoreData, CoreBluetooth, MapKit va yuzlab boshqalar. JetBrains Kotlin/Native tarkibida standart iOS kutubxonalari uchun tayyor bog'lanishlarni taqdim etadi.

iOS da Kotlin/Native kodini qanday tuzatish mumkin?

Nosozliklarni tuzatish uchun ulangan Kotlin/Native frameworki bilan Xcode ishlatiladi. Kotlin kodidagi to'xtash nuqtalari iOS simulyatorida ishga tushirilganda ishlaydi. Qurilma uchun Debug qurilishi va Apple ishlab chiqaruvchi profili talab qilinadi.

Xulosa

  • Kotlin/Native — Kotlin ni native kodga kompilyatsiya qiluvchi, Kotlin Multiplatform Mobile asosi.
  • LLVM backend iOS, Android NDK, macOS va Windows ni o'z ichiga olgan 13 ta maqsadli platforma uchun mashina kodi yaratilishini ta'minlaydi.
  • Memory Manager havolalarni hisoblash bilan oqimlarni to'xtatmasdan ishlaydi, bu mobil platformalar uchun juda muhim.
  • iOS frameworki avtomatik yaratiladi va embedAndSignAppleFrameworkForXcode orqali Xcode loyihasiga ulanadi.
  • Objective-C va Swift Interop cinterop va @ObjCName orqali native iOS kodi bilan ikki tomonlama integratsiyani ta'minlaydi.
  • Samaradorlik Kotlin/Native ning ishga tushish vaqti JVM versiyasidan sezilarli darajada yuqori — 0.5–1 soniya o'rniga 0.003 soniya.
  • Kotlin/Native ni JVM mavjud bo'lmagan yoki istalmagan iOS, o'rnatilgan tizimlar va WebAssembly uchun ishlating.

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing