Kotlin/Native

من موسوعة حسوب

ما هي تقنية Kotlin/Native؟

تُستخدَم تقنية Kotlin/Native لترجمة شيفرات Kotlin إلى الصيغة الثنائيّة الأساسيّة (native binaries) والتي لا تتطلَّب آلةً افتراضيّة (virtual machine) لتشغيلها، وتشمل كلًا من المعالجات الخلفيّة (أو السند الخلفي [backend]) المعتمدة على تقنيات مكتبة LLVM للمترجِم (compiler) وكذلك تعريف الاستخدام الأساسيّ (native implementation) من مكتبة التشغيل (runtime) في Kotlin، وقد صُمّمت هذه التقنية للسماح بالترجمة في منصّات العمل التي تكون فيها الآلات الافتراضيّة غير متاحةٍ أو مرغوبةٍ (مثل أنظمة iOS والأهداف المدمجة [embedded targets])، أو عندما يحتاج المطوّر لكتابة برنامجٍ مستقلّ وبحجمٍ مقبولٍ دون أيّ زيادة في زمن التشغيل.

وتدعم تقنية Kotlin/Native توافقيّة التبديل (interoperability) مع الشيفرة الأساسيّة (native code) إذ تتوفَّر المكتبات المُوافقِةٍ لمكتبات منصّات العمل (platforms)، أمّا بالنسبة للمكتبات الأخرى فهناك أداة لتوليد مكتبةٍ تبديليّةٍ (introp library) من ترويسة ملف C لتؤمِّن الدعم الكامل لكلّ مزايا لغة البرمجة C، كما وتدعم توافقيّة التبديل (interoperability) مع شيفرات Objective/C في أنظمة macOS و iOS.

وما تزال Kotlin/Native قيد التطوير ومن السهل الحصول على بعض الإصدارات التجريبيّة منها، كما يتوفَّر دعم بيئة العمل (IDE) لها من خلال الإضافة (plugin) المتاحة عبر CLion.

المنصات المستهدفة (Target Platforms)

تدعم Kotlin/Native المنصّات الآتية:

  • Windows (بالإصدار x86_64 فقط)
  • Linux‏ (بالإصدارات x86_64 و arm32 و MIPS و MIPS little endian)
  • MacOS (بالإصدار x86_64 فقط)
  • iOS (بالإصدار arm64 فقط)
  • Android (كلًا من إصداريّ arm32 و arm64)
  • WebAssembly (بالإصدار wasm32 فقط)

بعض المشاريع النموذجيّة (Sample Projects)

تستعرِض عيّنات المشاريع الآتية عددًا من الإمكانات المتاحة في Kotlin/Native:

  • مركز التخزين Kotlin/Native GitHub: يحتوي عدّة مشاريعَ نموذجيّة.
  • تطبيق KotlinConf Spinner: لعبةٌ متعدِّدة المنصّات (cross-platform) لعدّة لاعبين مبنيّة بشكلٍ كاملٍ بتقنية Kotlin/Native وتتألف من:
    • سند خلفيّ (backend) بالاعتماد على مُحرِّك SQLite (راجع لغة SQL) لتخزين البيانات وواجهات REST/JSON.
    • عملاء (clients) لأنظمة iOS و Android باستخدام OpenGL.
    • واجهات أماميّة (frontend) وهي مستعرض يعتمد على WebAssembly لعرض نتائج اللعبة.
  • تطبيق KotlinConf: تطبيق iOS بواجهاتٍ معتمدةٍ على UIKit والتي تعرِض إمكانيّات توافقيّة التبديل (interoperability) إلى Objective/C في Kotlin/Native.

مصادر