Kotlin كلغة ربط: التكامل مع Java وPython وC وJS

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

Kotlin لا يعيش في فراغ: لماذا وكيف نتعامل مع اللغات الأخرى

\n\n

تخيل: أنت تكتب بلغة Kotlin — لغة حديثة وموجزة وآمنة. لكن مشروعك ليس صفحة بيضاء. في مكان ما في أعماق النظام، يوجد كود قديم بلغة Java، ويحتاج المحللون مكتبة بلغة Python، وللعمليات منخفضة المستوى تحتاج إلى C. أو تريد إعادة استخدام منطق الأعمال في الواجهة الأمامية، بكتابته بلغة Kotlin، لكن JavaScript هي المسيطرة هناك.

\n\n

الخبر السار: تكامل Kotlin مع اللغات الأخرى ليس ألمًا، بل قوة خارقة. تم تصميم Kotlin ليكون "لغة ربط". يمكنه العمل على JVM (بجانب Java)، والترجمة إلى كود أصلي (Kotlin/Native)، وحتى إلى JavaScript (Kotlin/JS).

\n\n

في هذه المقالة، سنشرح أربعة سيناريوهات رئيسية لـ تفاعل Kotlin مع اللغات الأخرى بأمثلة عملية. ستتعلم كيفية استدعاء Python من Kotlin، ودمج كود C عبر JNI، والعمل بسلاسة مع Java، وحتى استخدام Kotlin في الواجهة الأمامية. هيا بنا!

\n\n

1. Kotlin وJava: توأم الروح من السطور الأولى

\n\n

السيناريو الأكثر وضوحًا وبساطة هو تفاعل Kotlin Java. نظرًا لأن Kotlin يتم ترجمته إلى كود بايت JVM، فهو متوافق بنسبة 100% مع Java. يمكنك استدعاء أي كود Java من Kotlin والعكس صحيح — بدون جسور أو محولات أو ألم.

\n\n

كيفية استدعاء Java من Kotlin

\n

لنفترض أن لديك كلاس Java قديم للتعامل مع التواريخ:

\n\n
// Java: DateUtils.java\npublic class DateUtils {\n    public static String formatDate(long timestamp) {\n        return new java.text.SimpleDateFormat("yyyy-MM-dd").format(new java.util.Date(timestamp));\n    }\n}\n
\n\n

في Kotlin، تستخدمه كما لو كان أصليًا:

\n\n
// Kotlin\nfun main() {\n    val formatted = DateUtils.formatDate(System.currentTimeMillis())\n    println("اليوم: $formatted") // اليوم: 2025-04-03\n}\n
\n\n

كل شيء يعمل "مباشرة". لكن هناك فروق دقيقة: أمان null. Java لا تعرف عن الأنواع القابلة للصفر في Kotlin، لذلك عند استدعاء دوال Java، يعامل Kotlin القيم المُعادة كـ أنواع منصة (مثل String!). نصيحة: حدد النوع دائمًا بوضوح أو استخدم !! / ?. بحكمة.

\n\n

كيفية استدعاء Kotlin من Java

\n

التوافق العكسي موجود أيضًا. لنفترض أن لديك ملف Kotlin:

\n\n
// Kotlin: Calculator.kt\npackage utils\n\nobject Calculator {\n    @JvmStatic\n    fun sum(a: Int, b: Int): Int = a + b\n}\n
\n\n

من Java، نستدعيه هكذا:

\n\n
// Java\nimport utils.Calculator;\n\npublic class Main {\n    public static void main(String[] args) {\n        int result = Calculator.sum(5, 3);\n        System.out.println(result); // 8\n    }\n}\n
\n\n

المهم هو عدم نسيان التعليق @JvmStatic للدوال الثابتة و @JvmName لحل تعارضات الأسماء. تكامل Kotlin مع Java وثيق جدًا لدرجة أنه يمكنك خلط اللغتين في مشروع واحد — وهذا هو المعيار لتطوير Android والعديد من الخوادم الخلفية على Spring.

\n\n

2. Kotlin وPython: عالمين، JVM واحدة (وGraalVM)

\n\n

هذا أكثر إثارة للاهتمام. Kotlin Python ليس رابطًا تافهًا، لكنه ممكن. لا يوجد جسر أصلي مباشر، لكن يمكننا استخدام حلول JVM.

\n\n

الخيار A: GraalVM — تشغيل Python على JVM

\n

GraalVM هي آلة افتراضية يمكنها تشغيل عدة لغات (Java وKotlin وJavaScript وPython وRuby) في عملية واحدة. هذه أداة مثالية لـ تكامل Kotlin مع Python.

\n\n

قم بتثبيت GraalVM وأضف دعم Python:

\n\n
gu install python\n
\n\n

الآن في كود Kotlin، يمكن استدعاء دوال Python:

\n\n
// Kotlin (GraalVM Polyglot API)\nimport org.graalvm.polyglot.*\n\nfun main() {\n    val context = Context.create("python")\n    // تنفيذ                

المدونات

توصيات الكتب