Java أم Kotlin

في منتصف السنة الحالية، أعلنت شركة غوغل المطورة لنظام التشغيل أندرويد عن دعم لغة كوتلن لبرمجة تطبيقات أندرويد على الأجهزة المحمولة، لتضاف بذلك Kotlin إلى لغة البرمجة جافا التي كانت دائما الخيار الوحيد أمام مطوري أندرويد.

منذ ذلك الحين بات الجميع، وبخاصة المبتدئين، يسألون سؤالا واحدا: هل علي أن أتعلم جافا أم كوتلن ؟ ما هو الخيار الأفضل لمن يريد الدخول لمجال تطوير تطبيقات أندرويد ؟

الجواب على هذا السؤال ليس بالضرورة بسيطا أو سهلا، ولكن من خلال هذا المقال سأساعدكم على اتخاذ هذا القرار عبر إجراء مقارنة بسيطة بين اللغتين، وإعطائكم رأيي المتواضع في هذه المسألة بعد ذلك.

إقرأ أيضا: 5 أدوات أساسية لمطوري PHP

ميلاد لغة البرمجة Kotlin

تم تطوير لغة البرمجة Kotlin من طرف شركة Jetbrains المعروفة بتقديم حلول متقدمة للمطورين من شتى الإختصاصات (بيئات عمل متكاملة مثل: IntellijIDEA ،PhpStorm ،PyCharm ). هذه الشركة كانت في ذلك الوقت تعتمد على لغة البرمجة جافا في أعمالها، وقالوا أنهم طوروا كوتلن لأسباب تتعلق أولا وأخيرا برفع بمستوى الإنتاجية لفريق العمل.

إذن تم إنشاء لغة البرمجة كوتلن لتكون أفضل من جافا، ولكن لم يكن العاملون في شركة Jetbrains يريدون إعادة كتابة مشاريعهم من الصفر بلغة برمجية جديدة، لهذا السبب جعلوا من Kotlin لغة برمجة قابلة للتشغيل في بيئة جافا JVM بنسبة 100%.
تشتغل أكواد Kotlin في بيئة JVM بدون مشاكل فهي في النهاية تتحول بعد عملية Compiling إلى أكواد Java bytecode، هذه يعني كذلك أنه يمكننا استخدام Kotlin في مشاريع جافا قائمة دون إعادة إنشاء هذه المشاريع من الصفر.

نعم يمكن الخلط بين لغتي كوتلن و جافا في مشروع واحد 🙂

لنفترض أنه لدينا كلاس جافا، مثلا كلاس خاص بالزبناء :

يمكننا استخدام هذا الكلاس في ملف Kotlin بدون تعقيدات :

هذا رائع أليس كذلك ؟ 🙂 بهذه الطريقة استطاع مطورو Jetbrains استكمال أعمالهم في مشاريع الشركة بواسطة لغتهم الجديدة دون الحاجة لبدء عملية التكويد من الصفر.

مقارنة بين Java و Kotlin

هذا جميل ولكننا لم نجب بعد عن سؤال الإنتاجية وأفضلية كوتلن في هذه الناحية من وجهة نظر الشركة المطورة.

سأحاول تبسيط الموضوع لكي تصلكم الفكرة جيدا عبر مثال يوضح ماذا يمكن للغة Kotlin أن توفر علينا بالمقارنة مع لغة البرمجة Java.

مثال لإنشاء كلاس في جافا وكوتلن

لنأخد كلاس الزبون Customer Class الذي رأينا أعلاه، سنضيف إليه بعض الخصائص كالإيميل وخاصية أخرى نسميها loyal وتحدد ما إذا كان الزبون وفيا لنا أم أنه زبون عادي، مثلا إذا قام ب 10 عمليات شراء سنعتبر بأنه زبون وفي ونقدم له عددا من العروض الخاصة بالزبناء الأوفياء لعلامتنا التجارية.

الخاصية loyal سنعتبرها اختيارية (Optional) ونعطيها false كقيمة افتراضية.

وهذا هو شكل نفس الكلاس في Kotlin :

40 سطرا في جافا مقابل سطر واحد في كوتلن! نعم لن تجد أبسط من ذلك.

هذا ليس كل شيء، هناك المزيد!

في جافا (وكذلك في كوتلن) عندما نحاول طباعة كائن Object فإننا عوض رؤية خصائصه نرى مرجعه أو ما يعرف ب Object reference.

وإذا حاولت مقارنة هذين الزبونين فإنك تقارن مرجعيهما في الذاكرة Object Reference وبطبيعة الحال القيمة هنا ستكون false

لتعديل هذا السلوك فإننا نقوم عادة بعمل Override على الوظيفة equals في جافا، بهذه الطريقة :

ولطباعة شيء أكثر أهمية من مراجع الكائنات فإننا نقوم بنفس العملية على الوظيفة toString كالتالي :

ولكن هنا من جديد، تبدو Kotlin أكثر ذكاءً ومرونة من Java، كل ما علينا فعله للحصول على نفس النتيجة هو إضافة الكلمة data قبل class على هذا النحو :

وهذه هي النتيجة :

وصلنا لهذه النتيجة باستخدام قرابة 60 سطرا من أكواد جافا، بينما بقينا في كوتلن مع سطر واحد فقط. هذا ما قصده العاملون في Jetbrains بقولهم أن المسألة برمتها تتعلق بزيادة وتحسين إنتاجية المطورين.

الخلاصة

هذه ليست الميزات الوحيدة الموجودة في كوتلن، فهذه اللغة جاءت بعدد كبير جدا من التحسينات التي لا يمكن شرحها كلها في موضوع واحد. مع هذا كله لا يمكن نكران بأن معظم المصادر والدروس الموجودة على الإنترنت مكتوبة بالجافا، وبالتالي قد لا يكون سهلا على المبتدئين الإنطلاق مع كوتلن في تطوير تطبيقات الأندرويد لأنهم لن يجدوا الكثير من المصادر ليتعلموا منها أساسيات وخاصيات البرمجيات الموجهة لهذا النظام.

من وجهة نظري، أنصح المبتدئين حاليا بتعلم قليل من الجافا، ليس تعلم كل الجافا وإتقانها، فقط تعلم ما يجعلهم يفهمون الأمثلة والدروس التعليمية التي يجدونها سواء على المدونات المتخصصة والمنتشرة بكثرة أو على التوثيق الرسمي من غوغل الخاص بأندرويد. بعد ذلك يمكنهم الإلتحاق ب Kotlin إذا كانوا مقتنعين بمبرر الإنتاجية والسرعة في التكويد اللذان توفرهما.


سأكون سعيدا للغاية بمشاركة تجاربكم مع هاتين اللغتين في التعليقات أسفله، فهذا الموضوع مهم جدا ويستحوذ على اهتمام عدد كبير جدا من المطورين في الوطن العربي.


المراجع :

2 تعليقات

  1. شكرا جدا يا عيسى…اول مرة ازور مدونتك ..جميلة جدا
    الموضوع قيم جدا انا مبتدئ فى البرمجة و نفسي ادخل مجال تطوير تطبيقات الاندرويد و تفاجأت بلغتين فى نفس الوقت….انا فعلا هاعمل زي ما كتبت و هابدأ فى الجافا لحد ما اوصل لمستوي متوسط فقط او الاساسيات الكاملة و بعدها هادخل فى Kotlin

    • شكرا صديقي إسلام،
      يسرني أن المحتوى المقدم قد نال إعجابك،
      بالتوفيق لك في مسيرتك مع تطوير تطبيقات الأندرويد،
      رحلة الألف ميل تبدأ بخطوة 🙂

ترك الرد

Please enter your comment!
Please enter your name here