استبدال Java بـC‎#‎ في كود نظام Android « مغامرات برمجية

استبدال Java بـC‎#‎ في كود نظام Android

نّشر في: 2012/05/03
تصنيفات: أخبار تقنية
وسوم: , , , ,
تعليقات: 5 تعليق

Android in C#

قبل بضعة أيام أعلنت شركة Xamarin أنها نجحت في استبدال محرك Dalvik (الذي يعمل بـJava) بمحرك Mono (الذي يعمل بـC‎#‎) في نظام تشغيل 4.0 Android للأجهزة المحمولة. الخبر من مدونة الشركة.

Xamarin هم الفريق وراء Mono، النسخة المتعددة المنصات من Microsoft .NET. أحد منتجاتهم هي Mono for Android الذي يسمح لك ببرمجة تطبيقات الـAndroid باستخدام الدوت نت (هناك نسخة لأجهزة iOS أيضاً). وقاموا بهذا الاستبدال كتجربة لاكتشاف فروقات الأداء بين Mono و Dalvik. والنتائج مثيرة جداً للاهتمام!

Dalvik هو الـVM الخاص بـAndroid. أي أنه الجزء من نظام التشغيل الذي يستقبل كود الـJava ثم يشغله على الـLinux Kernel. طبعاً هذا ما يفعله Mono مع لغة C‎#‎، لذا استبدال Dalvik بـMono كان خطوة منطقية لفريق Xamarin. كود نظام Android (بالإضافة لكود Linux) يحوي العديد من الأجزاء المبرمجة بـJava. وهذه بالتالي يجب ترجمتها إلى C‎#‎.

للقيام بهذه الخطوة الأخيرة استخدم فريق Xamarin برنامج يدعى Sharpen للتحويل الآلي من Java إلى C‎#‎. خلال تجربتهم هذه قام الفريق بعدة تعديلات في كود Sharpen.

النتيجة كان نظام Android 4.0 تم استبدال Java وDalvik فيه بشكل كامل بـC‎#‎ وMono. هذا المشروع تم تسميته Xobot وتم إطلاق كوده المصدري (باللإضافة لكود Sharpen المعدل) هنا في GitHub. بعدها قام الفريق بمجموعة benchmarks لفحص أي تغيير في الأداء. سأترك الشكل البياني التالي يتحدث (الأزرق Mono والأحمر Dalvik):

فرق هائل!

ولكن قبل أن يتحمس محبوا الدوت نت لإرسال هذه النتائج لأعدائهم محبوا الـJava، تذكروا أن هذه مقارنة بين Mono و Dalvik. وليس مقارنة بين Mono (أو Microsoft .NET) والـJVM، الذي هو الـVM الذي يستخدمه مبرمجوا الـJava خارج نطاق Android.

الكثير منا يعرف أن هناك مشاكل قانونية بين Google وOracle (الشركة المسؤولة عن Java هذه الأيام) بسبب طريقة استخدام الأولى لـJava. بعض محبي الدوت نت قد يرون تزاوجاً بين Mono وAndroid كحل لهذه المشاكل. ولكن طبعاً الأمور ليست بتلك البساطة. قانونياً، قد تكون Microsoft أكثر تساهلاً من Oracle، ولكن هذا غير مضمون. بعيداً عن العراقيل القانونية ومتاهات قضايا براءات الاختراع، هناك مشكلة أكبر. التحويل من Java إلى C‎#‎ يعني أن جميع التطبيقات الغير Native والتي تعمل على Java (وهي الغالبية العظمى بمراحل) يجب إعادة برمجتها.

شركة Xamarin نقسها تدرك هذا. لهذا نصت أن هذا المشروع هو مشروع بحثي بحت، ولن ينتهي بنسخة تجارية من Xobot. ولكن الدروس التي تعلموها من هذه التجربة ستساعدهم في تطوير Mono على الـAndroid وتحسين أدائه. بالتحديد سردوا النقاط التالية التي سوف يركزون عليها:

  1. التواصل مباشرة مع Skia (مكتبة الرسوميات المستخدمة في Android) بدلاً من المرور بـJava، كما يحدث الآن، لتحسين الأداء.
  2. نسخة محسنة من Sharpen.
  3. استبدال بعض أكواد Java في Mono بأكواد C‎#‎ في الأماكن التي وجدوا فيها تحسن في الأداء.

مشروع رائع ومثير للاهتمام!

Post to Twitter

5 تعليق - أضف تعليق
  1. ابو ماجد قال:

    طيب لو سمحت

    وش صار على هذا المشروع..والى اين وصل حتى هذه اللحظه؟

    …..!!

  2. abdulkader قال:

    معلومات رائعة يعطيكم العافية ولكن أنا أعتقد أن الأساس يكون أفضل
    مع أنني من محبي دوت نت

  3. مبرمج قال:

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

  4. السلام عليكم ورحمة الله وبركاته

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

  5. I was recommended this web site by way of my cousin. I am not positive whether
    or not this submit is written through him as nobody else understand such specified about
    my difficulty. You are amazing! Thanks!

أضف تعليق

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

*

يمكنك استخدام أكواد HTML والخصائص التالية: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


مرحباً , تاريخ اليوم هو الثلاثاء, 2017/02/21