Kotlin/Native — یہ کیا ہے، نیٹو کوڈ کمپائلر اور خصوصیات

مصنف: IT Sectr اشاعت: 2026-06-05 مطالعے کا وقت: 8 منٹ

Kotlin/Native ایک کمپائلر ہے جو Kotlin کوڈ کو براہ راست نیٹو مشین کوڈ میں ترجمہ کرتا ہے، بغیر ورچوئل مشین کے کام کرتا ہے۔ JVM ورژن کے برعکس، Kotlin/Native iOS، Android NDK، macOS، Windows، Linux اور WebAssembly کے لیے قابل عمل فائلیں تیار کرنے کے لیے LLVM بیک اینڈ استعمال کرتا ہے۔ یہ ٹیکنالوجی Kotlin Multiplatform کی بنیاد ہے اور ان پلیٹ فارمز پر مشترکہ کوڈ پر عمل درآمد کو قابل بناتی ہے جہاں JVM دستیاب نہیں ہے۔ JetBrains، 2025 کے مطابق، Kotlin/Native 13 ہدف پلیٹ فارمز کو سپورٹ کرتا ہے اور KMM منصوبوں میں 90% تک کوڈ کے دوبارہ استعمال کی اجازت دیتا ہے۔

اہم نکات

  • Kotlin/Native ایک کمپائلر ہے جو JVM استعمال کیے بغیر Kotlin کوڈ کو نیٹو مشین کوڈ میں ترجمہ کرتا ہے۔
  • LLVM کمپائلر کا بیک اینڈ ہے جو ہر ہدف پلیٹ فارم کے لیے مشین کوڈ تیار کرنے کا ذمہ دار ہے۔
  • KMM — Kotlin Multiplatform Mobile iOS آلات پر مشترکہ کوڈ پر عمل درآمد کے لیے Kotlin/Native استعمال کرتا ہے۔
  • Memory Manager ایک خودکار کوڑا کرکٹ جمع کرنے والا ہے جو تھریڈز کو روکے بغیر حوالہ گنتی پر مبنی ہے۔
  • Interop نیٹو Objective-C، Swift اور C لائبریریوں کے ساتھ دو طرفہ تعامل کا ایک طریقہ کار ہے۔

Kotlin/Native کیا ہے؟

Kotlin/Native JetBrains کے ذریعہ تیار کردہ Kotlin کوڈ کو نیٹو مشین کوڈ میں مرتب کرنے کی ایک ٹیکنالوجی ہے۔ Kotlin/JVM سے بنیادی فرق ورچوئل مشین کی ضرورت کا فقدان ہے — نتیجے میں قابل عمل فائل میں صرف مشین کوڈ اور کم سے کم رن ٹائم ہوتا ہے۔ یہ Kotlin ایپلیکیشنز کو ان آلات اور سسٹمز پر چلانے کی اجازت دیتا ہے جہاں JVM تعاون یافتہ نہیں ہے، بشمول iPhone، Apple Watch اور ایمبیڈڈ سسٹمز۔

Kotlin/Native کی تاریخ ایک منصوبے سے شروع ہوئی — ایک تجرباتی کمپائلر جو 2017 میں Kotlin کی مرکزی شاخ میں شامل کیا گیا تھا۔ 2019 میں، KotlinConf میں، ہدف پلیٹ فارم کے طور پر iOS کے تعاون کا اعلان کیا گیا، جو موبائل ڈویلپمنٹ کے لیے ایک اہم موڑ بن گیا۔ Kotlin 1.9.20 سے، Kotlin/Native کمپائلر استحکام تک پہنچ گیا ہے اور ڈیفالٹ طور پر Kotlin Multiplatform میں شامل ہے۔

Kotlin/Native کی اہم خصوصیت ایک مشترکہ درمیانی نمائندگی IR کا استعمال ہے، جو ہر پلیٹ فارم کے لیے الگ الگ مشین کوڈ میں مرتب ہوتی ہے۔ یہ تمام Kotlin بیک اینڈز: JVM، JS اور Native کے لیے ایک متحد کمپائلیشن فرنٹ اینڈ فراہم کرتا ہے۔

Kotlin/Native کمپائلر کیسے کام کرتا ہے

Kotlin/Native میں کمپائلیشن کئی تبدیلی کے مراحل سے گزرتا ہے۔ Kotlin سورس کوڈ پہلے اندرونی نمائندگی میں تبدیل ہوتا ہے، پھر بہتر بنایا جاتا ہے اور مشین کوڈ کی تیاری کے لیے LLVM بیک اینڈ کو بھیجا جاتا ہے۔ آخری مرحلہ رن ٹائم لائبریریوں سے منسلک ہونا اور ایک قابل عمل فائل یا متحرک لائبریری بنانا ہے۔

آرکیٹیکچر میں تین اہم اجزاء شامل ہیں: فرنٹ اینڈ (پارسنگ اور ٹائپ چیکنگ)، IR جنریٹر (درمیانی نمائندگی کی تعمیر) اور LLVM بیک اینڈ (مشین کوڈ کی تیاری)۔ یہ خاکہ C++ اور Rust کے لیے Clang کمپائلرز میں استعمال ہونے والے طریقہ کار سے ملتا جلتا ہے۔

kotlin
// کمانڈ لائن کے ذریعے Kotlin/Native کمپائلیشن
kotlinc-native hello.kt -o hello -opt

// Kotlin Multiplatform کے ذریعے iOS arm64 کے لیے تعمیر
./gradlew :shared:linkDebugFrameworkIosArm64

میموری مینجمنٹ کے لیے، Kotlin/Native اپنا Memory Manager استعمال کرتا ہے، جو سائیکل ڈیٹیکٹر کے ساتھ حوالہ گنتی پر مبنی ہے۔ Kotlin 1.7.20 سے، نیا میموری مینیجر ڈیفالٹ طور پر کام کرتا ہے اور @ThreadLocal یا @SharedImmutable تشریحات کی ضرورت نہیں ہے۔ کوڑا کرکٹ جمع کرنے والا تھریڈز کو روکے بغیر کام کرتا ہے، جو iOS کے لیے اہم ہے، جہاں سسٹم مرکزی تھریڈ کے طویل بلاک ہونے کے دوران ایپلیکیشن کو زبردستی ختم کر سکتا ہے۔

Kotlin/Native کمپائلیشن کے مراحل

کمپائلیشن کا عمل پانچ مراحل میں تقسیم ہے: پارسنگ (سورس کوڈ کا تجزیہ)، معنوی تجزیہ (ٹائپ چیکنگ اور نام کا حل)، IR جنریشن (درمیانی نمائندگی کی تعمیر)، بہتری (آسان بنانا اور مردہ کوڈ ہٹانا) اور LLVM کے ذریعے کوڈ جنریشن۔ ہر مرحلہ مختلف ماڈیولز کے لیے متوازی طور پر عمل میں لایا جا سکتا ہے، جو بڑے منصوبوں کی تعمیر کو تیز کرتا ہے۔

مرحلہمدتنتیجہ
پارسنگ~10% وقتسورس کوڈ کا AST درخت
معنوی تجزیہ~20% وقتٹائپ شدہ AST
IR جنریشن~15% وقتKotlin IR (Intermediate Representation)
بہتری~25% وقتبہتر کردہ IR
LLVM کوڈ جنریشن~30% وقتمشین کوڈ + قابل عمل فائل

معاون Kotlin/Native پلیٹ فارمز

Kotlin/Native 13 ہدف پلیٹ فارمز کو سپورٹ کرتا ہے، جو زمروں میں تقسیم ہیں۔ موبائل ڈویلپمنٹ کے لیے، iOS (arm64)، Android (arm32, arm64, x86_64) اور watchOS دستیاب ہیں۔ ڈیسک ٹاپ پلیٹ فارمز میں macOS (x64, arm64)، Windows (mingw x64) اور Linux (x64, arm64, arm32) شامل ہیں۔ سرور اور ایمبیڈڈ ڈویلپمنٹ کے لیے، WebAssembly اور OS کے بغیر LLVM پر Kotlin/Native (اسٹینڈالون) دستیاب ہیں۔ ہر پلیٹ فارم کو آؤٹ پٹ کے طور پر ایک علیحدہ فریم ورک یا لائبریری کی ضرورت ہوتی ہے۔

موبائل ڈویلپمنٹ کے لیے پلیٹ فارمز

iOS کے لیے، Kotlin/Native ایک یونیورسل فریم ورک (.framework) تیار کرتا ہے جسے Xcode پروجیکٹ سے منسلک کیا جا سکتا ہے۔ Android NDK کے لیے، نیٹو .so لائبریریاں بنائی جاتی ہیں جنہیں JNI کے ذریعے بلایا جا سکتا ہے۔ watchOS Kotlin 1.6.0 سے معاون ہے، اور tvOS ورژن 1.7.0 سے۔ ہر آرکیٹیکچر کو علیحدہ تعمیر کی ضرورت ہوتی ہے، لیکن Kotlin Multiplatform Gradle پلگ ان کے ذریعے اس عمل کو خودکار بناتا ہے۔

ڈیسک ٹاپ اور سرور پلیٹ فارمز

macOS اور Linux Compose Multiplatform فریم ورک کا استعمال کرتے ہوئے Kotlin میں نیٹو ڈیسک ٹاپ ایپلیکیشنز تیار کرنے کے لیے استعمال ہوتے ہیں۔ Windows (MinGW) Kotlin 1.3.70 سے معاون ہے اور JVM انسٹال کیے بغیر Windows ایپلیکیشنز بنانے کی اجازت دیتا ہے۔ سرور ڈویلپمنٹ کے لیے، Kotlin/Native ان ماحول میں استعمال کیا جا سکتا ہے جہاں JVM دستیاب نہیں ہے، جیسے scratch یا Alpine پر مبنی کم سے کم امیج والے Docker کنٹینرز۔

زمرہپلیٹ فارمآرکیٹیکچر
موبائلiOSarm64، سمیلیٹر (x64, arm64)
موبائلAndroid NDKarm32, arm64, x86, x86_64
پہننے کے قابلwatchOSarm64، سمیلیٹر (x64)
ڈیسک ٹاپmacOSx64, arm64
ڈیسک ٹاپWindowsmingw x64
ڈیسک ٹاپLinuxx64, arm64, arm32

iOS ڈویلپمنٹ کے لیے Kotlin/Native

iOS KMM کے تناظر میں Kotlin/Native کا بنیادی ہدف پلیٹ فارم ہے۔ کمپائلر ایک iOS فریم ورک بناتا ہے جس میں تمام مشترکہ کوڈ ہوتا ہے، جو پھر Xcode پروجیکٹ سے منسلک ہوتا ہے۔ فریم ورک جامد اور متحرک دونوں طرح کی لنکنگ کو سپورٹ کرتا ہے۔ Kotlin/Native Kotlin کلاسز اور فنکشنز کے لیے Objective-C ریپر تیار کرتا ہے، جو Swift اور Objective-C کوڈ کے ساتھ براہ راست انضمام فراہم کرتا ہے۔

iOS کے ساتھ انضمام کے لیے تیار کردہ فریم ورک کو جوڑنے کے لیے Xcode کو ترتیب دینے کی ضرورت ہوتی ہے۔ Kotlin Multiplatform embedAndSignAppleFrameworkForXcode ٹاسک کا استعمال کرتے ہوئے اس عمل کو خودکار بناتا ہے، جو Xcode Build Phases سے شروع کیا جاتا ہے۔ ڈیبگنگ کے لیے، Kotlin/Native iOS سمیلیٹر پر ایپلیکیشن چلاتے وقت مشترکہ ماڈیول کوڈ میں بریک پوائنٹس کو سپورٹ کرتا ہے۔

kotlin
// iOS فریم ورک میں مرتب کردہ Kotlin کوڈ
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 اور Swift Interop

iOS کوڈ کے ساتھ Interop دونوں سمتوں میں کام کرتا ہے۔ Kotlin/Native Kotlin کلاسز کے لیے Objective-C ہیڈر تیار کرتا ہے، جو خود بخود Swift سے قابل رسائی ہو جاتے ہیں۔ معکوس مواصلت مخصوص Objective-C نام کے تحت Kotlin فنکشنز برآمد کرنے کے لیے @ObjCName تشریح کا استعمال کرتے ہوئے فراہم کی جاتی ہے۔ Kotlin کلیکشنز خود بخود NSArray اور NSDictionary میں تبدیل ہو جاتی ہیں، اور Kotlin کوروٹینز SKIE لائبریری کے ذریعے Combine پبلشرز میں لپیٹ دی جاتی ہیں۔ Kotlin سے iOS فریم ورکس کے ساتھ کام کرنے کے لیے، cinterop استعمال کیا جاتا ہے — Objective-C ہیڈرز کے لیے Kotlin بائنڈنگز تیار کرنے کا ایک ٹول۔

کوڈ مثالیں: سیٹ اپ اور کمپائلیشن

Kotlin/Native کے ساتھ شروع کرنے کے لیے، Kotlin Multiplatform پلگ ان اور ہدف پلیٹ فارمز کے ساتھ build.gradle.kts کو ترتیب دینا ضروری ہے۔ آئیے iOS اور Android سپورٹ کے ساتھ KMM پروجیکٹ کے لیے کم سے کم ترتیب دیکھتے ہیں۔

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

تعمیر کی ترتیب کے بعد، پلیٹ فارم مخصوص کوڈ شامل کیا جا سکتا ہے۔ Kotlin/Native Kotlin ریپرز کے ذریعے iOS فنکشنز تک رسائی فراہم کرتا ہے۔ مثال کے طور پر، iOS پر ڈیوائس UUID حاصل کرنے کے لیے Foundation سے NSUUID کو کال کرنے کی ضرورت ہے۔

kotlin
import platform.Foundation.NSUUID

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

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

iOS فریم ورک کی تعمیر

iOS فریم ورک تیار کرنے کے لیے، Gradle ٹاسک linkDebugFrameworkIosArm64 یا پروڈکشن کے لیے linkReleaseFrameworkIosArm64 استعمال کیا جاتا ہے۔ تعمیر کے بعد، فریم ورک build/bin/iosArm64/debugFramework/ میں واقع ہوتا ہے۔ Xcode پروجیکٹ سے کنکشن Pods Podfile کے ذریعے یا General → Frameworks، Libraries and Embedded Content میں فریم ورک شامل کرکے کیا جاتا ہے۔

kotlin
// iOS arm64 کے لیے ریلیز فریم ورک بنائیں
./gradlew :shared:linkReleaseFrameworkIosArm64

// یونیورسل فریم ورک x86_64 + arm64 بنائیں
./gradlew :shared:linkReleaseFrameworkIosX64 \
    :shared:linkReleaseFrameworkIosArm64

// App Store کے لیے XCFramework بنائیں
./gradlew :shared:assembleReleaseXCFramework

Kotlin/Native بمقابلہ Kotlin/JVM: موازنہ

Kotlin/Native اور Kotlin/JVM آرکیٹیکچر، کارکردگی اور اطلاق کے دائرہ کار میں مختلف ہیں۔ Kotlin/JVM کوڈ کو JVM پر عمل میں لائے جانے والے بائٹ کوڈ میں مرتب کرتا ہے، جو Java لائبریریوں کے وسیع ماحولیاتی نظام تک رسائی فراہم کرتا ہے، لیکن انسٹال شدہ ورچوئل مشین کی ضرورت ہوتی ہے۔ Kotlin/Native بیرونی انحصار کے بغیر ایک قابل عمل فائل تیار کرتا ہے، لیکن زیادہ محدود لائبریری ماحولیاتی نظام کے ساتھ۔

شروع ہونے کے وقت کی کارکردگی Kotlin/Native میں زیادہ ہے کیونکہ JVM لوڈنگ کی ضرورت نہیں ہے۔ JetBrains بینچ مارکس کے مطابق، Kotlin/Native پر Hello World ایپلیکیشن 0.003 سیکنڈ میں شروع ہوتی ہے، جبکہ Kotlin/JVM کو ورچوئل مشین لوڈ کرنے میں 0.5–1 سیکنڈ درکار ہوتا ہے۔ تاہم، شامل رن ٹائم کی وجہ سے Kotlin/Native کی قابل عمل فائل کا سائز 2–3 گنا بڑا ہو سکتا ہے۔

خصوصیتKotlin/NativeKotlin/JVM
ہدف پلیٹ فارمزiOS, macOS, Windows, Linux, WebAssembly, ایمبیڈڈسرورز، Android، ڈیسک ٹاپ (JVM)
انحصاریاںکوئی رن ٹائم نہیں (خود کفیل)JVM درکار (JDK/JRE)
شروع ہونے کا وقت~3 ملی سیکنڈ~500–1000 ملی سیکنڈ
ماحولیاتی نظاممحدود (Kotlin + Interop)مکمل (Kotlin + Java + Android SDK)
بائنری سائز~1–5 MB (رن ٹائم سمیت)~100–500 KB (JAR)

Kotlin/Native اور Kotlin/JVM کے درمیان انتخاب کا انحصار ہدف پلیٹ فارم پر ہے۔ اگر پروجیکٹ iOS کو ہدف بناتا ہے یا کم سے کم وسائل کی کھپت کی ضرورت ہے، تو Kotlin/Native ہی واحد آپشن ہے۔ Android ڈویلپمنٹ کے لیے، Kotlin/JVM معیاری رہتا ہے، اگرچہ Kotlin/Native NDK اجزاء کے لیے استعمال ہوتا ہے جہاں نیٹو کارکردگی کی ضرورت ہوتی ہے۔ ملٹی پلیٹ فارم پروجیکٹس میں، Kotlin Multiplatform دونوں طریقوں کو یکجا کرتا ہے: مشترکہ کوڈ iOS کے لیے Kotlin/Native اور Android کے لیے Kotlin/JVM کے ذریعے مرتب ہوتا ہے۔

اکثر پوچھے گئے سوالات

Kotlin/Native Kotlin/JVM سے کیسے مختلف ہے؟

Kotlin/Native کوڈ کو ورچوئل مشین کے بغیر نیٹو مشین کوڈ میں مرتب کرتا ہے، جبکہ Kotlin/JVM بائٹ کوڈ میں مرتب کرتا ہے جس کے لیے انسٹال شدہ JVM درکار ہے۔ Kotlin/Native iOS، ایمبیڈڈ سسٹمز اور WebAssembly کے لیے استعمال ہوتا ہے، جبکہ Kotlin/JVM Android اور سرورز کے لیے استعمال ہوتا ہے۔

کیا KMM کے بغیر Kotlin/Native استعمال کیا جا سکتا ہے؟

ہاں، Kotlin/Native کسی بھی معاون پلیٹ فارم کے لیے کنسول ایپلیکیشنز، نیٹو پلگ انز یا لائبریریاں بنانے کے لیے ایک اسٹینڈالون کمپائلر کے طور پر استعمال کیا جا سکتا ہے۔ KMM صرف ملٹی پلیٹ فارم کوڈ کی تنظیم کو آسان بناتا ہے۔

Kotlin/Native iOS پر میموری کو کیسے سنبھالتا ہے؟

Kotlin/Native کا Memory Manager خودکار سائیکل ڈیٹیکٹر کے ساتھ حوالہ گنتی استعمال کرتا ہے۔ Kotlin 1.7.20 سے، کوڑا کرکٹ جمع کرنے والے کو @ThreadLocal تشریحات کی ضرورت نہیں ہے اور یہ iOS کے مرکزی تھریڈ کو روکے بغیر کام کرتا ہے۔

Kotlin/Native سے کون سی iOS لائبریریاں قابل رسائی ہیں؟

cinterop کے ذریعے، تمام iOS فریم ورکس قابل رسائی ہیں: Foundation، UIKit، CoreData، CoreBluetooth، MapKit اور سینکڑوں دیگر۔ JetBrains Kotlin/Native کے حصے کے طور پر معیاری iOS لائبریریوں کے لیے تیار بائنڈنگز فراہم کرتا ہے۔

iOS پر Kotlin/Native کوڈ کو کیسے ڈیبگ کریں؟

ڈیبگنگ منسلک Kotlin/Native فریم ورک کے ساتھ Xcode کا استعمال کرتے ہوئے کی جاتی ہے۔ Kotlin کوڈ میں بریک پوائنٹس iOS سمیلیٹر پر چلاتے وقت کام کرتے ہیں۔ ڈیوائس کے لیے، ڈیبگ بلڈ اور Apple ڈویلپر پروفائل درکار ہے۔

خلاصہ

  • Kotlin/Native Kotlin سے نیٹو کوڈ کمپائلر ہے، جو Kotlin Multiplatform Mobile کی بنیاد ہے۔
  • LLVM بیک اینڈ iOS، Android NDK، macOS اور Windows سمیت 13 ہدف پلیٹ فارمز کے لیے مشین کوڈ کی تیاری فراہم کرتا ہے۔
  • Memory Manager حوالہ گنتی کے ساتھ تھریڈز کو روکے بغیر کام کرتا ہے، جو موبائل پلیٹ فارمز کے لیے اہم ہے۔
  • iOS فریم ورک خود بخود تیار ہوتا ہے اور embedAndSignAppleFrameworkForXcode کے ذریعے Xcode پروجیکٹ سے منسلک ہوتا ہے۔
  • Objective-C اور Swift Interop cinterop اور @ObjCName کے ذریعے نیٹو iOS کوڈ کے ساتھ دو طرفہ انضمام فراہم کرتا ہے۔
  • شروع ہونے کی کارکردگی Kotlin/Native کی JVM ورژن سے نمایاں طور پر زیادہ ہے — 0.5–1 سیکنڈ کے بجائے 0.003 سیکنڈ تک۔
  • iOS، ایمبیڈڈ سسٹمز اور WebAssembly کے لیے Kotlin/Native استعمال کریں جہاں JVM دستیاب نہیں ہے یا ناپسندیدہ ہے۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں