Kotlin/Native — bu nədir, nativ kod kompilyatoru və xüsusiyyətləri

Müəllif: IT Sectr Dərc olunub: 2026-06-05 Oxuma vaxtı: 8 dəq

Kotlin/Native — bu, Kotlin kodunu birbaşa nativ maşın koduna çevirən, virtual maşın olmadan işləyən kompilyatordur. JVM versiyasından fərqli olaraq, Kotlin/Native iOS, Android NDK, macOS, Windows, Linux və WebAssembly üçün icra olunan fayllar yaratmaq üçün LLVM backendindən istifadə edir. Texnologiya Kotlin Multiplatform-un təməlini təşkil edir və JVM-in mövcud olmadığı platformalarda ümumi kodun icrasını təmin edir. JetBrains, 2025 məlumatına görə, Kotlin/Native 13 hədəf platformanı dəstəkləyir və KMM layihələrində kodun 90%-ə qədər təkrar istifadəsinə imkan verir.

Əsas məqamlar

  • Kotlin/Native — Kotlin kodunu JVM istifadə etmədən nativ maşın koduna çevirən kompilyator.
  • LLVM — hər bir hədəf platforma üçün maşın kodu yaradan kompilyator backendidir.
  • KMM — Kotlin Multiplatform Mobile iOS cihazlarında ümumi kodu icra etmək üçün Kotlin/Native istifadə edir.
  • Memory Manager — ipləri dayandırmadan referans sayına əsaslanan avtomatik zibil toplayıcı.
  • Interop — Objective-C, Swift və C nativ kitabxanaları ilə ikitərəfli qarşılıqlı əlaqə mexanizmi.

Kotlin/Native nədir?

Kotlin/Native — bu, JetBrains şirkəti tərəfindən hazırlanmış Kotlin kodunu nativ maşın koduna çevirmə texnologiyasıdır. Kotlin/JVM-dən əsas fərqi virtual maşına ehtiyacın olmamasıdır — hazır icra olunan fayl yalnız maşın kodu və minimal iş vaxtı mühitini ehtiva edir. Bu, Kotlin tətbiqlərini JVM-in dəstəklənmədiyi cihazlarda və sistemlərdə, o cümlədən iPhone, Apple Watch və quraşdırılmış sistemlərdə işə salmağa imkan verir.

Kotlin/Native-in tarixi 2017-ci ildə Kotlin-in əsas qoluna inteqrasiya olunmuş eksperimental kompilyator layihəsi ilə başlamışdır. 2019-cu ildə KotlinConf-da iOS-un hədəf platforma kimi dəstəyi elan edilmişdir ki, bu da mobil inkişaf üçün dönüş nöqtəsi oldu. Kotlin 1.9.20 versiyasından etibarən Kotlin/Native kompilyatoru sabitliyə nail olmuş və Kotlin Multiplatform tərkibinə defolt olaraq daxil edilmişdir.

Kotlin/Native-in əsas xüsusiyyəti hər bir platforma üçün ayrıca maşın koduna çevrilən ümumi aralıq təmsil IR-dən istifadə etməsidir. Bu, Kotlin-in bütün backendləri: JVM, JS və Native üçün vahid kompilasiya frontendini təmin edir.

Kotlin/Native kompilyatoru necə işləyir

Kompilasiya Kotlin/Native bir neçə transformasiya mərhələsindən keçir. Kotlin-dəki mənbə kodu əvvəlcə daxili təmsilə çevrilir, sonra optimallaşdırılır və maşın kodu yaratmaq üçün LLVM backendinə ötürülür. Son mərhələ — iş vaxtı kitabxanaları ilə birləşdirmə və icra olunan fayl və ya dinamik kitabxana yaratmaqdır.

Arxitektura üç əsas komponenti əhatə edir: frontend (təhlil və tip yoxlaması), IR generatoru (aralıq təmsilin qurulması) və LLVM backend (maşın kodunun yaradılması). Bu sxem C++ və Rust üçün Clang kompilyatorlarında istifadə olunan yanaşmaya bənzəyir.

kotlin
// Kotlin/Native kompilasiyası komanda sətri ilə
kotlinc-native hello.kt -o hello -opt

// iOS arm64 üçün Kotlin Multiplatform vasitəsilə quruluş
./gradlew :shared:linkDebugFrameworkIosArm64

Yaddaşı idarə etmək üçün Kotlin/Native dövri detektorla referans saymağa əsaslanan öz Memory Manager-indən istifadə edir. Kotlin 1.7.20-dən etibarən yeni yaddaş meneceri defolt olaraq işləyir və @ThreadLocal və ya @SharedImmutable annotasiyalarını tələb etmir. Zibil toplayıcı ipləri dayandırmadan işləyir ki, bu da iOS üçün kritik əhəmiyyət daşıyır, çünki sistem əsas ipin uzun müddət bloklanması zamanı tətbiqi məcburi şəkildə bağlaya bilər.

Kotlin/Native kompilasiya mərhələləri

Kompilasiya prosesi beş mərhələyə bölünür: təhlil (mənbə kodunun təhlili), semantik analiz (tip yoxlaması və adların həlli), IR yaradılması (aralıq təmsilin qurulması), optimallaşdırma (sadələşdirmə və ölü kodun silinməsi) və kod generasiyası LLVM vasitəsilə. Hər bir mərhələ müxtəlif modullar üçün paralel yerinə yetirilə bilər ki, bu da böyük layihələrin qurulmasını sürətləndirir.

MərhələMüddətNəticə
Təhlil~10% vaxtMənbə kodunun AST ağacı
Semantik analiz~20% vaxtTipləşdirilmiş AST
IR yaradılması~15% vaxtKotlin IR (Intermediate Representation)
Optimallaşdırma~25% vaxtOptimallaşdırılmış IR
LLVM kod generasiyası~30% vaxtMaşın kodu + icra olunan fayl

Kotlin/Native dəstəklənən platformalar

Kotlin/Native kateqoriyalara bölünmüş 13 hədəf platformanı dəstəkləyir. Mobil inkişaf üçün iOS (arm64), Android (arm32, arm64, x86_64)watchOS mövcuddur. Desktop platformalarına macOS (x64, arm64), Windows (mingw x64) və Linux (x64, arm64, arm32) daxildir. Server və quraşdırılmış inkişaf üçün WebAssembly və əməliyyat sistemi olmadan LLVM üzərində Kotlin/Native (standalone) mövcuddur. Hər bir platforma çıxışda ayrıca framework və ya kitabxana tələb edir.

Mobil inkişaf üçün platformalar

iOS üçün Kotlin/Native Xcode layihəsinə qoşula bilən universal framework (.framework) yaradır. Android NDK üçün JNI vasitəsilə çağırıla bilən nativ .so kitabxanaları yaradılır. watchOS platforması Kotlin 1.6.0-dan, tvOS isə 1.7.0 versiyasından dəstəklənir. Hər bir arxitektura ayrıca quruluş tələb edir, lakin Kotlin Multiplatform bu prosesi Gradle plugini vasitəsilə avtomatlaşdırır.

Desktop və server platformaları

macOSLinux Compose Multiplatform frameworkundan istifadə edərək Kotlin-də nativ desktop tətbiqlərinin hazırlanması üçün istifadə olunur. Windows (MinGW) platforması Kotlin 1.3.70-dən dəstəklənir və JVM quraşdırmadan Windows tətbiqləri yaratmağa imkan verir. Server inkişafı üçün Kotlin/Native JVM-in mövcud olmadığı mühitlərdə, məsələn, scratch və ya Alpine əsasında minimal təsvirə malik Docker konteynerlərində istifadə oluna bilər.

KateqoriyaPlatformaArxitektura
MobiliOSarm64, simulator (x64, arm64)
MobilAndroid NDKarm32, arm64, x86, x86_64
Geyilə bilənwatchOSarm64, simulator (x64)
DesktopmacOSx64, arm64
DesktopWindowsmingw x64
DesktopLinuxx64, arm64, arm32

iOS inkişafı üçün Kotlin/Native

iOS KMM kontekstində Kotlin/Native-in əsas hədəf platformasıdır. Kompilyator bütün ümumi kodu ehtiva edən iOS frameworki yaradır, sonra isə Xcode layihəsinə qoşulur. Framework həm statik, həm də dinamik birləşməni dəstəkləyir. Kotlin/Native Kotlin sinifləri və funksiyaları üçün Objective-C örtükləri yaradaraq Swift və Objective-C kodu ilə birbaşa inteqrasiyanı təmin edir.

iOS ilə inteqrasiya yaradılmış frameworku qoşmaq üçün Xcode konfiqurasiyasını tələb edir. Kotlin Multiplatform bu prosesi Xcode Build Phases-dən işə salınan embedAndSignAppleFrameworkForXcode tapşırığı ilə avtomatlaşdırır. Debug üçün Kotlin/Native iOS simulyatorunda tətbiq işə salındıqda ümumi modul kodunda breakpoint-ləri dəstəkləyir.

kotlin
// iOS frameworkuna kompilyasiya olunmuş Kotlin kodu
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 və Swift Interop

Interop iOS kodu ilə hər iki istiqamətdə işləyir. Kotlin/Native Kotlin sinifləri üçün Objective-C başlıqları yaradır ki, bunlar avtomatik olaraq Swift-dən əlçatan olur. Əks əlaqə Kotlin funksiyalarını müəyyən Objective-C adı ilə ixrac etmək üçün @ObjCName annotasiyası ilə təmin edilir. Kotlin kolleksiyaları avtomatik olaraq NSArray və NSDictionary-ə çevrilir, Kotlin korutinləri isə SKIE kitabxanası vasitəsilə Combine publisher-lərə bükülür. Kotlin-dən iOS framework-ləri ilə işləmək üçün cinterop — Objective-C başlıqlarına Kotlin bağlantıları yaratmaq aləti istifadə olunur.

Kod nümunələri: quraşdırma və kompilasiya

Kotlin/Native ilə işə başlamaq üçün Kotlin Multiplatform plaginini və hədəf platformaları göstərən build.gradle.kts konfiqurasiyası tələb olunur. iOS və Android dəstəyi ilə KMM layihəsi üçün minimal konfiqurasiyaya baxaq.

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

Quruluş konfiqurasiyasından sonra platformadan asılı kod əlavə edilə bilər. Kotlin/Native Kotlin örtükləri vasitəsilə iOS funksiyalarına giriş təmin edir. Məsələn, iOS-da cihaz UUID-ni əldə etmək Foundation-dan NSUUID çağırışını tələb edir.

kotlin
import platform.Foundation.NSUUID

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

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

iOS frameworkunun qurulması

iOS frameworkunu yaratmaq üçün linkDebugFrameworkIosArm64 və ya istehsal üçün linkReleaseFrameworkIosArm64 Gradle tapşırığı istifadə olunur. Quruluşdan sonra framework build/bin/iosArm64/debugFramework/ ünvanında yerləşir. Xcode layihəsinə qoşulma Pods Podfile vasitəsilə və ya frameworku General → Frameworks, Libraries and Embedded Content bölməsinə əlavə etməklə həyata keçirilir.

kotlin
// iOS arm64 üçün release frameworkun qurulması
./gradlew :shared:linkReleaseFrameworkIosArm64

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

// App Store üçün XCFramework yaradın
./gradlew :shared:assembleReleaseXCFramework

Kotlin/Native vs Kotlin/JVM: müqayisə

Kotlin/Native və Kotlin/JVM arxitektura, performans və tətbiq sahəsinə görə fərqlənir. Kotlin/JVM kodu JVM-də icra olunan bayt koduna çevirir ki, bu da nəhəng Java kitabxana ekosisteminə giriş imkanı verir, lakin quraşdırılmış virtual maşın tələb edir. Kotlin/Native xarici asılılıqlar olmadan icra olunan fayl yaradır, lakin daha məhdud kitabxana ekosisteminə malikdir.

Kotlin/Native-in işə düşmə müddəti daha yüksəkdir, çünki JVM-in yüklənməsi tələb olunmur. JetBrains benchmarklarına görə, Kotlin/Native-də Hello World tətbiqi 0.003 saniyədə işə düşür, Kotlin/JVM isə virtual maşının yüklənməsi üçün 0.5–1 saniyə tələb edir. Lakin Kotlin/Native-in icra olunan faylının ölçüsü daxil edilmiş iş vaxtı mühitinə görə 2–3 dəfə böyük ola bilər.

XüsusiyyətKotlin/NativeKotlin/JVM
Hədəf platformalariOS, macOS, Windows, Linux, WebAssembly, embeddedServerlər, Android, desktop (JVM)
Asılılıqlarİş vaxtı mühiti olmadan (müstəqil)JVM tələb olunur (JDK/JRE)
İşə düşmə vaxtı~3 ms~500–1000 ms
EkosistemMəhdud (Kotlin + Interop)Tam (Kotlin + Java + Android SDK)
Binar ölçüsü~1–5 MB (iş vaxtı ilə)~100–500 KB (JAR)

Kotlin/Native və Kotlin/JVM arasında seçim hədəf platformadan asılıdır. Layihə iOS-a yönəlmişsə və ya minimal resurs istehlakı tələb edirsə, Kotlin/Native yeganə seçimdir. Android inkişafı üçün Kotlin/JVM standart olaraq qalır, baxmayaraq ki, Kotlin/Native nativ performans tələb edən NDK komponentləri üçün istifadə olunur. Çoxplatformalı layihələrdə Kotlin Multiplatform hər iki yanaşmanı birləşdirir: ümumi kod iOS üçün Kotlin/Native və Android üçün Kotlin/JVM vasitəsilə kompilyasiya olunur.

Tez-tez verilən suallar

Kotlin/Native Kotlin/JVM-dən nə ilə fərqlənir?

Kotlin/Native kodu virtual maşın olmadan nativ maşın koduna kompilyasiya edir, Kotlin/JVM isə quraşdırılmış JVM tələb edən bayt koduna çevirir. Kotlin/Native iOS, quraşdırılmış sistemlər və WebAssembly üçün, Kotlin/JVM isə Android və serverlər üçün istifadə olunur.

Kotlin/Native KMM olmadan istifadə oluna bilərmi?

Bəli, Kotlin/Native konsol tətbiqləri, nativ plaginlər və ya istənilən dəstəklənən platforma üçün kitabxanalar yaratmaq üçün müstəqil kompilyator kimi istifadə edilə bilər. KMM yalnız çoxplatformalı kodun təşkilini asanlaşdırır.

Kotlin/Native iOS-da yaddaşı necə idarə edir?

Memory Manager Kotlin/Native avtomatik dövri detektorla referans saymaqdan istifadə edir. Kotlin 1.7.20-dən etibarən zibil toplayıcı @ThreadLocal annotasiyalarını tələb etmir və iOS əsas ipini dayandırmadan işləyir.

Kotlin/Native-dən hansı iOS kitabxanaları mövcuddur?

cinterop vasitəsilə bütün iOS frameworkləri mövcuddur: Foundation, UIKit, CoreData, CoreBluetooth, MapKit və yüzlərlə başqası. JetBrains Kotlin/Native tərkibində standart iOS kitabxanaları üçün hazır bağlantılar təqdim edir.

iOS-da Kotlin/Native kodunu necə debug etmək olar?

Debug üçün qoşulmuş Kotlin/Native frameworku ilə Xcode istifadə olunur. Kotlin kodundakı breakpoint-lər iOS simulyatorunda işə salındıqda işləyir. Cihaz üçün Debug quruluşu və Apple developer profili tələb olunur.

Nəticə

  • Kotlin/Native — Kotlin-i nativ koduna çevirən kompilyator, Kotlin Multiplatform Mobile-in təməli.
  • LLVM backend iOS, Android NDK, macOS və Windows daxil olmaqla 13 hədəf platforma üçün maşın kodu yaradılmasını təmin edir.
  • Memory Manager referans sayma ilə ipləri dayandırmadan işləyir ki, bu da mobil platformalar üçün kritikdir.
  • iOS framework avtomatik yaradılır və embedAndSignAppleFrameworkForXcode vasitəsilə Xcode layihəsinə qoşulur.
  • Objective-C və Swift Interop cinterop və @ObjCName vasitəsilə nativ iOS kodu ilə ikitərəfli inteqrasiyanı təmin edir.
  • Performans Kotlin/Native-in işə düşmə vaxtı JVM versiyasından əhəmiyyətli dərəcədə yüksəkdir — 0.5–1 saniyə əvəzinə 0.003 saniyə.
  • Kotlin/Native-i JVM-in mövcud olmadığı və ya arzuolunmaz olduğu iOS, quraşdırılmış sistemlər və WebAssembly üçün istifadə edin.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun